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

Side by Side Diff: ui/views/widget/native_widget_win.h

Issue 10871020: Move Fullscreen stuff onto FullscreenHandler type that hangs off NWW. This is the first step in mov… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 4 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 | « ui/views/views.gyp ('k') | ui/views/widget/native_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) 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_NATIVE_WIDGET_WIN_H_ 5 #ifndef UI_VIEWS_WIDGET_NATIVE_WIDGET_WIN_H_
6 #define UI_VIEWS_WIDGET_NATIVE_WIDGET_WIN_H_ 6 #define UI_VIEWS_WIDGET_NATIVE_WIDGET_WIN_H_
7 7
8 #include <atlbase.h> 8 #include <atlbase.h>
9 #include <atlapp.h> 9 #include <atlapp.h>
10 #include <atlcrack.h> 10 #include <atlcrack.h>
(...skipping 23 matching lines...) Expand all
34 34
35 namespace gfx { 35 namespace gfx {
36 class Canvas; 36 class Canvas;
37 class Font; 37 class Font;
38 class Rect; 38 class Rect;
39 } 39 }
40 40
41 namespace views { 41 namespace views {
42 42
43 class DropTargetWin; 43 class DropTargetWin;
44 class FullscreenHandler;
44 class HWNDMessageHandler; 45 class HWNDMessageHandler;
45 class InputMethodDelegate; 46 class InputMethodDelegate;
46 class RootView; 47 class RootView;
47 class TooltipManagerWin; 48 class TooltipManagerWin;
48 49
49 // These two messages aren't defined in winuser.h, but they are sent to windows 50 // These two messages aren't defined in winuser.h, but they are sent to windows
50 // with captions. They appear to paint the window caption and frame. 51 // with captions. They appear to paint the window caption and frame.
51 // Unfortunately if you override the standard non-client rendering as we do 52 // Unfortunately if you override the standard non-client rendering as we do
52 // with CustomFrameWindow, sometimes Windows (not deterministically 53 // with CustomFrameWindow, sometimes Windows (not deterministically
53 // reproducibly but definitely frequently) will send these messages to the 54 // reproducibly but definitely frequently) will send these messages to the
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 // Add a view that has recently fired an accessibility event. Returns a MSAA 99 // Add a view that has recently fired an accessibility event. Returns a MSAA
99 // child id which is generated by: -(index of view in vector + 1) which 100 // child id which is generated by: -(index of view in vector + 1) which
100 // guarantees a negative child id. This distinguishes the view from 101 // guarantees a negative child id. This distinguishes the view from
101 // positive MSAA child id's which are direct leaf children of views that have 102 // positive MSAA child id's which are direct leaf children of views that have
102 // associated hWnd's (e.g. NativeWidgetWin). 103 // associated hWnd's (e.g. NativeWidgetWin).
103 int AddAccessibilityViewEvent(View* view); 104 int AddAccessibilityViewEvent(View* view);
104 105
105 // Clear a view that has recently been removed on a hierarchy change. 106 // Clear a view that has recently been removed on a hierarchy change.
106 void ClearAccessibilityViewEvent(View* view); 107 void ClearAccessibilityViewEvent(View* view);
107 108
108 // Hides the window if it hasn't already been force-hidden. The force hidden
109 // count is tracked, so calling multiple times is allowed, you just have to
110 // be sure to call PopForceHidden the same number of times.
111 void PushForceHidden();
112
113 // Decrements the force hidden count, showing the window if we have reached
114 // the top of the stack. See PushForceHidden.
115 void PopForceHidden();
116
117 // Places the window in a pseudo-fullscreen mode where it looks and acts as 109 // Places the window in a pseudo-fullscreen mode where it looks and acts as
118 // like a fullscreen window except that it remains within the boundaries 110 // like a fullscreen window except that it remains within the boundaries
119 // of the metro snap divider. 111 // of the metro snap divider.
120 void SetMetroSnapFullscreen(bool metro_snap); 112 void SetMetroSnapFullscreen(bool metro_snap);
121 113
122 bool IsInMetroSnapMode() const; 114 bool IsInMetroSnapMode() const;
123 115
124 BOOL IsWindow() const { 116 BOOL IsWindow() const {
125 return ::IsWindow(GetNativeView()); 117 return ::IsWindow(GetNativeView());
126 } 118 }
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 virtual void ClearNativeFocus() OVERRIDE; 250 virtual void ClearNativeFocus() OVERRIDE;
259 virtual void FocusNativeView(gfx::NativeView native_view) OVERRIDE; 251 virtual void FocusNativeView(gfx::NativeView native_view) OVERRIDE;
260 virtual gfx::Rect GetWorkAreaBoundsInScreen() const OVERRIDE; 252 virtual gfx::Rect GetWorkAreaBoundsInScreen() const OVERRIDE;
261 virtual void SetInactiveRenderingDisabled(bool value) OVERRIDE; 253 virtual void SetInactiveRenderingDisabled(bool value) OVERRIDE;
262 virtual Widget::MoveLoopResult RunMoveLoop( 254 virtual Widget::MoveLoopResult RunMoveLoop(
263 const gfx::Point& drag_offset) OVERRIDE; 255 const gfx::Point& drag_offset) OVERRIDE;
264 virtual void EndMoveLoop() OVERRIDE; 256 virtual void EndMoveLoop() OVERRIDE;
265 virtual void SetVisibilityChangedAnimationsEnabled(bool value) OVERRIDE; 257 virtual void SetVisibilityChangedAnimationsEnabled(bool value) OVERRIDE;
266 258
267 protected: 259 protected:
268 // Information saved before going into fullscreen mode, used to restore the
269 // window afterwards.
270 struct SavedWindowInfo {
271 bool maximized;
272 LONG style;
273 LONG ex_style;
274 RECT window_rect;
275 };
276
277 // Overridden from MessageLoop::Observer: 260 // Overridden from MessageLoop::Observer:
278 virtual base::EventStatus WillProcessEvent( 261 virtual base::EventStatus WillProcessEvent(
279 const base::NativeEvent& event) OVERRIDE; 262 const base::NativeEvent& event) OVERRIDE;
280 virtual void DidProcessEvent(const base::NativeEvent& event) OVERRIDE; 263 virtual void DidProcessEvent(const base::NativeEvent& event) OVERRIDE;
281 264
282 // Overridden from WindowImpl: 265 // Overridden from WindowImpl:
283 virtual HICON GetDefaultWindowIcon() const OVERRIDE; 266 virtual HICON GetDefaultWindowIcon() const OVERRIDE;
284 virtual LRESULT OnWndProc(UINT message, 267 virtual LRESULT OnWndProc(UINT message,
285 WPARAM w_param, 268 WPARAM w_param,
286 LPARAM l_param) OVERRIDE; 269 LPARAM l_param) OVERRIDE;
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 // The TooltipManager. This is NULL if there is a problem creating the 449 // The TooltipManager. This is NULL if there is a problem creating the
467 // underlying tooltip window. 450 // underlying tooltip window.
468 // WARNING: RootView's destructor calls into the TooltipManager. As such, this 451 // WARNING: RootView's destructor calls into the TooltipManager. As such, this
469 // must be destroyed AFTER root_view_. 452 // must be destroyed AFTER root_view_.
470 scoped_ptr<TooltipManagerWin> tooltip_manager_; 453 scoped_ptr<TooltipManagerWin> tooltip_manager_;
471 454
472 scoped_refptr<DropTargetWin> drop_target_; 455 scoped_refptr<DropTargetWin> drop_target_;
473 456
474 const gfx::Rect& invalid_rect() const { return invalid_rect_; } 457 const gfx::Rect& invalid_rect() const { return invalid_rect_; }
475 458
476 // Saved window information from before entering fullscreen mode.
477 // TODO(beng): move to private once GetRestoredBounds() moves onto Widget.
478 SavedWindowInfo saved_window_info_;
479
480 private: 459 private:
481 typedef ScopedVector<ui::ViewProp> ViewProps; 460 typedef ScopedVector<ui::ViewProp> ViewProps;
482 461
483 // TODO(beng): This friendship can be removed once all methods relating to 462 // TODO(beng): This friendship can be removed once all methods relating to
484 // this object being a WindowImpl are moved to HWNDMessageHandler. 463 // this object being a WindowImpl are moved to HWNDMessageHandler.
485 friend HWNDMessageHandler; 464 friend HWNDMessageHandler;
486 465
487 // Overridden from HWNDMessageHandlerDelegate: 466 // Overridden from HWNDMessageHandlerDelegate:
488 virtual bool IsWidgetWindow() const OVERRIDE; 467 virtual bool IsWidgetWindow() const OVERRIDE;
489 virtual bool IsUsingCustomFrame() const OVERRIDE; 468 virtual bool IsUsingCustomFrame() const OVERRIDE;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 // Stops ignoring SetWindowPos() requests (see below). 528 // Stops ignoring SetWindowPos() requests (see below).
550 void StopIgnoringPosChanges() { ignore_window_pos_changes_ = false; } 529 void StopIgnoringPosChanges() { ignore_window_pos_changes_ = false; }
551 530
552 void RestoreEnabledIfNecessary(); 531 void RestoreEnabledIfNecessary();
553 532
554 void SetInitialFocus(); 533 void SetInitialFocus();
555 534
556 // Notifies any owned windows that we're closing. 535 // Notifies any owned windows that we're closing.
557 void NotifyOwnedWindowsParentClosing(); 536 void NotifyOwnedWindowsParentClosing();
558 537
559 // Common implementation of fullscreen-related code. This method handles
560 // changing from windowed mode to a display mode (dubbed fullscreen mode)
561 // where the window occupies a fixed portion (possibly 100%) of the screen.
562 // |fullscreen| specifies whether we are entering or leaving fullscreen mode.
563 // |for_metro| specifies whether we are doing this at the behest of a metro
564 // snap transition.
565 void SetFullscreenInternal(bool fullscreen, bool for_metro);
566
567 // A delegate implementation that handles events received here. 538 // A delegate implementation that handles events received here.
568 // See class documentation for Widget in widget.h for a note about ownership. 539 // See class documentation for Widget in widget.h for a note about ownership.
569 internal::NativeWidgetDelegate* delegate_; 540 internal::NativeWidgetDelegate* delegate_;
570 541
571 // The following factory is used for calls to close the NativeWidgetWin 542 // The following factory is used for calls to close the NativeWidgetWin
572 // instance. 543 // instance.
573 base::WeakPtrFactory<NativeWidgetWin> close_widget_factory_; 544 base::WeakPtrFactory<NativeWidgetWin> close_widget_factory_;
574 545
575 // Should we keep an off-screen buffer? This is false by default, set to true 546 // Should we keep an off-screen buffer? This is false by default, set to true
576 // when WS_EX_LAYERED is specified before the native window is created. 547 // when WS_EX_LAYERED is specified before the native window is created.
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 // The current position of the view events vector. When incrementing, 601 // The current position of the view events vector. When incrementing,
631 // we always mod this value with the max view events above . 602 // we always mod this value with the max view events above .
632 int accessibility_view_events_index_; 603 int accessibility_view_events_index_;
633 604
634 // The last cursor that was active before the current one was selected. Saved 605 // The last cursor that was active before the current one was selected. Saved
635 // so that we can restore it. 606 // so that we can restore it.
636 gfx::NativeCursor previous_cursor_; 607 gfx::NativeCursor previous_cursor_;
637 608
638 ViewProps props_; 609 ViewProps props_;
639 610
640 // True if we're in fullscreen mode.
641 bool fullscreen_;
642
643 // True if we're in metro snap mode.
644 bool metro_snap_;
645
646 // If this is greater than zero, we should prevent attempts to make the window
647 // visible when we handle WM_WINDOWPOSCHANGING. Some calls like
648 // ShowWindow(SW_RESTORE) make the window visible in addition to restoring it,
649 // when all we want to do is restore it.
650 int force_hidden_count_;
651
652 // The window styles before we modified them for the drag frame appearance. 611 // The window styles before we modified them for the drag frame appearance.
653 DWORD drag_frame_saved_window_style_; 612 DWORD drag_frame_saved_window_style_;
654 DWORD drag_frame_saved_window_ex_style_; 613 DWORD drag_frame_saved_window_ex_style_;
655 614
656 // When true, this flag makes us discard incoming SetWindowPos() requests that 615 // When true, this flag makes us discard incoming SetWindowPos() requests that
657 // only change our position/size. (We still allow changes to Z-order, 616 // only change our position/size. (We still allow changes to Z-order,
658 // activation, etc.) 617 // activation, etc.)
659 bool ignore_window_pos_changes_; 618 bool ignore_window_pos_changes_;
660 619
661 // The following factory is used to ignore SetWindowPos() calls for short time 620 // The following factory is used to ignore SetWindowPos() calls for short time
662 // periods. 621 // periods.
663 base::WeakPtrFactory<NativeWidgetWin> ignore_pos_changes_factory_; 622 base::WeakPtrFactory<NativeWidgetWin> ignore_pos_changes_factory_;
664 623
665 // The last-seen monitor containing us, and its rect and work area. These are 624 // The last-seen monitor containing us, and its rect and work area. These are
666 // used to catch updates to the rect and work area and react accordingly. 625 // used to catch updates to the rect and work area and react accordingly.
667 HMONITOR last_monitor_; 626 HMONITOR last_monitor_;
668 gfx::Rect last_monitor_rect_, last_work_area_; 627 gfx::Rect last_monitor_rect_, last_work_area_;
669 628
670 // Whether all ancestors have been enabled. This is only used if is_modal_ is 629 // Whether all ancestors have been enabled. This is only used if is_modal_ is
671 // true. 630 // true.
672 bool restored_enabled_; 631 bool restored_enabled_;
673 632
674 // True if the widget is going to have a non_client_view. We cache this value 633 // True if the widget is going to have a non_client_view. We cache this value
675 // rather than asking the Widget for the non_client_view so that we know at 634 // rather than asking the Widget for the non_client_view so that we know at
676 // Init time, before the Widget has created the NonClientView. 635 // Init time, before the Widget has created the NonClientView.
677 bool has_non_client_view_; 636 bool has_non_client_view_;
678 637
679 scoped_ptr<HWNDMessageHandler> message_handler_; 638 scoped_ptr<HWNDMessageHandler> message_handler_;
639 scoped_ptr<FullscreenHandler> fullscreen_handler_;
680 640
681 DISALLOW_COPY_AND_ASSIGN(NativeWidgetWin); 641 DISALLOW_COPY_AND_ASSIGN(NativeWidgetWin);
682 }; 642 };
683 643
684 } // namespace views 644 } // namespace views
685 645
686 #endif // UI_VIEWS_WIDGET_NATIVE_WIDGET_WIN_H_ 646 #endif // UI_VIEWS_WIDGET_NATIVE_WIDGET_WIN_H_
OLDNEW
« no previous file with comments | « ui/views/views.gyp ('k') | ui/views/widget/native_widget_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698