| OLD | NEW |
| 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" |
| 11 #include "base/path_service.h" | 11 #include "base/path_service.h" |
| 12 #include "base/string16.h" | 12 #include "base/string16.h" |
| 13 #include "base/thread.h" | 13 #include "base/thread.h" |
| 14 #include "chrome/browser/bookmarks/bookmark_html_writer.h" | 14 #include "chrome/browser/bookmarks/bookmark_html_writer.h" |
| 15 #include "chrome/browser/bookmarks/bookmark_manager.h" | 15 #include "chrome/browser/bookmarks/bookmark_manager.h" |
| 16 #include "chrome/browser/bookmarks/bookmark_table_model.h" | 16 #include "chrome/browser/bookmarks/bookmark_table_model.h" |
| 17 #include "chrome/browser/browser_process.h" | 17 #include "chrome/browser/browser_process.h" |
| 18 #include "chrome/browser/gtk/bookmark_tree_model.h" | 18 #include "chrome/browser/gtk/bookmark_tree_model.h" |
| 19 #include "chrome/browser/gtk/bookmark_utils_gtk.h" | 19 #include "chrome/browser/gtk/bookmark_utils_gtk.h" |
| 20 #include "chrome/browser/gtk/dnd_registry.h" | 20 #include "chrome/browser/gtk/gtk_dnd_util.h" |
| 21 #include "chrome/browser/importer/importer.h" | 21 #include "chrome/browser/importer/importer.h" |
| 22 #include "chrome/browser/profile.h" | 22 #include "chrome/browser/profile.h" |
| 23 #include "chrome/common/chrome_paths.h" | 23 #include "chrome/common/chrome_paths.h" |
| 24 #include "chrome/common/gtk_util.h" | 24 #include "chrome/common/gtk_util.h" |
| 25 #include "chrome/common/pref_names.h" | 25 #include "chrome/common/pref_names.h" |
| 26 #include "chrome/common/pref_service.h" | 26 #include "chrome/common/pref_service.h" |
| 27 #include "grit/app_resources.h" | 27 #include "grit/app_resources.h" |
| 28 #include "grit/generated_resources.h" | 28 #include "grit/generated_resources.h" |
| 29 #include "grit/theme_resources.h" | 29 #include "grit/theme_resources.h" |
| 30 | 30 |
| (...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 g_signal_connect(left_tree_view_, "row-collapsed", | 374 g_signal_connect(left_tree_view_, "row-collapsed", |
| 375 G_CALLBACK(OnLeftTreeViewRowCollapsed), this); | 375 G_CALLBACK(OnLeftTreeViewRowCollapsed), this); |
| 376 g_signal_connect(left_tree_view_, "focus-in-event", | 376 g_signal_connect(left_tree_view_, "focus-in-event", |
| 377 G_CALLBACK(OnLeftTreeViewFocusIn), this); | 377 G_CALLBACK(OnLeftTreeViewFocusIn), this); |
| 378 g_signal_connect(left_tree_view_, "button-release-event", | 378 g_signal_connect(left_tree_view_, "button-release-event", |
| 379 G_CALLBACK(OnTreeViewButtonRelease), this); | 379 G_CALLBACK(OnTreeViewButtonRelease), this); |
| 380 | 380 |
| 381 // The left side is only a drag destination (not a source). | 381 // The left side is only a drag destination (not a source). |
| 382 gtk_drag_dest_set(left_tree_view_, GTK_DEST_DEFAULT_DROP, | 382 gtk_drag_dest_set(left_tree_view_, GTK_DEST_DEFAULT_DROP, |
| 383 NULL, 0, GDK_ACTION_MOVE); | 383 NULL, 0, GDK_ACTION_MOVE); |
| 384 dnd::SetDestTargetListFromCodeMask(left_tree_view_, | 384 GtkDndUtil::SetDestTargetListFromCodeMask(left_tree_view_, |
| 385 dnd::X_CHROME_BOOKMARK_ITEM); | 385 GtkDndUtil::X_CHROME_BOOKMARK_ITEM); |
| 386 | 386 |
| 387 g_signal_connect(left_tree_view_, "drag-data-received", | 387 g_signal_connect(left_tree_view_, "drag-data-received", |
| 388 G_CALLBACK(&OnLeftTreeViewDragReceived), this); | 388 G_CALLBACK(&OnLeftTreeViewDragReceived), this); |
| 389 g_signal_connect(left_tree_view_, "drag-motion", | 389 g_signal_connect(left_tree_view_, "drag-motion", |
| 390 G_CALLBACK(&OnLeftTreeViewDragMotion), this); | 390 G_CALLBACK(&OnLeftTreeViewDragMotion), this); |
| 391 | 391 |
| 392 GtkWidget* scrolled = gtk_scrolled_window_new(NULL, NULL); | 392 GtkWidget* scrolled = gtk_scrolled_window_new(NULL, NULL); |
| 393 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), | 393 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), |
| 394 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | 394 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
| 395 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), | 395 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 g_signal_connect(right_tree_view_, "motion-notify-event", | 440 g_signal_connect(right_tree_view_, "motion-notify-event", |
| 441 G_CALLBACK(OnRightTreeViewMotion), this); | 441 G_CALLBACK(OnRightTreeViewMotion), this); |
| 442 g_signal_connect(right_tree_view_, "button-release-event", | 442 g_signal_connect(right_tree_view_, "button-release-event", |
| 443 G_CALLBACK(OnTreeViewButtonRelease), this); | 443 G_CALLBACK(OnTreeViewButtonRelease), this); |
| 444 | 444 |
| 445 // We don't advertise GDK_ACTION_COPY, but since we don't explicitly do | 445 // We don't advertise GDK_ACTION_COPY, but since we don't explicitly do |
| 446 // any deleting following a succesful move, this should work. | 446 // any deleting following a succesful move, this should work. |
| 447 gtk_drag_source_set(right_tree_view_, | 447 gtk_drag_source_set(right_tree_view_, |
| 448 GDK_BUTTON1_MASK, | 448 GDK_BUTTON1_MASK, |
| 449 NULL, 0, GDK_ACTION_MOVE); | 449 NULL, 0, GDK_ACTION_MOVE); |
| 450 dnd::SetSourceTargetListFromCodeMask(right_tree_view_, | 450 GtkDndUtil::SetSourceTargetListFromCodeMask( |
| 451 dnd::X_CHROME_BOOKMARK_ITEM); | 451 right_tree_view_, GtkDndUtil::X_CHROME_BOOKMARK_ITEM); |
| 452 | 452 |
| 453 // We connect to drag dest signals, but we don't actually enable the widget | 453 // We connect to drag dest signals, but we don't actually enable the widget |
| 454 // as a drag destination unless it corresponds to the contents of a folder. | 454 // as a drag destination unless it corresponds to the contents of a folder. |
| 455 // See BuildRightStore(). | 455 // See BuildRightStore(). |
| 456 g_signal_connect(right_tree_view_, "drag-data-get", | 456 g_signal_connect(right_tree_view_, "drag-data-get", |
| 457 G_CALLBACK(&OnRightTreeViewDragGet), this); | 457 G_CALLBACK(&OnRightTreeViewDragGet), this); |
| 458 g_signal_connect(right_tree_view_, "drag-data-received", | 458 g_signal_connect(right_tree_view_, "drag-data-received", |
| 459 G_CALLBACK(&OnRightTreeViewDragReceived), this); | 459 G_CALLBACK(&OnRightTreeViewDragReceived), this); |
| 460 g_signal_connect(right_tree_view_, "drag-motion", | 460 g_signal_connect(right_tree_view_, "drag-motion", |
| 461 G_CALLBACK(&OnRightTreeViewDragMotion), this); | 461 G_CALLBACK(&OnRightTreeViewDragMotion), this); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 526 gtk_list_store_clear(right_store_); | 526 gtk_list_store_clear(right_store_); |
| 527 | 527 |
| 528 if (node) { | 528 if (node) { |
| 529 gtk_tree_view_column_set_visible(path_column_, FALSE); | 529 gtk_tree_view_column_set_visible(path_column_, FALSE); |
| 530 | 530 |
| 531 right_tree_model_.reset( | 531 right_tree_model_.reset( |
| 532 BookmarkTableModel::CreateBookmarkTableModelForFolder(model_, node)); | 532 BookmarkTableModel::CreateBookmarkTableModelForFolder(model_, node)); |
| 533 | 533 |
| 534 gtk_drag_dest_set(right_tree_view_, GTK_DEST_DEFAULT_ALL, NULL, 0, | 534 gtk_drag_dest_set(right_tree_view_, GTK_DEST_DEFAULT_ALL, NULL, 0, |
| 535 GDK_ACTION_MOVE); | 535 GDK_ACTION_MOVE); |
| 536 dnd::SetDestTargetListFromCodeMask(right_tree_view_, | 536 GtkDndUtil::SetDestTargetListFromCodeMask(right_tree_view_, |
| 537 dnd::X_CHROME_BOOKMARK_ITEM); | 537 GtkDndUtil::X_CHROME_BOOKMARK_ITEM
); |
| 538 } else { | 538 } else { |
| 539 gtk_tree_view_column_set_visible(path_column_, TRUE); | 539 gtk_tree_view_column_set_visible(path_column_, TRUE); |
| 540 | 540 |
| 541 int id = GetSelectedRowID(); | 541 int id = GetSelectedRowID(); |
| 542 if (kRecentID == id) { | 542 if (kRecentID == id) { |
| 543 right_tree_model_.reset( | 543 right_tree_model_.reset( |
| 544 BookmarkTableModel::CreateRecentlyBookmarkedModel(model_)); | 544 BookmarkTableModel::CreateRecentlyBookmarkedModel(model_)); |
| 545 } else { // kSearchID == id | 545 } else { // kSearchID == id |
| 546 search_factory_.RevokeAll(); | 546 search_factory_.RevokeAll(); |
| 547 | 547 |
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1012 // static | 1012 // static |
| 1013 gboolean BookmarkManagerGtk::OnRightTreeViewMotion(GtkWidget* tree_view, | 1013 gboolean BookmarkManagerGtk::OnRightTreeViewMotion(GtkWidget* tree_view, |
| 1014 GdkEventMotion* event, BookmarkManagerGtk* bm) { | 1014 GdkEventMotion* event, BookmarkManagerGtk* bm) { |
| 1015 // This handler is only used for the multi-drag workaround. | 1015 // This handler is only used for the multi-drag workaround. |
| 1016 if (!bm->delaying_mousedown_) | 1016 if (!bm->delaying_mousedown_) |
| 1017 return FALSE; | 1017 return FALSE; |
| 1018 | 1018 |
| 1019 if (gtk_drag_check_threshold(tree_view, | 1019 if (gtk_drag_check_threshold(tree_view, |
| 1020 bm->mousedown_event_.x, bm->mousedown_event_.y, event->x, event->y)) { | 1020 bm->mousedown_event_.x, bm->mousedown_event_.y, event->x, event->y)) { |
| 1021 bm->delaying_mousedown_ = false; | 1021 bm->delaying_mousedown_ = false; |
| 1022 GtkTargetList* targets = | 1022 GtkTargetList* targets = GtkDndUtil::GetTargetListFromCodeMask( |
| 1023 dnd::GetTargetListFromCodeMask(dnd::X_CHROME_BOOKMARK_ITEM); | 1023 GtkDndUtil::X_CHROME_BOOKMARK_ITEM); |
| 1024 gtk_drag_begin(tree_view, targets, GDK_ACTION_MOVE, | 1024 gtk_drag_begin(tree_view, targets, GDK_ACTION_MOVE, |
| 1025 1, reinterpret_cast<GdkEvent*>(event)); | 1025 1, reinterpret_cast<GdkEvent*>(event)); |
| 1026 // The drag adds a ref; let it own the list. | 1026 // The drag adds a ref; let it own the list. |
| 1027 gtk_target_list_unref(targets); | 1027 gtk_target_list_unref(targets); |
| 1028 } | 1028 } |
| 1029 | 1029 |
| 1030 return FALSE; | 1030 return FALSE; |
| 1031 } | 1031 } |
| 1032 | 1032 |
| 1033 // static | 1033 // static |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1095 } else if (id == IDS_BOOKMARK_MANAGER_EXPORT_MENU) { | 1095 } else if (id == IDS_BOOKMARK_MANAGER_EXPORT_MENU) { |
| 1096 if (g_browser_process->io_thread()) { | 1096 if (g_browser_process->io_thread()) { |
| 1097 bookmark_html_writer::WriteBookmarks( | 1097 bookmark_html_writer::WriteBookmarks( |
| 1098 g_browser_process->io_thread()->message_loop(), model_, | 1098 g_browser_process->io_thread()->message_loop(), model_, |
| 1099 path.ToWStringHack()); | 1099 path.ToWStringHack()); |
| 1100 } | 1100 } |
| 1101 } else { | 1101 } else { |
| 1102 NOTREACHED(); | 1102 NOTREACHED(); |
| 1103 } | 1103 } |
| 1104 } | 1104 } |
| OLD | NEW |