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

Side by Side Diff: ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.h

Issue 1868363002: Replace scoped_ptr with std::unique_ptr in //ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scopedptrcc
Patch Set: scopedptrui: rebase-make_scoped_ptr Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #ifndef UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_DRAG_DROP_CLIENT_AURAX11_H_ 5 #ifndef UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_DRAG_DROP_CLIENT_AURAX11_H_
6 #define UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_DRAG_DROP_CLIENT_AURAX11_H_ 6 #define UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_DRAG_DROP_CLIENT_AURAX11_H_
7 7
8 #include <X11/Xlib.h> 8 #include <X11/Xlib.h>
9
10 #include <memory>
9 #include <set> 11 #include <set>
10 #include <vector> 12 #include <vector>
11 13
12 #include "base/compiler_specific.h" 14 #include "base/compiler_specific.h"
13 #include "base/macros.h" 15 #include "base/macros.h"
14 #include "base/memory/scoped_ptr.h"
15 #include "base/memory/weak_ptr.h" 16 #include "base/memory/weak_ptr.h"
16 #include "base/timer/timer.h" 17 #include "base/timer/timer.h"
17 #include "ui/aura/window_observer.h" 18 #include "ui/aura/window_observer.h"
18 #include "ui/base/cursor/cursor.h" 19 #include "ui/base/cursor/cursor.h"
19 #include "ui/base/dragdrop/drag_drop_types.h" 20 #include "ui/base/dragdrop/drag_drop_types.h"
20 #include "ui/gfx/geometry/point.h" 21 #include "ui/gfx/geometry/point.h"
21 #include "ui/gfx/x/x11_atom_cache.h" 22 #include "ui/gfx/x/x11_atom_cache.h"
22 #include "ui/views/views_export.h" 23 #include "ui/views/views_export.h"
23 #include "ui/views/widget/desktop_aura/x11_move_loop_delegate.h" 24 #include "ui/views/widget/desktop_aura/x11_move_loop_delegate.h"
24 #include "ui/wm/public/drag_drop_client.h" 25 #include "ui/wm/public/drag_drop_client.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 void OnMouseMovement(const gfx::Point& screen_point, 100 void OnMouseMovement(const gfx::Point& screen_point,
100 int flags, 101 int flags,
101 base::TimeDelta event_time) override; 102 base::TimeDelta event_time) override;
102 void OnMouseReleased() override; 103 void OnMouseReleased() override;
103 void OnMoveLoopEnded() override; 104 void OnMoveLoopEnded() override;
104 105
105 protected: 106 protected:
106 // The following methods are virtual for the sake of testing. 107 // The following methods are virtual for the sake of testing.
107 108
108 // Creates a move loop. 109 // Creates a move loop.
109 virtual scoped_ptr<X11MoveLoop> CreateMoveLoop( 110 virtual std::unique_ptr<X11MoveLoop> CreateMoveLoop(
110 X11MoveLoopDelegate* delegate); 111 X11MoveLoopDelegate* delegate);
111 112
112 // Finds the topmost X11 window at |screen_point| and returns it if it is 113 // Finds the topmost X11 window at |screen_point| and returns it if it is
113 // Xdnd aware. Returns NULL otherwise. 114 // Xdnd aware. Returns NULL otherwise.
114 virtual ::Window FindWindowFor(const gfx::Point& screen_point); 115 virtual ::Window FindWindowFor(const gfx::Point& screen_point);
115 116
116 // Sends |xev| to |xid|, optionally short circuiting the round trip to the X 117 // Sends |xev| to |xid|, optionally short circuiting the round trip to the X
117 // server. 118 // server.
118 virtual void SendXClientEvent(::Window xid, XEvent* xev); 119 virtual void SendXClientEvent(::Window xid, XEvent* xev);
119 120
(...skipping 21 matching lines...) Expand all
141 // the mouse is released. 142 // the mouse is released.
142 void StartEndMoveLoopTimer(); 143 void StartEndMoveLoopTimer();
143 144
144 // Ends the move loop. 145 // Ends the move loop.
145 void EndMoveLoop(); 146 void EndMoveLoop();
146 147
147 // When we receive an position x11 message, we need to translate that into 148 // When we receive an position x11 message, we need to translate that into
148 // the underlying aura::Window representation, as moves internal to the X11 149 // the underlying aura::Window representation, as moves internal to the X11
149 // window can cause internal drag leave and enter messages. 150 // window can cause internal drag leave and enter messages.
150 void DragTranslate(const gfx::Point& root_window_location, 151 void DragTranslate(const gfx::Point& root_window_location,
151 scoped_ptr<ui::OSExchangeData>* data, 152 std::unique_ptr<ui::OSExchangeData>* data,
152 scoped_ptr<ui::DropTargetEvent>* event, 153 std::unique_ptr<ui::DropTargetEvent>* event,
153 aura::client::DragDropDelegate** delegate); 154 aura::client::DragDropDelegate** delegate);
154 155
155 // Called when we need to notify the current aura::Window that we're no 156 // Called when we need to notify the current aura::Window that we're no
156 // longer dragging over it. 157 // longer dragging over it.
157 void NotifyDragLeave(); 158 void NotifyDragLeave();
158 159
159 // Converts our bitfield of actions into an Atom that represents what action 160 // Converts our bitfield of actions into an Atom that represents what action
160 // we're most likely to take on drop. 161 // we're most likely to take on drop.
161 ::Atom DragOperationToAtom(int drag_operation); 162 ::Atom DragOperationToAtom(int drag_operation);
162 163
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 195
195 // Creates a widget for the user to drag around. 196 // Creates a widget for the user to drag around.
196 void CreateDragWidget(const gfx::ImageSkia& image); 197 void CreateDragWidget(const gfx::ImageSkia& image);
197 198
198 // Returns true if |image| has any visible regions (defined as having a pixel 199 // Returns true if |image| has any visible regions (defined as having a pixel
199 // with alpha > 32). 200 // with alpha > 32).
200 bool IsValidDragImage(const gfx::ImageSkia& image); 201 bool IsValidDragImage(const gfx::ImageSkia& image);
201 202
202 // A nested message loop that notifies this object of events through the 203 // A nested message loop that notifies this object of events through the
203 // X11MoveLoopDelegate interface. 204 // X11MoveLoopDelegate interface.
204 scoped_ptr<X11MoveLoop> move_loop_; 205 std::unique_ptr<X11MoveLoop> move_loop_;
205 206
206 aura::Window* root_window_; 207 aura::Window* root_window_;
207 208
208 DesktopNativeCursorManager* cursor_manager_; 209 DesktopNativeCursorManager* cursor_manager_;
209 210
210 Display* xdisplay_; 211 Display* xdisplay_;
211 ::Window xwindow_; 212 ::Window xwindow_;
212 213
213 ui::X11AtomCache atom_cache_; 214 ui::X11AtomCache atom_cache_;
214 215
215 // Target side information. 216 // Target side information.
216 class X11DragContext; 217 class X11DragContext;
217 scoped_ptr<X11DragContext> target_current_context_; 218 std::unique_ptr<X11DragContext> target_current_context_;
218 219
219 // The modifier state for the most recent mouse move. 220 // The modifier state for the most recent mouse move.
220 int current_modifier_state_; 221 int current_modifier_state_;
221 222
222 // The Aura window that is currently under the cursor. We need to manually 223 // The Aura window that is currently under the cursor. We need to manually
223 // keep track of this because Windows will only call our drag enter method 224 // keep track of this because Windows will only call our drag enter method
224 // once when the user enters the associated X Window. But inside that X 225 // once when the user enters the associated X Window. But inside that X
225 // Window there could be multiple aura windows, so we need to generate drag 226 // Window there could be multiple aura windows, so we need to generate drag
226 // enter events for them. 227 // enter events for them.
227 aura::Window* target_window_; 228 aura::Window* target_window_;
228 229
229 // Because Xdnd messages don't contain the position in messages other than 230 // Because Xdnd messages don't contain the position in messages other than
230 // the XdndPosition message, we must manually keep track of the last position 231 // the XdndPosition message, we must manually keep track of the last position
231 // change. 232 // change.
232 gfx::Point target_window_location_; 233 gfx::Point target_window_location_;
233 gfx::Point target_window_root_location_; 234 gfx::Point target_window_root_location_;
234 235
235 // In the Xdnd protocol, we aren't supposed to send another XdndPosition 236 // In the Xdnd protocol, we aren't supposed to send another XdndPosition
236 // message until we have received a confirming XdndStatus message. 237 // message until we have received a confirming XdndStatus message.
237 bool waiting_on_status_; 238 bool waiting_on_status_;
238 239
239 // If we would send an XdndPosition message while we're waiting for an 240 // If we would send an XdndPosition message while we're waiting for an
240 // XdndStatus response, we need to cache the latest details we'd send. 241 // XdndStatus response, we need to cache the latest details we'd send.
241 scoped_ptr<std::pair<gfx::Point, unsigned long> > next_position_message_; 242 std::unique_ptr<std::pair<gfx::Point, unsigned long>> next_position_message_;
242 243
243 // Reprocesses the most recent mouse move event if the mouse has not moved 244 // Reprocesses the most recent mouse move event if the mouse has not moved
244 // in a while in case the window stacking order has changed and 245 // in a while in case the window stacking order has changed and
245 // |source_current_window_| needs to be updated. 246 // |source_current_window_| needs to be updated.
246 base::OneShotTimer repeat_mouse_move_timer_; 247 base::OneShotTimer repeat_mouse_move_timer_;
247 248
248 // When the mouse is released, we need to wait for the last XdndStatus message 249 // When the mouse is released, we need to wait for the last XdndStatus message
249 // only if we have previously received a status message from 250 // only if we have previously received a status message from
250 // |source_current_window_|. 251 // |source_current_window_|.
251 bool status_received_since_enter_; 252 bool status_received_since_enter_;
(...skipping 16 matching lines...) Expand all
268 // is DRAG_NONE if we haven't sent out an XdndPosition message yet, haven't 269 // is DRAG_NONE if we haven't sent out an XdndPosition message yet, haven't
269 // yet received an XdndStatus or if the other window has told us that there's 270 // yet received an XdndStatus or if the other window has told us that there's
270 // no action that we can agree on. 271 // no action that we can agree on.
271 ui::DragDropTypes::DragOperation negotiated_operation_; 272 ui::DragDropTypes::DragOperation negotiated_operation_;
272 273
273 // Ends the move loop if the target is too slow to respond after the mouse is 274 // Ends the move loop if the target is too slow to respond after the mouse is
274 // released. 275 // released.
275 base::OneShotTimer end_move_loop_timer_; 276 base::OneShotTimer end_move_loop_timer_;
276 277
277 // Widget that the user drags around. May be NULL. 278 // Widget that the user drags around. May be NULL.
278 scoped_ptr<Widget> drag_widget_; 279 std::unique_ptr<Widget> drag_widget_;
279 280
280 // The offset of |drag_widget_| relative to the mouse position. 281 // The offset of |drag_widget_| relative to the mouse position.
281 gfx::Vector2d drag_widget_offset_; 282 gfx::Vector2d drag_widget_offset_;
282 283
283 base::WeakPtrFactory<DesktopDragDropClientAuraX11> weak_ptr_factory_; 284 base::WeakPtrFactory<DesktopDragDropClientAuraX11> weak_ptr_factory_;
284 285
285 DISALLOW_COPY_AND_ASSIGN(DesktopDragDropClientAuraX11); 286 DISALLOW_COPY_AND_ASSIGN(DesktopDragDropClientAuraX11);
286 }; 287 };
287 288
288 } // namespace views 289 } // namespace views
289 290
290 #endif // UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_DRAG_DROP_CLIENT_AURAX11_H_ 291 #endif // UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_DRAG_DROP_CLIENT_AURAX11_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698