| Index: ui/views/cocoa/bridged_native_widget.h
|
| diff --git a/ui/views/cocoa/bridged_native_widget.h b/ui/views/cocoa/bridged_native_widget.h
|
| index fc521597ee7fc79d28bc3a367c2d08a99890ee7b..ee67c1dd11819b08e7c5df6804e60da7348ca441 100644
|
| --- a/ui/views/cocoa/bridged_native_widget.h
|
| +++ b/ui/views/cocoa/bridged_native_widget.h
|
| @@ -17,6 +17,7 @@
|
| #include "ui/compositor/layer_owner.h"
|
| #import "ui/views/cocoa/bridged_native_widget_owner.h"
|
| #import "ui/views/cocoa/cocoa_mouse_capture_delegate.h"
|
| +#import "ui/views/cocoa/cocoa_window_move_loop.h"
|
| #import "ui/views/focus/focus_manager.h"
|
| #include "ui/views/views_export.h"
|
| #include "ui/views/widget/widget.h"
|
| @@ -34,6 +35,7 @@ class BridgedNativeWidgetTestApi;
|
| }
|
|
|
| class CocoaMouseCapture;
|
| +class CocoaWindowMoveLoop;
|
| class NativeWidgetMac;
|
| class View;
|
|
|
| @@ -99,6 +101,12 @@ class VIEWS_EXPORT BridgedNativeWidget
|
| void ReleaseCapture();
|
| bool HasCapture();
|
|
|
| + // Start moving the window, pinned to the mouse cursor, and monitor events.
|
| + // Return MOVE_LOOP_SUCCESSFUL on mouse up or MOVE_LOOP_CANCELED on escape.
|
| + Widget::MoveLoopResult RunMoveLoop(const gfx::Vector2d& drag_offset);
|
| + void EndMoveLoop();
|
| + bool IsRunMoveLoopActive() const;
|
| +
|
| // See views::Widget.
|
| void SetNativeWindowProperty(const char* key, void* value);
|
| void* GetNativeWindowProperty(const char* key) const;
|
| @@ -125,6 +133,10 @@ class VIEWS_EXPORT BridgedNativeWidget
|
| // Called by the NSWindowDelegate when the size of the window changes.
|
| void OnSizeChanged();
|
|
|
| + // Called once by the NSWindowDelegate when the position of the window has
|
| + // changed. Called for each mouse event during RunMoveLoop().
|
| + void OnPositionChanged();
|
| +
|
| // Called by the NSWindowDelegate when the visibility of the window may have
|
| // changed. For example, due to a (de)miniaturize operation, or the window
|
| // being reordered in (or out of) the screen list.
|
| @@ -185,8 +197,11 @@ class VIEWS_EXPORT BridgedNativeWidget
|
| // Overridden from ui::internal::InputMethodDelegate:
|
| ui::EventDispatchDetails DispatchKeyEventPostIME(ui::KeyEvent* key) override;
|
|
|
| + static void IgnoreNextMouseDownForDraggableRegions();
|
| +
|
| private:
|
| friend class test::BridgedNativeWidgetTestApi;
|
| + friend class CocoaWindowMoveLoop;
|
|
|
| // Closes all child windows. BridgedNativeWidget children will be destroyed.
|
| void RemoveOrDestroyChildren();
|
| @@ -262,6 +277,7 @@ class VIEWS_EXPORT BridgedNativeWidget
|
| base::scoped_nsobject<BridgedContentView> bridged_view_;
|
| scoped_ptr<ui::InputMethod> input_method_;
|
| scoped_ptr<CocoaMouseCapture> mouse_capture_;
|
| + scoped_ptr<CocoaWindowMoveLoop> window_move_loop_;
|
| scoped_ptr<TooltipManager> tooltip_manager_;
|
| FocusManager* focus_manager_; // Weak. Owned by our Widget.
|
| Widget::InitParams::Type widget_type_;
|
| @@ -278,6 +294,8 @@ class VIEWS_EXPORT BridgedNativeWidget
|
| // has its own copy, but doesn't provide access to it).
|
| gfx::Rect bounds_before_fullscreen_;
|
|
|
| + base::RunLoop* drag_run_loop_ = nullptr;
|
| +
|
| // Whether this window wants to be fullscreen. If a fullscreen animation is in
|
| // progress then it might not be actually fullscreen.
|
| bool target_fullscreen_state_;
|
|
|