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

Side by Side Diff: chrome/browser/gtk/bookmark_manager_gtk.cc

Issue 132048: Don't crash when reusing a bookmark context menu. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/gtk/bookmark_manager_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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/gtk/bookmark_manager_gtk.h" 5 #include "chrome/browser/gtk/bookmark_manager_gtk.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "app/l10n_util.h" 9 #include "app/l10n_util.h"
10 #include "app/resource_bundle.h" 10 #include "app/resource_bundle.h"
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 } 256 }
257 gtk_list_store_remove(right_store_, &iter); 257 gtk_list_store_remove(right_store_, &iter);
258 } 258 }
259 } 259 }
260 260
261 // BookmarkManagerGtk, private ------------------------------------------------- 261 // BookmarkManagerGtk, private -------------------------------------------------
262 262
263 BookmarkManagerGtk::BookmarkManagerGtk(Profile* profile) 263 BookmarkManagerGtk::BookmarkManagerGtk(Profile* profile)
264 : profile_(profile), 264 : profile_(profile),
265 model_(profile->GetBookmarkModel()), 265 model_(profile->GetBookmarkModel()),
266 organize_is_for_left_(true),
266 search_factory_(this), 267 search_factory_(this),
267 select_file_dialog_(SelectFileDialog::Create(this)) { 268 select_file_dialog_(SelectFileDialog::Create(this)) {
268 InitWidgets(); 269 InitWidgets();
269 g_signal_connect(window_, "destroy", 270 g_signal_connect(window_, "destroy",
270 G_CALLBACK(OnWindowDestroy), this); 271 G_CALLBACK(OnWindowDestroy), this);
271 272
272 model_->AddObserver(this); 273 model_->AddObserver(this);
273 if (model_->IsLoaded()) 274 if (model_->IsLoaded())
274 Loaded(model_); 275 Loaded(model_);
275 276
276 gtk_widget_show_all(window_); 277 gtk_widget_show_all(window_);
277 } 278 }
278 279
279 BookmarkManagerGtk::~BookmarkManagerGtk() { 280 BookmarkManagerGtk::~BookmarkManagerGtk() {
280 model_->RemoveObserver(this); 281 model_->RemoveObserver(this);
281 } 282 }
282 283
283 void BookmarkManagerGtk::InitWidgets() { 284 void BookmarkManagerGtk::InitWidgets() {
284 window_ = gtk_window_new(GTK_WINDOW_TOPLEVEL); 285 window_ = gtk_window_new(GTK_WINDOW_TOPLEVEL);
285 gtk_window_set_title(GTK_WINDOW(window_), 286 gtk_window_set_title(GTK_WINDOW(window_),
286 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_TITLE).c_str()); 287 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_TITLE).c_str());
287 // TODO(estade): use dimensions based on 288 // TODO(estade): use dimensions based on
288 // IDS_BOOKMARK_MANAGER_DIALOG_WIDTH_CHARS and 289 // IDS_BOOKMARK_MANAGER_DIALOG_WIDTH_CHARS and
289 // IDS_BOOKMARK_MANAGER_DIALOG_HEIGHT_LINES. 290 // IDS_BOOKMARK_MANAGER_DIALOG_HEIGHT_LINES.
290 gtk_window_set_default_size(GTK_WINDOW(window_), 640, 480); 291 gtk_window_set_default_size(GTK_WINDOW(window_), 640, 480);
291 292
292 std::vector<BookmarkNode*> nodes;
293 organize_menu_.reset(new BookmarkContextMenu(window_, profile_, NULL, NULL,
294 NULL, nodes, BookmarkContextMenu::BOOKMARK_MANAGER_ORGANIZE_MENU));
295
296 // Build the organize and tools menus. 293 // Build the organize and tools menus.
297 GtkWidget* organize = gtk_menu_item_new_with_label( 294 organize_ = gtk_menu_item_new_with_label(
298 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_ORGANIZE_MENU).c_str()); 295 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_ORGANIZE_MENU).c_str());
299 gtk_menu_item_set_submenu(GTK_MENU_ITEM(organize), organize_menu_->menu());
300 296
301 GtkWidget* import_item = gtk_menu_item_new_with_mnemonic( 297 GtkWidget* import_item = gtk_menu_item_new_with_mnemonic(
302 gtk_util::ConvertAcceleratorsFromWindowsStyle( 298 gtk_util::ConvertAcceleratorsFromWindowsStyle(
303 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_IMPORT_MENU)).c_str()); 299 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_IMPORT_MENU)).c_str());
304 g_signal_connect(import_item, "activate", 300 g_signal_connect(import_item, "activate",
305 G_CALLBACK(OnImportItemActivated), this); 301 G_CALLBACK(OnImportItemActivated), this);
306 302
307 GtkWidget* export_item = gtk_menu_item_new_with_mnemonic( 303 GtkWidget* export_item = gtk_menu_item_new_with_mnemonic(
308 gtk_util::ConvertAcceleratorsFromWindowsStyle( 304 gtk_util::ConvertAcceleratorsFromWindowsStyle(
309 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_EXPORT_MENU)).c_str()); 305 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_EXPORT_MENU)).c_str());
310 g_signal_connect(export_item, "activate", 306 g_signal_connect(export_item, "activate",
311 G_CALLBACK(OnExportItemActivated), this); 307 G_CALLBACK(OnExportItemActivated), this);
312 308
313 GtkWidget* tools_menu = gtk_menu_new(); 309 GtkWidget* tools_menu = gtk_menu_new();
314 gtk_menu_shell_append(GTK_MENU_SHELL(tools_menu), import_item); 310 gtk_menu_shell_append(GTK_MENU_SHELL(tools_menu), import_item);
315 gtk_menu_shell_append(GTK_MENU_SHELL(tools_menu), export_item); 311 gtk_menu_shell_append(GTK_MENU_SHELL(tools_menu), export_item);
316 312
317 GtkWidget* tools = gtk_menu_item_new_with_label( 313 GtkWidget* tools = gtk_menu_item_new_with_label(
318 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_TOOLS_MENU).c_str()); 314 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_TOOLS_MENU).c_str());
319 gtk_menu_item_set_submenu(GTK_MENU_ITEM(tools), tools_menu); 315 gtk_menu_item_set_submenu(GTK_MENU_ITEM(tools), tools_menu);
320 316
321 GtkWidget* menu_bar = gtk_menu_bar_new(); 317 GtkWidget* menu_bar = gtk_menu_bar_new();
322 gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), organize); 318 gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), organize_);
323 gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), tools); 319 gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), tools);
324 SetMenuBarStyle(); 320 SetMenuBarStyle();
325 gtk_widget_set_name(menu_bar, "chrome-bm-menubar"); 321 gtk_widget_set_name(menu_bar, "chrome-bm-menubar");
326 322
327 GtkWidget* search_label = gtk_label_new( 323 GtkWidget* search_label = gtk_label_new(
328 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_SEARCH_TITLE).c_str()); 324 l10n_util::GetStringUTF8(IDS_BOOKMARK_MANAGER_SEARCH_TITLE).c_str());
329 search_entry_ = gtk_entry_new(); 325 search_entry_ = gtk_entry_new();
330 g_signal_connect(search_entry_, "changed", 326 g_signal_connect(search_entry_, "changed",
331 G_CALLBACK(OnSearchTextChangedThunk), this); 327 G_CALLBACK(OnSearchTextChangedThunk), this);
332 328
(...skipping 11 matching lines...) Expand all
344 // when it first shows (depending on the WM, this may or may not be the value 340 // when it first shows (depending on the WM, this may or may not be the value
345 // we set below in gtk_window_set_size()). 341 // we set below in gtk_window_set_size()).
346 gtk_paned_set_position(GTK_PANED(paned), 200); 342 gtk_paned_set_position(GTK_PANED(paned), 200);
347 gtk_paned_pack1(GTK_PANED(paned), left_pane, FALSE, FALSE); 343 gtk_paned_pack1(GTK_PANED(paned), left_pane, FALSE, FALSE);
348 gtk_paned_pack2(GTK_PANED(paned), right_pane, TRUE, FALSE); 344 gtk_paned_pack2(GTK_PANED(paned), right_pane, TRUE, FALSE);
349 345
350 GtkWidget* vbox = gtk_vbox_new(FALSE, 0); 346 GtkWidget* vbox = gtk_vbox_new(FALSE, 0);
351 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); 347 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
352 gtk_box_pack_start(GTK_BOX(vbox), paned, TRUE, TRUE, 0); 348 gtk_box_pack_start(GTK_BOX(vbox), paned, TRUE, TRUE, 0);
353 gtk_container_add(GTK_CONTAINER(window_), vbox); 349 gtk_container_add(GTK_CONTAINER(window_), vbox);
350
351 ResetOrganizeMenu(true);
354 } 352 }
355 353
356 GtkWidget* BookmarkManagerGtk::MakeLeftPane() { 354 GtkWidget* BookmarkManagerGtk::MakeLeftPane() {
357 left_store_ = bookmark_utils::MakeFolderTreeStore(); 355 left_store_ = bookmark_utils::MakeFolderTreeStore();
358 356
359 GtkTreeViewColumn* icon_column = gtk_tree_view_column_new_with_attributes( 357 GtkTreeViewColumn* icon_column = gtk_tree_view_column_new_with_attributes(
360 "", gtk_cell_renderer_pixbuf_new(), "pixbuf", bookmark_utils::FOLDER_ICON, 358 "", gtk_cell_renderer_pixbuf_new(), "pixbuf", bookmark_utils::FOLDER_ICON,
361 NULL); 359 NULL);
362 GtkTreeViewColumn* name_column = gtk_tree_view_column_new_with_attributes( 360 GtkTreeViewColumn* name_column = gtk_tree_view_column_new_with_attributes(
363 "", gtk_cell_renderer_text_new(), "text", bookmark_utils::FOLDER_NAME, 361 "", gtk_cell_renderer_text_new(), "text", bookmark_utils::FOLDER_NAME,
364 NULL); 362 NULL);
365 363
366 left_tree_view_ = gtk_tree_view_new_with_model(GTK_TREE_MODEL(left_store_)); 364 left_tree_view_ = gtk_tree_view_new_with_model(GTK_TREE_MODEL(left_store_));
367 // Let |tree_view| own the store. 365 // Let |tree_view| own the store.
368 g_object_unref(left_store_); 366 g_object_unref(left_store_);
369 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(left_tree_view_), FALSE); 367 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(left_tree_view_), FALSE);
370 gtk_tree_view_append_column(GTK_TREE_VIEW(left_tree_view_), icon_column); 368 gtk_tree_view_append_column(GTK_TREE_VIEW(left_tree_view_), icon_column);
371 gtk_tree_view_append_column(GTK_TREE_VIEW(left_tree_view_), name_column); 369 gtk_tree_view_append_column(GTK_TREE_VIEW(left_tree_view_), name_column);
372 // When a row is collapsed that contained the selected node, we want to select 370 // When a row is collapsed that contained the selected node, we want to select
373 // it. 371 // it.
374 g_signal_connect(left_tree_view_, "row-collapsed", 372 g_signal_connect(left_tree_view_, "row-collapsed",
375 G_CALLBACK(OnLeftTreeViewRowCollapsed), this); 373 G_CALLBACK(OnLeftTreeViewRowCollapsed), this);
374 g_signal_connect(left_tree_view_, "focus-in-event",
375 G_CALLBACK(OnLeftTreeViewFocusIn), this);
376 376
377 // The left side is only a drag destination (not a source). 377 // The left side is only a drag destination (not a source).
378 gtk_drag_dest_set(left_tree_view_, GTK_DEST_DEFAULT_DROP, 378 gtk_drag_dest_set(left_tree_view_, GTK_DEST_DEFAULT_DROP,
379 bookmark_utils::kTargetTable, 379 bookmark_utils::kTargetTable,
380 bookmark_utils::kTargetTableSize, 380 bookmark_utils::kTargetTableSize,
381 GDK_ACTION_MOVE); 381 GDK_ACTION_MOVE);
382 382
383 g_signal_connect(left_tree_view_, "drag-data-received", 383 g_signal_connect(left_tree_view_, "drag-data-received",
384 G_CALLBACK(&OnLeftTreeViewDragReceived), this); 384 G_CALLBACK(&OnLeftTreeViewDragReceived), this);
385 g_signal_connect(left_tree_view_, "drag-motion", 385 g_signal_connect(left_tree_view_, "drag-motion",
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 right_tree_view_ = gtk_tree_view_new_with_model(GTK_TREE_MODEL(right_store_)); 420 right_tree_view_ = gtk_tree_view_new_with_model(GTK_TREE_MODEL(right_store_));
421 // Let |tree_view| own the store. 421 // Let |tree_view| own the store.
422 g_object_unref(right_store_); 422 g_object_unref(right_store_);
423 gtk_tree_view_append_column(GTK_TREE_VIEW(right_tree_view_), title_column); 423 gtk_tree_view_append_column(GTK_TREE_VIEW(right_tree_view_), title_column);
424 gtk_tree_view_append_column(GTK_TREE_VIEW(right_tree_view_), url_column); 424 gtk_tree_view_append_column(GTK_TREE_VIEW(right_tree_view_), url_column);
425 gtk_tree_view_append_column(GTK_TREE_VIEW(right_tree_view_), path_column_); 425 gtk_tree_view_append_column(GTK_TREE_VIEW(right_tree_view_), path_column_);
426 g_signal_connect(right_tree_view_, "row-activated", 426 g_signal_connect(right_tree_view_, "row-activated",
427 G_CALLBACK(OnRightTreeViewRowActivated), this); 427 G_CALLBACK(OnRightTreeViewRowActivated), this);
428 g_signal_connect(right_selection(), "changed", 428 g_signal_connect(right_selection(), "changed",
429 G_CALLBACK(OnRightSelectionChanged), this); 429 G_CALLBACK(OnRightSelectionChanged), this);
430 g_signal_connect(right_tree_view_, "focus-in-event",
431 G_CALLBACK(OnRightTreeViewFocusIn), this);
430 432
431 // We don't advertise GDK_ACTION_COPY, but since we don't explicitly do 433 // We don't advertise GDK_ACTION_COPY, but since we don't explicitly do
432 // any deleting following a succesful move, this should work. 434 // any deleting following a succesful move, this should work.
433 gtk_drag_source_set(right_tree_view_, 435 gtk_drag_source_set(right_tree_view_,
434 GDK_BUTTON1_MASK, 436 GDK_BUTTON1_MASK,
435 bookmark_utils::kTargetTable, 437 bookmark_utils::kTargetTable,
436 bookmark_utils::kTargetTableSize, 438 bookmark_utils::kTargetTableSize,
437 GDK_ACTION_MOVE); 439 GDK_ACTION_MOVE);
438 440
439 // We connect to drag dest signals, but we don't actually enable the widget 441 // We connect to drag dest signals, but we don't actually enable the widget
(...skipping 11 matching lines...) Expand all
451 GtkWidget* scrolled = gtk_scrolled_window_new(NULL, NULL); 453 GtkWidget* scrolled = gtk_scrolled_window_new(NULL, NULL);
452 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), 454 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
453 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); 455 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
454 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), 456 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled),
455 GTK_SHADOW_ETCHED_IN); 457 GTK_SHADOW_ETCHED_IN);
456 gtk_container_add(GTK_CONTAINER(scrolled), right_tree_view_); 458 gtk_container_add(GTK_CONTAINER(scrolled), right_tree_view_);
457 459
458 return scrolled; 460 return scrolled;
459 } 461 }
460 462
463 void BookmarkManagerGtk::ResetOrganizeMenu(bool left) {
464 organize_is_for_left_ = left;
465 BookmarkNode* parent = GetFolder();
466 std::vector<BookmarkNode*> nodes;
467 if (!left)
468 nodes = GetRightSelection();
469 else if (parent)
470 nodes.push_back(parent);
471
472 organize_menu_.reset(new BookmarkContextMenu(window_, profile_, NULL, NULL,
473 parent, nodes, BookmarkContextMenu::BOOKMARK_MANAGER_ORGANIZE_MENU));
474 gtk_menu_item_set_submenu(GTK_MENU_ITEM(organize_), organize_menu_->menu());
475 }
476
461 void BookmarkManagerGtk::BuildLeftStore() { 477 void BookmarkManagerGtk::BuildLeftStore() {
462 GtkTreeIter select_iter; 478 GtkTreeIter select_iter;
463 bookmark_utils::AddToTreeStore(model_, 479 bookmark_utils::AddToTreeStore(model_,
464 model_->GetBookmarkBarNode()->id(), left_store_, &select_iter); 480 model_->GetBookmarkBarNode()->id(), left_store_, &select_iter);
465 gtk_tree_selection_select_iter(left_selection(), &select_iter); 481 gtk_tree_selection_select_iter(left_selection(), &select_iter);
466 482
467 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 483 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
468 gtk_tree_store_append(left_store_, &select_iter, NULL); 484 gtk_tree_store_append(left_store_, &select_iter, NULL);
469 gtk_tree_store_set(left_store_, &select_iter, 485 gtk_tree_store_set(left_store_, &select_iter,
470 bookmark_utils::FOLDER_ICON, 486 bookmark_utils::FOLDER_ICON,
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 kSearchDelayMS); 694 kSearchDelayMS);
679 } 695 }
680 696
681 // static 697 // static
682 void BookmarkManagerGtk::OnLeftSelectionChanged(GtkTreeSelection* selection, 698 void BookmarkManagerGtk::OnLeftSelectionChanged(GtkTreeSelection* selection,
683 BookmarkManagerGtk* bm) { 699 BookmarkManagerGtk* bm) {
684 // Sometimes we won't have a selection for a short period of time 700 // Sometimes we won't have a selection for a short period of time
685 // (specifically, when the user collapses an ancestor of the selected row). 701 // (specifically, when the user collapses an ancestor of the selected row).
686 // The context menu and right store will momentarily be stale, but we should 702 // The context menu and right store will momentarily be stale, but we should
687 // presently receive another selection changed event that will refresh them. 703 // presently receive another selection changed event that will refresh them.
688 if (gtk_tree_selection_count_selected_rows(bm->left_selection()) == 0) 704 if (gtk_tree_selection_count_selected_rows(selection) == 0)
689 return; 705 return;
690 706
691 BookmarkNode* parent = bm->GetFolder(); 707 bm->ResetOrganizeMenu(true);
692
693 // Update the context menu.
694 bm->organize_menu_->set_parent(parent);
695 std::vector<BookmarkNode*> nodes;
696 if (parent)
697 nodes.push_back(parent);
698 bm->organize_menu_->set_selection(nodes);
699
700 bm->BuildRightStore(); 708 bm->BuildRightStore();
701 } 709 }
702 710
703 // static 711 // static
704 void BookmarkManagerGtk::OnRightSelectionChanged(GtkTreeSelection* selection, 712 void BookmarkManagerGtk::OnRightSelectionChanged(GtkTreeSelection* selection,
705 BookmarkManagerGtk* bookmark_manager) { 713 BookmarkManagerGtk* bookmark_manager) {
706 // Update the context menu. 714 if (gtk_tree_selection_count_selected_rows(selection) == 0)
707 bookmark_manager->organize_menu_->set_selection( 715 return;
708 bookmark_manager->GetRightSelection()); 716
717 bookmark_manager->ResetOrganizeMenu(false);
709 } 718 }
710 719
711 // statuc 720 // statuc
712 void BookmarkManagerGtk::OnLeftTreeViewDragReceived( 721 void BookmarkManagerGtk::OnLeftTreeViewDragReceived(
713 GtkWidget* tree_view, GdkDragContext* context, gint x, gint y, 722 GtkWidget* tree_view, GdkDragContext* context, gint x, gint y,
714 GtkSelectionData* selection_data, guint target_type, guint time, 723 GtkSelectionData* selection_data, guint target_type, guint time,
715 BookmarkManagerGtk* bm) { 724 BookmarkManagerGtk* bm) {
716 gboolean dnd_success = FALSE; 725 gboolean dnd_success = FALSE;
717 gboolean delete_selection_data = FALSE; 726 gboolean delete_selection_data = FALSE;
718 727
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 return; 923 return;
915 if (nodes.size() == 1 && nodes[0]->is_folder()) { 924 if (nodes.size() == 1 && nodes[0]->is_folder()) {
916 // Double click on a folder descends into the folder. 925 // Double click on a folder descends into the folder.
917 bm->SelectInTree(nodes[0], false); 926 bm->SelectInTree(nodes[0], false);
918 return; 927 return;
919 } 928 }
920 bookmark_utils::OpenAll(bm->window_, bm->profile_, NULL, nodes, CURRENT_TAB); 929 bookmark_utils::OpenAll(bm->window_, bm->profile_, NULL, nodes, CURRENT_TAB);
921 } 930 }
922 931
923 // static 932 // static
933 void BookmarkManagerGtk::OnLeftTreeViewFocusIn(GtkTreeView* tree_view,
934 GdkEventFocus* event, BookmarkManagerGtk* bm) {
935 if (!bm->organize_is_for_left_)
936 bm->ResetOrganizeMenu(true);
937 }
938
939 // static
940 void BookmarkManagerGtk::OnRightTreeViewFocusIn(GtkTreeView* tree_view,
941 GdkEventFocus* event, BookmarkManagerGtk* bm) {
942 if (bm->organize_is_for_left_)
943 bm->ResetOrganizeMenu(false);
944 }
945
946 // static
924 void BookmarkManagerGtk::OnImportItemActivated(GtkMenuItem* menuitem, 947 void BookmarkManagerGtk::OnImportItemActivated(GtkMenuItem* menuitem,
925 BookmarkManagerGtk* bm) { 948 BookmarkManagerGtk* bm) {
926 SelectFileDialog::FileTypeInfo file_type_info; 949 SelectFileDialog::FileTypeInfo file_type_info;
927 file_type_info.extensions.resize(1); 950 file_type_info.extensions.resize(1);
928 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("html")); 951 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("html"));
929 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("htm")); 952 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("htm"));
930 file_type_info.include_all_files = true; 953 file_type_info.include_all_files = true;
931 bm->select_file_dialog_->SelectFile( 954 bm->select_file_dialog_->SelectFile(
932 SelectFileDialog::SELECT_OPEN_FILE, string16(), 955 SelectFileDialog::SELECT_OPEN_FILE, string16(),
933 FilePath(""), &file_type_info, 0, 956 FilePath(""), &file_type_info, 0,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 } else if (id == IDS_BOOKMARK_MANAGER_EXPORT_MENU) { 993 } else if (id == IDS_BOOKMARK_MANAGER_EXPORT_MENU) {
971 if (g_browser_process->io_thread()) { 994 if (g_browser_process->io_thread()) {
972 bookmark_html_writer::WriteBookmarks( 995 bookmark_html_writer::WriteBookmarks(
973 g_browser_process->io_thread()->message_loop(), model_, 996 g_browser_process->io_thread()->message_loop(), model_,
974 path.ToWStringHack()); 997 path.ToWStringHack());
975 } 998 }
976 } else { 999 } else {
977 NOTREACHED(); 1000 NOTREACHED();
978 } 1001 }
979 } 1002 }
OLDNEW
« no previous file with comments | « chrome/browser/gtk/bookmark_manager_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698