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

Side by Side Diff: views/widget/widget_win.h

Issue 6756043: Consolidate Widget Event code, other cleanup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync and merge. Created 9 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 | Annotate | Revision Log
« no previous file with comments | « views/widget/widget_gtk.cc ('k') | views/widget/widget_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #ifndef VIEWS_WIDGET_WIDGET_WIN_H_ 5 #ifndef VIEWS_WIDGET_WIDGET_WIN_H_
6 #define VIEWS_WIDGET_WIDGET_WIN_H_ 6 #define VIEWS_WIDGET_WIDGET_WIN_H_
7 #pragma once 7 #pragma once
8 8
9 #include <atlbase.h> 9 #include <atlbase.h>
10 #include <atlapp.h> 10 #include <atlapp.h>
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 void ResetLastMouseMoveFlag() { 199 void ResetLastMouseMoveFlag() {
200 last_mouse_event_was_move_ = false; 200 last_mouse_event_was_move_ = false;
201 } 201 }
202 202
203 // Overridden from NativeWidget: 203 // Overridden from NativeWidget:
204 virtual Widget* GetWidget() OVERRIDE; 204 virtual Widget* GetWidget() OVERRIDE;
205 virtual void SetNativeWindowProperty(const char* name, void* value) OVERRIDE; 205 virtual void SetNativeWindowProperty(const char* name, void* value) OVERRIDE;
206 virtual void* GetNativeWindowProperty(const char* name) OVERRIDE; 206 virtual void* GetNativeWindowProperty(const char* name) OVERRIDE;
207 virtual TooltipManager* GetTooltipManager() const OVERRIDE; 207 virtual TooltipManager* GetTooltipManager() const OVERRIDE;
208 virtual bool IsScreenReaderActive() const OVERRIDE; 208 virtual bool IsScreenReaderActive() const OVERRIDE;
209 virtual void SetNativeCapture() OVERRIDE; 209 virtual void SetMouseCapture() OVERRIDE;
210 virtual void ReleaseNativeCapture() OVERRIDE; 210 virtual void ReleaseMouseCapture() OVERRIDE;
211 virtual bool HasNativeCapture() const OVERRIDE; 211 virtual bool HasMouseCapture() const OVERRIDE;
212 virtual gfx::Rect GetWindowScreenBounds() const OVERRIDE; 212 virtual gfx::Rect GetWindowScreenBounds() const OVERRIDE;
213 virtual gfx::Rect GetClientAreaScreenBounds() const OVERRIDE; 213 virtual gfx::Rect GetClientAreaScreenBounds() const OVERRIDE;
214 virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE; 214 virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE;
215 virtual void MoveAbove(gfx::NativeView native_view) OVERRIDE; 215 virtual void MoveAbove(gfx::NativeView native_view) OVERRIDE;
216 virtual void SetShape(gfx::NativeRegion shape) OVERRIDE; 216 virtual void SetShape(gfx::NativeRegion shape) OVERRIDE;
217 virtual void Close() OVERRIDE; 217 virtual void Close() OVERRIDE;
218 virtual void CloseNow() OVERRIDE; 218 virtual void CloseNow() OVERRIDE;
219 virtual void Show() OVERRIDE; 219 virtual void Show() OVERRIDE;
220 virtual void Hide() OVERRIDE; 220 virtual void Hide() OVERRIDE;
221 virtual void SetOpacity(unsigned char opacity) OVERRIDE; 221 virtual void SetOpacity(unsigned char opacity) OVERRIDE;
(...skipping 17 matching lines...) Expand all
239 virtual HICON GetDefaultWindowIcon() const OVERRIDE; 239 virtual HICON GetDefaultWindowIcon() const OVERRIDE;
240 virtual LRESULT OnWndProc(UINT message, 240 virtual LRESULT OnWndProc(UINT message,
241 WPARAM w_param, 241 WPARAM w_param,
242 LPARAM l_param) OVERRIDE; 242 LPARAM l_param) OVERRIDE;
243 243
244 // Message Handlers ---------------------------------------------------------- 244 // Message Handlers ----------------------------------------------------------
245 245
246 BEGIN_MSG_MAP_EX(WidgetWin) 246 BEGIN_MSG_MAP_EX(WidgetWin)
247 // Range handlers must go first! 247 // Range handlers must go first!
248 MESSAGE_RANGE_HANDLER_EX(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange) 248 MESSAGE_RANGE_HANDLER_EX(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange)
249 MESSAGE_RANGE_HANDLER_EX(WM_NCMOUSEMOVE, WM_NCXBUTTONDBLCLK, OnNCMouseRange) 249 MESSAGE_RANGE_HANDLER_EX(WM_NCMOUSEMOVE, WM_NCXBUTTONDBLCLK, OnMouseRange)
250 250
251 // Reflected message handler 251 // Reflected message handler
252 MESSAGE_HANDLER_EX(kReflectedMessage, OnReflectedMessage) 252 MESSAGE_HANDLER_EX(kReflectedMessage, OnReflectedMessage)
253 253
254 // CustomFrameWindow hacks 254 // CustomFrameWindow hacks
255 MESSAGE_HANDLER_EX(WM_NCUAHDRAWCAPTION, OnNCUAHDrawCaption) 255 MESSAGE_HANDLER_EX(WM_NCUAHDRAWCAPTION, OnNCUAHDrawCaption)
256 MESSAGE_HANDLER_EX(WM_NCUAHDRAWFRAME, OnNCUAHDrawFrame) 256 MESSAGE_HANDLER_EX(WM_NCUAHDRAWFRAME, OnNCUAHDrawFrame)
257 257
258 // Vista and newer 258 // Vista and newer
259 MESSAGE_HANDLER_EX(WM_DWMCOMPOSITIONCHANGED, OnDwmCompositionChanged) 259 MESSAGE_HANDLER_EX(WM_DWMCOMPOSITIONCHANGED, OnDwmCompositionChanged)
260 260
261 // Non-atlcrack.h handlers 261 // Non-atlcrack.h handlers
262 MESSAGE_HANDLER_EX(WM_GETOBJECT, OnGetObject) 262 MESSAGE_HANDLER_EX(WM_GETOBJECT, OnGetObject)
263 263
264 // Mouse events. 264 // Mouse events.
265 MESSAGE_HANDLER_EX(WM_MOUSEACTIVATE, OnMouseActivate) 265 MESSAGE_HANDLER_EX(WM_MOUSEACTIVATE, OnMouseActivate)
266 MESSAGE_HANDLER_EX(WM_MOUSELEAVE, OnMouseLeave) 266 MESSAGE_HANDLER_EX(WM_MOUSELEAVE, OnMouseRange)
267 MESSAGE_HANDLER_EX(WM_MOUSEMOVE, OnMouseMove)
268 MESSAGE_HANDLER_EX(WM_MOUSEWHEEL, OnMouseWheel) 267 MESSAGE_HANDLER_EX(WM_MOUSEWHEEL, OnMouseWheel)
269 MESSAGE_HANDLER_EX(WM_NCMOUSELEAVE, OnNCMouseLeave) 268 MESSAGE_HANDLER_EX(WM_NCMOUSELEAVE, OnMouseRange)
270 MESSAGE_HANDLER_EX(WM_NCMOUSEMOVE, OnNCMouseMove)
271 269
272 // Key events. 270 // Key events.
273 MESSAGE_HANDLER_EX(WM_KEYDOWN, OnKeyDown) 271 MESSAGE_HANDLER_EX(WM_KEYDOWN, OnKeyDown)
274 MESSAGE_HANDLER_EX(WM_KEYUP, OnKeyUp) 272 MESSAGE_HANDLER_EX(WM_KEYUP, OnKeyUp)
275 MESSAGE_HANDLER_EX(WM_SYSKEYDOWN, OnKeyDown); 273 MESSAGE_HANDLER_EX(WM_SYSKEYDOWN, OnKeyDown);
276 MESSAGE_HANDLER_EX(WM_SYSKEYUP, OnKeyUp); 274 MESSAGE_HANDLER_EX(WM_SYSKEYUP, OnKeyUp);
277 275
278 // This list is in _ALPHABETICAL_ order! OR I WILL HURT YOU. 276 // This list is in _ALPHABETICAL_ order! OR I WILL HURT YOU.
279 MSG_WM_ACTIVATE(OnActivate) 277 MSG_WM_ACTIVATE(OnActivate)
280 MSG_WM_ACTIVATEAPP(OnActivateApp) 278 MSG_WM_ACTIVATEAPP(OnActivateApp)
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 virtual void OnExitSizeMove(); 346 virtual void OnExitSizeMove();
349 virtual LRESULT OnGetObject(UINT uMsg, WPARAM w_param, LPARAM l_param); 347 virtual LRESULT OnGetObject(UINT uMsg, WPARAM w_param, LPARAM l_param);
350 virtual void OnGetMinMaxInfo(MINMAXINFO* minmax_info); 348 virtual void OnGetMinMaxInfo(MINMAXINFO* minmax_info);
351 virtual void OnHScroll(int scroll_type, short position, HWND scrollbar); 349 virtual void OnHScroll(int scroll_type, short position, HWND scrollbar);
352 virtual void OnInitMenu(HMENU menu); 350 virtual void OnInitMenu(HMENU menu);
353 virtual void OnInitMenuPopup(HMENU menu, UINT position, BOOL is_system_menu); 351 virtual void OnInitMenuPopup(HMENU menu, UINT position, BOOL is_system_menu);
354 virtual LRESULT OnKeyDown(UINT message, WPARAM w_param, LPARAM l_param); 352 virtual LRESULT OnKeyDown(UINT message, WPARAM w_param, LPARAM l_param);
355 virtual LRESULT OnKeyUp(UINT message, WPARAM w_param, LPARAM l_param); 353 virtual LRESULT OnKeyUp(UINT message, WPARAM w_param, LPARAM l_param);
356 virtual void OnKillFocus(HWND focused_window); 354 virtual void OnKillFocus(HWND focused_window);
357 virtual LRESULT OnMouseActivate(UINT message, WPARAM w_param, LPARAM l_param); 355 virtual LRESULT OnMouseActivate(UINT message, WPARAM w_param, LPARAM l_param);
358 virtual LRESULT OnMouseLeave(UINT message, WPARAM w_param, LPARAM l_param);
359 virtual LRESULT OnMouseMove(UINT message, WPARAM w_param, LPARAM l_param);
360 virtual LRESULT OnMouseRange(UINT message, WPARAM w_param, LPARAM l_param); 356 virtual LRESULT OnMouseRange(UINT message, WPARAM w_param, LPARAM l_param);
361 virtual LRESULT OnMouseWheel(UINT message, WPARAM w_param, LPARAM l_param); 357 virtual LRESULT OnMouseWheel(UINT message, WPARAM w_param, LPARAM l_param);
362 virtual void OnMove(const CPoint& point); 358 virtual void OnMove(const CPoint& point);
363 virtual void OnMoving(UINT param, LPRECT new_bounds); 359 virtual void OnMoving(UINT param, LPRECT new_bounds);
364 virtual LRESULT OnNCActivate(BOOL active); 360 virtual LRESULT OnNCActivate(BOOL active);
365 virtual LRESULT OnNCCalcSize(BOOL w_param, LPARAM l_param); 361 virtual LRESULT OnNCCalcSize(BOOL w_param, LPARAM l_param);
366 virtual LRESULT OnNCHitTest(const CPoint& pt); 362 virtual LRESULT OnNCHitTest(const CPoint& pt);
367 virtual LRESULT OnNCMouseLeave(UINT message, WPARAM w_param, LPARAM l_param);
368 virtual LRESULT OnNCMouseMove(UINT message, WPARAM w_param, LPARAM l_param);
369 virtual LRESULT OnNCMouseRange(UINT message, WPARAM w_param, LPARAM l_param);
370 virtual void OnNCPaint(HRGN rgn); 363 virtual void OnNCPaint(HRGN rgn);
371 virtual LRESULT OnNCUAHDrawCaption(UINT msg, 364 virtual LRESULT OnNCUAHDrawCaption(UINT msg,
372 WPARAM w_param, 365 WPARAM w_param,
373 LPARAM l_param); 366 LPARAM l_param);
374 virtual LRESULT OnNCUAHDrawFrame(UINT msg, WPARAM w_param, LPARAM l_param); 367 virtual LRESULT OnNCUAHDrawFrame(UINT msg, WPARAM w_param, LPARAM l_param);
375 virtual LRESULT OnNotify(int w_param, NMHDR* l_param); 368 virtual LRESULT OnNotify(int w_param, NMHDR* l_param);
376 virtual void OnPaint(HDC dc); 369 virtual void OnPaint(HDC dc);
377 virtual LRESULT OnPowerBroadcast(DWORD power_event, DWORD data); 370 virtual LRESULT OnPowerBroadcast(DWORD power_event, DWORD data);
378 virtual LRESULT OnReflectedMessage(UINT msg, WPARAM w_param, LPARAM l_param); 371 virtual LRESULT OnReflectedMessage(UINT msg, WPARAM w_param, LPARAM l_param);
379 virtual void OnSetFocus(HWND focused_window); 372 virtual void OnSetFocus(HWND focused_window);
380 virtual LRESULT OnSetIcon(UINT size_type, HICON new_icon); 373 virtual LRESULT OnSetIcon(UINT size_type, HICON new_icon);
381 virtual LRESULT OnSetText(const wchar_t* text); 374 virtual LRESULT OnSetText(const wchar_t* text);
382 virtual void OnSettingChange(UINT flags, const wchar_t* section); 375 virtual void OnSettingChange(UINT flags, const wchar_t* section);
383 virtual void OnSize(UINT param, const CSize& size); 376 virtual void OnSize(UINT param, const CSize& size);
384 virtual void OnSysCommand(UINT notification_code, CPoint click); 377 virtual void OnSysCommand(UINT notification_code, CPoint click);
385 virtual void OnThemeChanged(); 378 virtual void OnThemeChanged();
386 virtual void OnVScroll(int scroll_type, short position, HWND scrollbar); 379 virtual void OnVScroll(int scroll_type, short position, HWND scrollbar);
387 virtual void OnWindowPosChanging(WINDOWPOS* window_pos); 380 virtual void OnWindowPosChanging(WINDOWPOS* window_pos);
388 virtual void OnWindowPosChanged(WINDOWPOS* window_pos); 381 virtual void OnWindowPosChanged(WINDOWPOS* window_pos);
389 382
390 // Deletes this window as it is destroyed, override to provide different 383 // Deletes this window as it is destroyed, override to provide different
391 // behavior. 384 // behavior.
392 virtual void OnFinalMessage(HWND window); 385 virtual void OnFinalMessage(HWND window);
393 386
394 // Start tracking all mouse events so that this window gets sent mouse leave 387 // Start tracking all mouse events so that this window gets sent mouse leave
395 // messages too. 388 // messages too.
396 void TrackMouseEvents(DWORD mouse_tracking_flags); 389 void TrackMouseEvents(DWORD mouse_tracking_flags);
397 390
398 // Actually handle mouse events. These functions are called by subclasses who
399 // override the message handlers above to do the actual real work of handling
400 // the event in the View system.
401 bool ProcessMousePressed(UINT message, WPARAM w_param, LPARAM l_param);
402 bool ProcessMouseReleased(UINT message, WPARAM w_param, LPARAM l_param);
403 bool ProcessMouseMoved(UINT message, WPARAM w_param, LPARAM l_param);
404 void ProcessMouseExited(UINT message, WPARAM w_param, LPARAM l_param);
405
406 // Called when a MSAA screen reader client is detected. 391 // Called when a MSAA screen reader client is detected.
407 virtual void OnScreenReaderDetected(); 392 virtual void OnScreenReaderDetected();
408 393
409 // Returns whether capture should be released on mouse release. The default
410 // is true.
411 virtual bool ReleaseCaptureOnMouseReleased();
412
413 // The TooltipManager. 394 // The TooltipManager.
414 // WARNING: RootView's destructor calls into the TooltipManager. As such, this 395 // WARNING: RootView's destructor calls into the TooltipManager. As such, this
415 // must be destroyed AFTER root_view_. 396 // must be destroyed AFTER root_view_.
416 scoped_ptr<TooltipManagerWin> tooltip_manager_; 397 scoped_ptr<TooltipManagerWin> tooltip_manager_;
417 398
418 scoped_refptr<DropTargetWin> drop_target_; 399 scoped_refptr<DropTargetWin> drop_target_;
419 400
420 // If true, the mouse is currently down.
421 bool is_mouse_down_;
422
423 // Are a subclass of WindowWin? 401 // Are a subclass of WindowWin?
424 bool is_window_; 402 bool is_window_;
425 403
426 private: 404 private:
427 typedef ScopedVector<ui::ViewProp> ViewProps; 405 typedef ScopedVector<ui::ViewProp> ViewProps;
428 406
429 // Implementation of GetWindow. Ascends the parents of |hwnd| returning the 407 // Implementation of GetWindow. Ascends the parents of |hwnd| returning the
430 // first ancestor that is a Window. 408 // first ancestor that is a Window.
431 static Window* GetWindowImpl(HWND hwnd); 409 static Window* GetWindowImpl(HWND hwnd);
432 410
433 // Returns the RootView that contains the focused view, or NULL if there is no 411 // Returns the RootView that contains the focused view, or NULL if there is no
434 // focused view. 412 // focused view.
435 RootView* GetFocusedViewRootView(); 413 RootView* GetFocusedViewRootView();
436 414
437 // Called after the WM_ACTIVATE message has been processed by the default 415 // Called after the WM_ACTIVATE message has been processed by the default
438 // windows procedure. 416 // windows procedure.
439 static void PostProcessActivateMessage(WidgetWin* widget, 417 static void PostProcessActivateMessage(WidgetWin* widget,
440 int activation_state); 418 int activation_state);
441 419
442 // Fills out a MSG struct with the supplied values.
443 void MakeMSG(MSG* msg, UINT message, WPARAM w_param, LPARAM l_param,
444 DWORD time = 0, LONG x = 0, LONG y = 0) const;
445
446 // Synchronously paints the invalid contents of the Widget. 420 // Synchronously paints the invalid contents of the Widget.
447 void RedrawInvalidRect(); 421 void RedrawInvalidRect();
448 422
449 // Synchronously updates the invalid contents of the Widget. Valid for 423 // Synchronously updates the invalid contents of the Widget. Valid for
450 // layered windows only. 424 // layered windows only.
451 void RedrawLayeredWindowContents(); 425 void RedrawLayeredWindowContents();
452 426
453 // Responds to the client area changing size, either at window creation time 427 // Responds to the client area changing size, either at window creation time
454 // or subsequently. 428 // or subsequently.
455 void ClientAreaSizeChanged(); 429 void ClientAreaSizeChanged();
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 ScopedRunnableMethodFactory<WidgetWin> paint_layered_window_factory_; 471 ScopedRunnableMethodFactory<WidgetWin> paint_layered_window_factory_;
498 472
499 // Whether or not the window should delete itself when it is destroyed. 473 // Whether or not the window should delete itself when it is destroyed.
500 // Set this to false via its setter for stack allocated instances. 474 // Set this to false via its setter for stack allocated instances.
501 bool delete_on_destroy_; 475 bool delete_on_destroy_;
502 476
503 // True if we are allowed to update the layered window from the DIB backing 477 // True if we are allowed to update the layered window from the DIB backing
504 // store if necessary. 478 // store if necessary.
505 bool can_update_layered_window_; 479 bool can_update_layered_window_;
506 480
507 // The following are used to detect duplicate mouse move events and not
508 // deliver them. Displaying a window may result in the system generating
509 // duplicate move events even though the mouse hasn't moved.
510
511 // If true, the last event was a mouse move event.
512 bool last_mouse_event_was_move_;
513
514 // Coordinates of the last mouse move event.
515 int last_mouse_move_x_;
516 int last_mouse_move_y_;
517
518 // Whether the focus should be restored next time we get enabled. Needed to 481 // Whether the focus should be restored next time we get enabled. Needed to
519 // restore focus correctly when Windows modal dialogs are displayed. 482 // restore focus correctly when Windows modal dialogs are displayed.
520 bool restore_focus_when_enabled_; 483 bool restore_focus_when_enabled_;
521 484
522 // Instance of accessibility information and handling for MSAA root 485 // Instance of accessibility information and handling for MSAA root
523 base::win::ScopedComPtr<IAccessible> accessibility_root_; 486 base::win::ScopedComPtr<IAccessible> accessibility_root_;
524 487
525 // Value determines whether the Widget is customized for accessibility. 488 // Value determines whether the Widget is customized for accessibility.
526 static bool screen_reader_active_; 489 static bool screen_reader_active_;
527 490
(...skipping 13 matching lines...) Expand all
541 gfx::NativeCursor previous_cursor_; 504 gfx::NativeCursor previous_cursor_;
542 505
543 ViewProps props_; 506 ViewProps props_;
544 507
545 DISALLOW_COPY_AND_ASSIGN(WidgetWin); 508 DISALLOW_COPY_AND_ASSIGN(WidgetWin);
546 }; 509 };
547 510
548 } // namespace views 511 } // namespace views
549 512
550 #endif // VIEWS_WIDGET_WIDGET_WIN_H_ 513 #endif // VIEWS_WIDGET_WIDGET_WIN_H_
OLDNEW
« no previous file with comments | « views/widget/widget_gtk.cc ('k') | views/widget/widget_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698