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

Unified Diff: views/widget/widget_gtk.cc

Issue 6507028: Remove usages of RootView from View by moving relevant RootView API methods t... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: views/widget/widget_gtk.cc
===================================================================
--- views/widget/widget_gtk.cc (revision 75181)
+++ views/widget/widget_gtk.cc (working copy)
@@ -19,6 +19,7 @@
#include "ui/base/dragdrop/os_exchange_data.h"
#include "ui/base/dragdrop/os_exchange_data_provider_gtk.h"
#include "ui/gfx/path.h"
+#include "views/focus/view_storage.h"
#include "views/widget/default_theme_provider.h"
#include "views/widget/drop_target_gtk.h"
#include "views/widget/gtk_views_fixed.h"
@@ -251,7 +252,8 @@
delegate_(NULL),
always_on_top_(false),
is_double_buffered_(false),
- should_handle_menu_key_release_(false) {
+ should_handle_menu_key_release_(false),
+ dragged_view_(NULL) {
static bool installed_message_loop_observer = false;
if (!installed_message_loop_observer) {
installed_message_loop_observer = true;
@@ -840,6 +842,16 @@
View *child) {
if (drop_target_.get())
drop_target_->ResetTargetViewIfEquals(child);
+
+ if (!is_add) {
+ if (child == dragged_view_)
+ dragged_view_ = NULL;
+
+ FocusManager* focus_manager = GetFocusManager();
+ if (focus_manager)
+ focus_manager->ViewRemoved(parent, child);
+ ViewStorage::GetInstance()->ViewRemoved(parent, child);
+ }
}
bool WidgetGtk::ContainsNativeView(gfx::NativeView native_view) {
@@ -848,6 +860,25 @@
return false;
}
+void WidgetGtk::StartDragForViewFromMouseEvent(
+ View* view,
+ const OSExchangeData& data,
+ int operation) {
+ // NOTE: view may be null.
+ dragged_view_ = view;
+ DoDrag(data, operation);
+ // If the view is removed during the drag operation, drag_view_ is set to
sky 2011/02/17 00:37:46 drag_view_ -> dragged_view_
+ // NULL.
+ if (view && dragged_view_ == view) {
+ dragged_view_ = NULL;
+ view->OnDragDone();
+ }
+}
+
+View* WidgetGtk::GetDraggedView() {
+ return dragged_view_;
+}
+
////////////////////////////////////////////////////////////////////////////////
// WidgetGtk, FocusTraversable implementation:

Powered by Google App Engine
This is Rietveld 408576698