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

Side by Side Diff: views/widget/native_widget_aura.cc

Issue 8450018: First shot at implementing drag&drop for Aura (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: added missing test file Created 9 years, 1 month 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "views/widget/native_widget_aura.h" 5 #include "views/widget/native_widget_aura.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/string_util.h"
8 #include "ui/aura/client/aura_constants.h" 9 #include "ui/aura/client/aura_constants.h"
10 #include "ui/aura/client/drag_drop_client.h"
9 #include "ui/aura/desktop.h" 11 #include "ui/aura/desktop.h"
10 #include "ui/aura/desktop_observer.h" 12 #include "ui/aura/desktop_observer.h"
11 #include "ui/aura/event.h" 13 #include "ui/aura/event.h"
12 #include "ui/aura/window.h" 14 #include "ui/aura/window.h"
13 #include "ui/aura/window_types.h" 15 #include "ui/aura/window_types.h"
16 #include "ui/base/dragdrop/os_exchange_data.h"
14 #include "ui/base/ui_base_types.h" 17 #include "ui/base/ui_base_types.h"
15 #include "ui/gfx/canvas.h" 18 #include "ui/gfx/canvas.h"
16 #include "ui/gfx/compositor/layer.h" 19 #include "ui/gfx/compositor/layer.h"
17 #include "ui/gfx/font.h" 20 #include "ui/gfx/font.h"
18 #include "ui/gfx/screen.h" 21 #include "ui/gfx/screen.h"
22 #include "views/widget/drop_helper.h"
19 #include "views/widget/native_widget_delegate.h" 23 #include "views/widget/native_widget_delegate.h"
20 #include "views/widget/tooltip_manager_views.h" 24 #include "views/widget/tooltip_manager_views.h"
21 25
22 #if defined(OS_WIN) 26 #if defined(OS_WIN)
23 #include "base/win/scoped_gdi_object.h" 27 #include "base/win/scoped_gdi_object.h"
24 #include "base/win/win_util.h" 28 #include "base/win/win_util.h"
25 #include "ui/base/l10n/l10n_util_win.h" 29 #include "ui/base/l10n/l10n_util_win.h"
26 #endif 30 #endif
27 31
28 #if defined(HAVE_IBUS) 32 #if defined(HAVE_IBUS)
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 //////////////////////////////////////////////////////////////////////////////// 90 ////////////////////////////////////////////////////////////////////////////////
87 // NativeWidgetAura, public: 91 // NativeWidgetAura, public:
88 92
89 NativeWidgetAura::NativeWidgetAura(internal::NativeWidgetDelegate* delegate) 93 NativeWidgetAura::NativeWidgetAura(internal::NativeWidgetDelegate* delegate)
90 : delegate_(delegate), 94 : delegate_(delegate),
91 ALLOW_THIS_IN_INITIALIZER_LIST(window_(new aura::Window(this))), 95 ALLOW_THIS_IN_INITIALIZER_LIST(window_(new aura::Window(this))),
92 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), 96 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET),
93 ALLOW_THIS_IN_INITIALIZER_LIST(close_widget_factory_(this)), 97 ALLOW_THIS_IN_INITIALIZER_LIST(close_widget_factory_(this)),
94 can_activate_(true), 98 can_activate_(true),
95 cursor_(gfx::kNullCursor) { 99 cursor_(gfx::kNullCursor) {
100 window_->set_drag_drop_delegate(this);
96 } 101 }
97 102
98 NativeWidgetAura::~NativeWidgetAura() { 103 NativeWidgetAura::~NativeWidgetAura() {
99 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) 104 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET)
100 delete delegate_; 105 delete delegate_;
101 else 106 else
102 CloseNow(); 107 CloseNow();
103 } 108 }
104 109
105 // static 110 // static
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 // Set up the transient child before the window is added. This way the 146 // Set up the transient child before the window is added. This way the
142 // LayoutManager knows the window has a transient parent. 147 // LayoutManager knows the window has a transient parent.
143 gfx::NativeView parent = params.GetParent(); 148 gfx::NativeView parent = params.GetParent();
144 if (parent) 149 if (parent)
145 parent->AddTransientChild(window_); 150 parent->AddTransientChild(window_);
146 window_->SetParent(NULL); 151 window_->SetParent(NULL);
147 } 152 }
148 // TODO(beng): do this some other way. 153 // TODO(beng): do this some other way.
149 delegate_->OnNativeWidgetSizeChanged(params.bounds.size()); 154 delegate_->OnNativeWidgetSizeChanged(params.bounds.size());
150 can_activate_ = params.can_activate; 155 can_activate_ = params.can_activate;
156 DCHECK(GetWidget()->GetRootView());
151 if (params.type != Widget::InitParams::TYPE_TOOLTIP && !params.child) { 157 if (params.type != Widget::InitParams::TYPE_TOOLTIP && !params.child) {
152 DCHECK(GetWidget()->GetRootView());
153 views::TooltipManagerViews* manager = new views::TooltipManagerViews( 158 views::TooltipManagerViews* manager = new views::TooltipManagerViews(
154 GetWidget()->GetRootView()); 159 GetWidget()->GetRootView());
155 tooltip_manager_.reset(manager); 160 tooltip_manager_.reset(manager);
156 } 161 }
162 drop_helper_.reset(new DropHelper(GetWidget()->GetRootView()));
157 } 163 }
158 164
159 NonClientFrameView* NativeWidgetAura::CreateNonClientFrameView() { 165 NonClientFrameView* NativeWidgetAura::CreateNonClientFrameView() {
160 return NULL; 166 return NULL;
161 } 167 }
162 168
163 void NativeWidgetAura::UpdateFrameAfterFrameChange() { 169 void NativeWidgetAura::UpdateFrameAfterFrameChange() {
164 // We don't support changing the frame type. 170 // We don't support changing the frame type.
165 NOTREACHED(); 171 NOTREACHED();
166 } 172 }
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 463
458 bool NativeWidgetAura::IsAccessibleWidget() const { 464 bool NativeWidgetAura::IsAccessibleWidget() const {
459 // http://crbug.com/102570 465 // http://crbug.com/102570
460 //NOTIMPLEMENTED(); 466 //NOTIMPLEMENTED();
461 return false; 467 return false;
462 } 468 }
463 469
464 void NativeWidgetAura::RunShellDrag(View* view, 470 void NativeWidgetAura::RunShellDrag(View* view,
465 const ui::OSExchangeData& data, 471 const ui::OSExchangeData& data,
466 int operation) { 472 int operation) {
467 // http://crbug.com/97845 473 aura::Desktop::GetInstance()->drag_drop_client()->StartDragAndDrop(
468 NOTIMPLEMENTED(); 474 data, operation);
469 } 475 }
470 476
471 void NativeWidgetAura::SchedulePaintInRect(const gfx::Rect& rect) { 477 void NativeWidgetAura::SchedulePaintInRect(const gfx::Rect& rect) {
472 if (window_) 478 if (window_)
473 window_->SchedulePaintInRect(rect); 479 window_->SchedulePaintInRect(rect);
474 } 480 }
475 481
476 void NativeWidgetAura::SetCursor(gfx::NativeCursor cursor) { 482 void NativeWidgetAura::SetCursor(gfx::NativeCursor cursor) {
477 cursor_ = cursor; 483 cursor_ = cursor;
478 aura::Desktop::GetInstance()->SetCursor(cursor); 484 aura::Desktop::GetInstance()->SetCursor(cursor);
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 tooltip_manager_.reset(); 632 tooltip_manager_.reset();
627 delegate_->OnNativeWidgetDestroyed(); 633 delegate_->OnNativeWidgetDestroyed();
628 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) 634 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET)
629 delete this; 635 delete this;
630 } 636 }
631 637
632 void NativeWidgetAura::OnWindowVisibilityChanged(bool visible) { 638 void NativeWidgetAura::OnWindowVisibilityChanged(bool visible) {
633 delegate_->OnNativeWidgetVisibilityChanged(visible); 639 delegate_->OnNativeWidgetVisibilityChanged(visible);
634 } 640 }
635 641
642 bool NativeWidgetAura::CanDrop(const aura::DropTargetEvent& event) {
643 DCHECK(drop_helper_.get() != NULL);
644 View* view = drop_helper_->target_view();
645 if (view)
646 return view->CanDrop(event.data());
647 return false;
648 }
649
650 void NativeWidgetAura::OnDragEntered(const aura::DropTargetEvent& event) {
651 DCHECK(drop_helper_.get() != NULL);
652 drop_helper_->OnDragOver(event.data(), event.location(),
653 event.source_operations());
654 }
655
656 int NativeWidgetAura::OnDragUpdated(const aura::DropTargetEvent& event) {
657 DCHECK(drop_helper_.get() != NULL);
658 return drop_helper_->OnDragOver(event.data(), event.location(),
659 event.source_operations());
660 }
661
662 void NativeWidgetAura::OnDragExited() {
663 DCHECK(drop_helper_.get() != NULL);
664 drop_helper_->OnDragExit();
665 }
666
667 int NativeWidgetAura::OnPerformDrop(const aura::DropTargetEvent& event) {
668 DCHECK(drop_helper_.get() != NULL);
669 return drop_helper_->OnDrop(event.data(), event.location(),
670 event.source_operations());
671 }
672
636 //////////////////////////////////////////////////////////////////////////////// 673 ////////////////////////////////////////////////////////////////////////////////
637 // Widget, public: 674 // Widget, public:
638 675
639 // static 676 // static
640 void Widget::NotifyLocaleChanged() { 677 void Widget::NotifyLocaleChanged() {
641 // http://crbug.com/102574 678 // http://crbug.com/102574
642 NOTIMPLEMENTED(); 679 NOTIMPLEMENTED();
643 } 680 }
644 681
645 // static 682 // static
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 758
722 // static 759 // static
723 bool NativeWidgetPrivate::IsMouseButtonDown() { 760 bool NativeWidgetPrivate::IsMouseButtonDown() {
724 // http://crbug.com/102577 761 // http://crbug.com/102577
725 NOTIMPLEMENTED(); 762 NOTIMPLEMENTED();
726 return false; 763 return false;
727 } 764 }
728 765
729 } // namespace internal 766 } // namespace internal
730 } // namespace views 767 } // namespace views
OLDNEW
« ui/aura_shell/drag_drop_controller.cc ('K') | « views/widget/native_widget_aura.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698