Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(431)

Side by Side Diff: chrome/browser/ui/gtk/content_setting_bubble_gtk.cc

Issue 23463013: [gtk] Save password bubble (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/gtk/content_setting_bubble_gtk.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/gtk/content_setting_bubble_gtk.h" 5 #include "chrome/browser/ui/gtk/content_setting_bubble_gtk.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 menu_width = std::min(kMaxMediaMenuButtonWidth, menu_width); 285 menu_width = std::min(kMaxMediaMenuButtonWidth, menu_width);
286 286
287 // Set all the menu buttons to the width we calculated above. 287 // Set all the menu buttons to the width we calculated above.
288 for (GtkMediaMenuMap::const_iterator i = media_menus_.begin(); 288 for (GtkMediaMenuMap::const_iterator i = media_menus_.begin();
289 i != media_menus_.end(); ++i) 289 i != media_menus_.end(); ++i)
290 gtk_widget_set_size_request(i->first, menu_width, -1); 290 gtk_widget_set_size_request(i->first, menu_width, -1);
291 291
292 gtk_box_pack_start(GTK_BOX(bubble_content), table, FALSE, FALSE, 0); 292 gtk_box_pack_start(GTK_BOX(bubble_content), table, FALSE, FALSE, 0);
293 } 293 }
294 294
295 if (content_setting_bubble_model_->content_type() ==
296 CONTENT_SETTINGS_TYPE_SAVE_PASSWORD) {
297 GtkWidget* button_content = gtk_hbox_new(FALSE, 0);
298 GtkWidget* never_button =
299 gtk_button_new_with_label(l10n_util::GetStringUTF8(
300 IDS_PASSWORD_MANAGER_BLACKLIST_BUTTON).c_str());
301 g_signal_connect(never_button, "clicked",
302 G_CALLBACK(OnCancelButtonClickedThunk), this);
303 GtkWidget* save_button = gtk_button_new_with_label(
304 l10n_util::GetStringUTF8(IDS_PASSWORD_MANAGER_SAVE_BUTTON).c_str());
305 g_signal_connect(save_button, "clicked",
306 G_CALLBACK(OnSaveButtonClickedThunk), this);
307
308 gtk_box_pack_start(GTK_BOX(button_content), never_button, FALSE, FALSE, 4);
309 gtk_box_pack_start(GTK_BOX(button_content), save_button, FALSE, FALSE, 0);
310
311 gtk_box_pack_start(GTK_BOX(bubble_content), button_content, FALSE, FALSE,
312 0);
313 gtk_widget_grab_focus(save_button);
314 }
315
295 for (std::vector<ContentSettingBubbleModel::DomainList>::const_iterator i = 316 for (std::vector<ContentSettingBubbleModel::DomainList>::const_iterator i =
296 content.domain_lists.begin(); 317 content.domain_lists.begin();
297 i != content.domain_lists.end(); ++i) { 318 i != content.domain_lists.end(); ++i) {
298 // Put each list into its own vbox to allow spacing between lists. 319 // Put each list into its own vbox to allow spacing between lists.
299 GtkWidget* list_content = gtk_vbox_new(FALSE, ui::kControlSpacing); 320 GtkWidget* list_content = gtk_vbox_new(FALSE, ui::kControlSpacing);
300 321
301 GtkWidget* label = theme_provider->BuildLabel( 322 GtkWidget* label = theme_provider->BuildLabel(
302 BuildElidedText(i->title).c_str(), ui::kGdkBlack); 323 BuildElidedText(i->title).c_str(), ui::kGdkBlack);
303 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); 324 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
304 GtkWidget* label_box = gtk_hbox_new(FALSE, 0); 325 GtkWidget* label_box = gtk_hbox_new(FALSE, 0);
(...skipping 30 matching lines...) Expand all
335 356
336 gtk_box_pack_start(GTK_BOX(bubble_content), gtk_hseparator_new(), 357 gtk_box_pack_start(GTK_BOX(bubble_content), gtk_hseparator_new(),
337 FALSE, FALSE, 0); 358 FALSE, FALSE, 0);
338 359
339 GtkWidget* bottom_box = gtk_hbox_new(FALSE, 0); 360 GtkWidget* bottom_box = gtk_hbox_new(FALSE, 0);
340 361
341 GtkWidget* manage_link = 362 GtkWidget* manage_link =
342 theme_provider->BuildChromeLinkButton(content.manage_link.c_str()); 363 theme_provider->BuildChromeLinkButton(content.manage_link.c_str());
343 g_signal_connect(manage_link, "clicked", G_CALLBACK(OnManageLinkClickedThunk), 364 g_signal_connect(manage_link, "clicked", G_CALLBACK(OnManageLinkClickedThunk),
344 this); 365 this);
345 gtk_box_pack_start(GTK_BOX(bottom_box), manage_link, FALSE, FALSE, 0); 366 if (content_setting_bubble_model_->content_type() ==
367 CONTENT_SETTINGS_TYPE_SAVE_PASSWORD) {
368 gtk_box_pack_end(GTK_BOX(bottom_box), manage_link, FALSE, FALSE, 0);
Evan Stade 2013/09/05 00:52:55 why is this not shared with the nearly identical l
npentrel 2013/09/05 08:00:16 Yes there is a difference: end will put it at the
Evan Stade 2013/09/05 16:43:00 not sure why we'd move the link to the right when
369 } else {
370 gtk_box_pack_start(GTK_BOX(bottom_box), manage_link, FALSE, FALSE, 0);
346 371
347 GtkWidget* button = gtk_button_new_with_label( 372 GtkWidget* button =
348 l10n_util::GetStringUTF8(IDS_DONE).c_str()); 373 gtk_button_new_with_label(l10n_util::GetStringUTF8(IDS_DONE).c_str());
349 g_signal_connect(button, "clicked", G_CALLBACK(OnCloseButtonClickedThunk), 374 g_signal_connect(button, "clicked", G_CALLBACK(OnCloseButtonClickedThunk),
350 this); 375 this);
351 gtk_box_pack_end(GTK_BOX(bottom_box), button, FALSE, FALSE, 0); 376 gtk_box_pack_end(GTK_BOX(bottom_box), button, FALSE, FALSE, 0);
377 gtk_widget_grab_focus(button);
378 }
352 gtk_box_pack_start(GTK_BOX(bubble_content), bottom_box, FALSE, FALSE, 0); 379 gtk_box_pack_start(GTK_BOX(bubble_content), bottom_box, FALSE, FALSE, 0);
353 gtk_widget_grab_focus(bottom_box); 380 gtk_widget_grab_focus(bottom_box);
354 gtk_widget_grab_focus(button);
355 381
356 bubble_ = BubbleGtk::Show(anchor_, 382 bubble_ = BubbleGtk::Show(anchor_,
357 NULL, 383 NULL,
358 bubble_content, 384 bubble_content,
359 BubbleGtk::ANCHOR_TOP_RIGHT, 385 BubbleGtk::ANCHOR_TOP_RIGHT,
360 BubbleGtk::MATCH_SYSTEM_THEME | 386 BubbleGtk::MATCH_SYSTEM_THEME |
361 BubbleGtk::POPUP_WINDOW | 387 BubbleGtk::POPUP_WINDOW |
362 BubbleGtk::GRAB_INPUT, 388 BubbleGtk::GRAB_INPUT,
363 theme_provider, 389 theme_provider,
364 this); 390 this);
(...skipping 25 matching lines...) Expand all
390 i != radio_group_gtk_.end(); ++i) { 416 i != radio_group_gtk_.end(); ++i) {
391 if (widget == *i) { 417 if (widget == *i) {
392 content_setting_bubble_model_->OnRadioClicked( 418 content_setting_bubble_model_->OnRadioClicked(
393 i - radio_group_gtk_.begin()); 419 i - radio_group_gtk_.begin());
394 return; 420 return;
395 } 421 }
396 } 422 }
397 NOTREACHED() << "unknown radio toggled"; 423 NOTREACHED() << "unknown radio toggled";
398 } 424 }
399 425
400 void ContentSettingBubbleGtk::OnCloseButtonClicked(GtkWidget *button) { 426 void ContentSettingBubbleGtk::OnCloseButtonClicked(GtkWidget* button) {
401 content_setting_bubble_model_->OnDoneClicked(); 427 content_setting_bubble_model_->OnDoneClicked();
402 Close(); 428 Close();
403 } 429 }
404 430
431 void ContentSettingBubbleGtk::OnSaveButtonClicked(GtkWidget* button) {
432 content_setting_bubble_model_->OnSaveClicked();
433 Close();
434 }
435
436 void ContentSettingBubbleGtk::OnCancelButtonClicked(GtkWidget* button) {
437 content_setting_bubble_model_->OnCancelClicked();
438 Close();
439 }
440
405 void ContentSettingBubbleGtk::OnCustomLinkClicked(GtkWidget* button) { 441 void ContentSettingBubbleGtk::OnCustomLinkClicked(GtkWidget* button) {
406 content_setting_bubble_model_->OnCustomLinkClicked(); 442 content_setting_bubble_model_->OnCustomLinkClicked();
407 Close(); 443 Close();
408 } 444 }
409 445
410 void ContentSettingBubbleGtk::OnManageLinkClicked(GtkWidget* button) { 446 void ContentSettingBubbleGtk::OnManageLinkClicked(GtkWidget* button) {
411 content_setting_bubble_model_->OnManageLinkClicked(); 447 content_setting_bubble_model_->OnManageLinkClicked();
412 Close(); 448 Close();
413 } 449 }
414 450
415 void ContentSettingBubbleGtk::OnMenuButtonClicked(GtkWidget* button) { 451 void ContentSettingBubbleGtk::OnMenuButtonClicked(GtkWidget* button) {
416 GtkMediaMenuMap::iterator i(media_menus_.find(button)); 452 GtkMediaMenuMap::iterator i(media_menus_.find(button));
417 DCHECK(i != media_menus_.end()); 453 DCHECK(i != media_menus_.end());
418 i->second->menu->PopupForWidget(button, 1, gtk_get_current_event_time()); 454 i->second->menu->PopupForWidget(button, 1, gtk_get_current_event_time());
419 } 455 }
420 456
421 ContentSettingBubbleGtk::MediaMenuGtk::MediaMenuGtk( 457 ContentSettingBubbleGtk::MediaMenuGtk::MediaMenuGtk(
422 content::MediaStreamType type) 458 content::MediaStreamType type)
423 : type(type) {} 459 : type(type) {}
424 460
425 ContentSettingBubbleGtk::MediaMenuGtk::~MediaMenuGtk() {} 461 ContentSettingBubbleGtk::MediaMenuGtk::~MediaMenuGtk() {}
OLDNEW
« no previous file with comments | « chrome/browser/ui/gtk/content_setting_bubble_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698