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

Side by Side Diff: chrome/browser/ui/views/panels/panel_stack_view.h

Issue 16035007: Provide the custom thumbnail for live preview of stacked panels (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 CHROME_BROWSER_UI_VIEWS_PANELS_PANEL_STACK_VIEW_H_ 5 #ifndef CHROME_BROWSER_UI_VIEWS_PANELS_PANEL_STACK_VIEW_H_
6 #define CHROME_BROWSER_UI_VIEWS_PANELS_PANEL_STACK_VIEW_H_ 6 #define CHROME_BROWSER_UI_VIEWS_PANELS_PANEL_STACK_VIEW_H_
7 7
8 #include <list> 8 #include <list>
9 #include <map> 9 #include <map>
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "chrome/browser/ui/panels/native_panel_stack_window.h" 12 #include "chrome/browser/ui/panels/native_panel_stack_window.h"
13 #include "ui/base/animation/animation_delegate.h" 13 #include "ui/base/animation/animation_delegate.h"
14 #include "ui/views/focus/widget_focus_manager.h" 14 #include "ui/views/focus/widget_focus_manager.h"
15 #include "ui/views/widget/widget_delegate.h" 15 #include "ui/views/widget/widget_delegate.h"
16 #include "ui/views/widget/widget_observer.h" 16 #include "ui/views/widget/widget_observer.h"
17 17
18 class TaskbarWindowThumbnailerWin; 18 #if defined(OS_WIN)
19 #include "chrome/browser/ui/views/panels/taskbar_window_thumbnailer_win.h"
20 #endif
21
19 namespace ui { 22 namespace ui {
20 class LinearAnimation; 23 class LinearAnimation;
21 } 24 }
22 namespace views { 25 namespace views {
23 class Widget; 26 class Widget;
24 } 27 }
25 28
26 // A native window that acts as the owner of all panels in the stack, in order 29 // A native window that acts as the owner of all panels in the stack, in order
27 // to make all panels appear as a single window on the taskbar or launcher. 30 // to make all panels appear as a single window on the taskbar or launcher.
28 class PanelStackView : public NativePanelStackWindow, 31 class PanelStackView : public NativePanelStackWindow,
29 public views::WidgetObserver, 32 public views::WidgetObserver,
30 public views::WidgetDelegateView, 33 public views::WidgetDelegateView,
31 public views::WidgetFocusChangeListener, 34 public views::WidgetFocusChangeListener,
35 #if defined(OS_WIN)
36 public TaskbarWindowThumbnailerDelegateWin,
37 #endif
32 public ui::AnimationDelegate { 38 public ui::AnimationDelegate {
33 public: 39 public:
34 explicit PanelStackView(NativePanelStackWindowDelegate* delegate); 40 explicit PanelStackView(NativePanelStackWindowDelegate* delegate);
35 virtual ~PanelStackView(); 41 virtual ~PanelStackView();
36 42
37 protected: 43 protected:
38 // Overridden from NativePanelStackWindow: 44 // Overridden from NativePanelStackWindow:
39 virtual void Close() OVERRIDE; 45 virtual void Close() OVERRIDE;
40 virtual void AddPanel(Panel* panel) OVERRIDE; 46 virtual void AddPanel(Panel* panel) OVERRIDE;
41 virtual void RemovePanel(Panel* panel) OVERRIDE; 47 virtual void RemovePanel(Panel* panel) OVERRIDE;
(...skipping 27 matching lines...) Expand all
69 75
70 // Overridden from views::WidgetObserver: 76 // Overridden from views::WidgetObserver:
71 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE; 77 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE;
72 virtual void OnWidgetActivationChanged(views::Widget* widget, 78 virtual void OnWidgetActivationChanged(views::Widget* widget,
73 bool active) OVERRIDE; 79 bool active) OVERRIDE;
74 80
75 // Overridden from views::WidgetFocusChangeListener: 81 // Overridden from views::WidgetFocusChangeListener:
76 virtual void OnNativeFocusChange(gfx::NativeView focused_before, 82 virtual void OnNativeFocusChange(gfx::NativeView focused_before,
77 gfx::NativeView focused_now) OVERRIDE; 83 gfx::NativeView focused_now) OVERRIDE;
78 84
85 #if defined(OS_WIN)
Dmitry Titov 2013/05/29 01:14:48 Could you please group all OS_WIN things under a s
jianli 2013/05/29 18:31:52 Done.
86 virtual std::vector<HWND> GetSnapshotWindowHandles() const OVERRIDE;
87 #endif
88
79 // Overridden from AnimationDelegate: 89 // Overridden from AnimationDelegate:
80 virtual void AnimationEnded(const ui::Animation* animation) OVERRIDE; 90 virtual void AnimationEnded(const ui::Animation* animation) OVERRIDE;
81 virtual void AnimationProgressed(const ui::Animation* animation) OVERRIDE; 91 virtual void AnimationProgressed(const ui::Animation* animation) OVERRIDE;
82 92
83 // Updates the bounds of panels as specified in batch update data. 93 // Updates the bounds of panels as specified in batch update data.
84 void UpdatePanelsBounds(); 94 void UpdatePanelsBounds();
85 95
86 // Computes/updates the minimum bounds that could fit all panels. 96 // Computes/updates the minimum bounds that could fit all panels.
87 gfx::Rect GetStackWindowBounds() const; 97 gfx::Rect GetStackWindowBounds() const;
88 void UpdateStackWindowBounds(); 98 void UpdateStackWindowBounds();
89 99
90 views::Widget* CreateWindowWithBounds(const gfx::Rect& bounds); 100 views::Widget* CreateWindowWithBounds(const gfx::Rect& bounds);
91 void EnsureWindowCreated(); 101 void EnsureWindowCreated();
92 102
93 // Makes the stack window own the panel window such that multiple panels 103 // Makes the stack window own the panel window such that multiple panels
94 // stacked together could appear as a single window on the taskbar or 104 // stacked together could appear as a single window on the taskbar or
95 // launcher. 105 // launcher.
96 static void MakeStackWindowOwnPanelWindow(Panel* panel, 106 static void MakeStackWindowOwnPanelWindow(Panel* panel,
97 PanelStackView* stack_window); 107 PanelStackView* stack_window);
98 108
99 #if defined(OS_WIN) 109 #if defined(OS_WIN)
110 // If there is a minimized panel in the stack, we want to provide our custom
111 // thumbnail to live preview. This is because the system preview of the
112 // minimized panel is showned up narrower than the regular panel.
113 void StartOrStopCustomThumbnailForMinimizePanel();
114
100 // Capture the thumbnail of the whole stack and provide it to live preview 115 // Capture the thumbnail of the whole stack and provide it to live preview
101 // (available since Windows 7). 116 // (available since Windows 7).
102 void CaptureThumbnailForLivePreview(); 117 void CaptureThumbnailForLivePreview(bool should_capture_now);
Dmitry Titov 2013/05/29 01:14:48 This should be named like "StartThumbnailer", beca
103 118
104 // Updates the bounds of the widget window in a deferred way. 119 // Updates the bounds of the widget window in a deferred way.
105 void DeferUpdateNativeWindowBounds(HDWP defer_window_pos_info, 120 void DeferUpdateNativeWindowBounds(HDWP defer_window_pos_info,
106 views::Widget* window, 121 views::Widget* window,
107 const gfx::Rect& bounds); 122 const gfx::Rect& bounds);
108 #endif 123 #endif
109 124
110 NativePanelStackWindowDelegate* delegate_; 125 NativePanelStackWindowDelegate* delegate_;
111 126
112 views::Widget* window_; // Weak pointer, own us. 127 views::Widget* window_; // Weak pointer, own us.
113 128
114 bool is_closing_; 129 bool is_closing_;
115 130
116 // Tracks all panels that are enclosed by this window. 131 // Tracks all panels that are enclosed by this window.
117 Panels panels_; 132 Panels panels_;
118 133
119 // Is the taskbar icon of the underlying window being flashed in order to 134 // Is the taskbar icon of the underlying window being flashed in order to
120 // draw the user's attention? 135 // draw the user's attention?
121 bool is_drawing_attention_; 136 bool is_drawing_attention_;
122 137
138 // True if the system minimize is being performed. On Windows, the system
139 // will activate the window before it is minimized. Sets this flag such that
140 // we will not stop the thumbnailer when the stack windows is activated due
141 // to this.
142 bool is_minimizing_;
143
123 #if defined(OS_WIN) 144 #if defined(OS_WIN)
124 // Used to provide custom taskbar thumbnail for Windows 7 and later. 145 // Used to provide custom taskbar thumbnail for Windows 7 and later.
125 scoped_ptr<TaskbarWindowThumbnailerWin> thumbnailer_; 146 scoped_ptr<TaskbarWindowThumbnailerWin> thumbnailer_;
126 #endif 147 #endif
127 148
128 // For batch bounds update. 149 // For batch bounds update.
129 bool animate_bounds_updates_; 150 bool animate_bounds_updates_;
130 bool bounds_updates_started_; 151 bool bounds_updates_started_;
131 BoundsUpdates bounds_updates_; 152 BoundsUpdates bounds_updates_;
132 153
133 // Used to animate the bounds changes at a synchronized pace. 154 // Used to animate the bounds changes at a synchronized pace.
134 scoped_ptr<ui::LinearAnimation> bounds_animator_; 155 scoped_ptr<ui::LinearAnimation> bounds_animator_;
135 156
136 DISALLOW_COPY_AND_ASSIGN(PanelStackView); 157 DISALLOW_COPY_AND_ASSIGN(PanelStackView);
137 }; 158 };
138 159
139 #endif // CHROME_BROWSER_UI_VIEWS_PANELS_PANEL_STACK_VIEW_H_ 160 #endif // CHROME_BROWSER_UI_VIEWS_PANELS_PANEL_STACK_VIEW_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/views/panels/panel_stack_view.cc » ('j') | chrome/browser/ui/views/panels/panel_stack_view.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698