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

Unified Diff: views/widget/widget_impl.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_impl.cc
===================================================================
--- views/widget/widget_impl.cc (revision 75181)
+++ views/widget/widget_impl.cc (working copy)
@@ -7,6 +7,7 @@
#include "base/compiler_specific.h"
#include "base/message_loop.h"
#include "views/focus/focus_manager.h"
+#include "views/focus/view_storage.h"
#include "views/view.h"
#include "views/widget/native_widget.h"
#include "views/widget/root_view.h"
@@ -53,7 +54,8 @@
is_mouse_button_pressed_(false),
last_mouse_event_was_move_(false),
ALLOW_THIS_IN_INITIALIZER_LIST(close_widget_factory_(this)),
- delete_on_destroy_(true) {
+ delete_on_destroy_(true),
+ dragged_view_(NULL) {
}
WidgetImpl::~WidgetImpl() {
@@ -365,7 +367,12 @@
}
void WidgetImpl::ViewHierarchyChanged(bool is_add, View* parent, View* child) {
- NOTIMPLEMENTED();
+ if (!is_add) {
+ FocusManager* focus_manager = GetFocusManager();
+ if (focus_manager)
+ focus_manager->ViewRemoved(parent, child);
+ ViewStorage::GetInstance()->ViewRemoved(parent, child);
sky 2011/02/17 00:37:46 Don't you need the: if (child == dragged_view_)
+ }
}
bool WidgetImpl::ContainsNativeView(gfx::NativeView native_view) {
@@ -373,6 +380,26 @@
return false;
}
+void WidgetImpl::StartDragForViewFromMouseEvent(
+ View* view,
+ const OSExchangeData& data,
+ int operation) {
+ // NOTE: view may be NULL.
+ dragged_view_ = view;
+ native_widget_->RunShellDrag(data, operation);
+
+ // If the view is removed during the drag operation, drag_view_ is set to
+ // NULL.
+ if (view && dragged_view_ == view) {
+ dragged_view_ = NULL;
+ view->OnDragDone();
+ }
+}
+
+View* WidgetImpl::GetDraggedView() {
+ return dragged_view_;
+}
+
////////////////////////////////////////////////////////////////////////////////
// WidgetImpl, private:

Powered by Google App Engine
This is Rietveld 408576698