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

Side by Side Diff: chrome/browser/ui/gtk/browser_titlebar.h

Issue 7206036: Titlebar modifications for panels. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Code review feedback. Created 9 years, 6 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) 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 // A helper class that contains the gtk widgets that make up the titlebar. The 5 // A helper class that contains the gtk widgets that make up the titlebar. The
6 // titlebar consists of the tabstrip and if the custom chrome frame is turned 6 // titlebar consists of the tabstrip and if the custom chrome frame is turned
7 // on, it includes the taller titlebar and minimize, restore, maximize, and 7 // on, it includes the taller titlebar and minimize, restore, maximize, and
8 // close buttons. 8 // close buttons.
9 9
10 #ifndef CHROME_BROWSER_UI_GTK_BROWSER_TITLEBAR_H_ 10 #ifndef CHROME_BROWSER_UI_GTK_BROWSER_TITLEBAR_H_
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 // Lazily builds and returns |titlebar_{left,right}_buttons_vbox_| and their 102 // Lazily builds and returns |titlebar_{left,right}_buttons_vbox_| and their
103 // subtrees. We do this lazily because in most situations, only one of them 103 // subtrees. We do this lazily because in most situations, only one of them
104 // is allocated (though the user can (and do) manually mess with their gconf 104 // is allocated (though the user can (and do) manually mess with their gconf
105 // settings to get absolutely horrid combinations of buttons on both sides. 105 // settings to get absolutely horrid combinations of buttons on both sides.
106 GtkWidget* GetButtonHBox(bool left_side); 106 GtkWidget* GetButtonHBox(bool left_side);
107 107
108 // Constructs a CustomDraw button given 3 image ids (IDR_), the box to place 108 // Constructs a CustomDraw button given 3 image ids (IDR_), the box to place
109 // the button into, and a tooltip id (IDS_). 109 // the button into, and a tooltip id (IDS_).
110 CustomDrawButton* BuildTitlebarButton(int image, int image_pressed, 110 CustomDrawButton* BuildTitlebarButton(int image, int image_pressed,
111 int image_hot, GtkWidget* box, 111 int image_hot, GtkWidget* box,
112 int tooltip); 112 bool start, int tooltip);
113 113
114 // Update the titlebar spacing based on the custom frame and maximized state. 114 // Update the titlebar spacing based on the custom frame and maximized state.
115 void UpdateTitlebarAlignment(); 115 void UpdateTitlebarAlignment();
116 116
117 // Updates the color of the title bar. Called whenever we have a state 117 // Updates the color of the title bar. Called whenever we have a state
118 // change in the window. 118 // change in the window.
119 void UpdateTextColor(); 119 void UpdateTextColor();
120 120
121 // Show the menu that the user gets from left-clicking the favicon. 121 // Show the menu that the user gets from left-clicking the favicon.
122 void ShowFaviconMenu(GdkEventButton* event); 122 void ShowFaviconMenu(GdkEventButton* event);
123 123
124 // The maximize button was clicked, take an action depending on which mouse 124 // The maximize button was clicked, take an action depending on which mouse
125 // button the user pressed. 125 // button the user pressed.
126 void MaximizeButtonClicked(); 126 void MaximizeButtonClicked();
127 127
128 // Updates the visibility of the maximize and restore buttons; only one can 128 // Updates the visibility of the maximize and restore buttons; only one can
129 // be visible at a time. 129 // be visible at a time.
130 void UpdateMaximizeRestoreVisibility(); 130 void UpdateMaximizeRestoreVisibility();
131 131
132 // Callback for changes to window state. This includes 132 // Callback for changes to window state. This includes
133 // maximizing/restoring/minimizing the window. 133 // maximizing/restoring/minimizing the window.
134 CHROMEG_CALLBACK_1(BrowserTitlebar, gboolean, OnWindowStateChanged, 134 CHROMEG_CALLBACK_1(BrowserTitlebar, gboolean, OnWindowStateChanged,
135 GtkWindow*, GdkEventWindowState*); 135 GtkWindow*, GdkEventWindowState*);
136 136
137 // Callback for mousewheel events. 137 // Callback for mousewheel events.
138 CHROMEGTK_CALLBACK_1(BrowserTitlebar, gboolean, OnScroll, 138 CHROMEGTK_CALLBACK_1(BrowserTitlebar, gboolean, OnScroll,
139 GdkEventScroll*); 139 GdkEventScroll*);
140 140
141 // Callbacks for mouse enter leave events.
142 CHROMEGTK_CALLBACK_1(BrowserTitlebar, gboolean, OnEnterNotify,
143 GdkEventCrossing*);
144 CHROMEGTK_CALLBACK_1(BrowserTitlebar, gboolean, OnLeaveNotify,
145 GdkEventCrossing*);
146
141 // Callback for min/max/close buttons. 147 // Callback for min/max/close buttons.
142 CHROMEGTK_CALLBACK_0(BrowserTitlebar, void, OnButtonClicked); 148 CHROMEGTK_CALLBACK_0(BrowserTitlebar, void, OnButtonClicked);
143 149
144 // Callback for favicon. 150 // Callback for favicon.
145 CHROMEGTK_CALLBACK_1(BrowserTitlebar, gboolean, OnButtonPressed, 151 CHROMEGTK_CALLBACK_1(BrowserTitlebar, gboolean, OnButtonPressed,
146 GdkEventButton*); 152 GdkEventButton*);
147 153
148 // -- Context Menu ----------------------------------------------------------- 154 // -- Context Menu -----------------------------------------------------------
149 155
150 // SimpleMenuModel::Delegate implementation: 156 // SimpleMenuModel::Delegate implementation:
151 virtual bool IsCommandIdEnabled(int command_id) const; 157 virtual bool IsCommandIdEnabled(int command_id) const;
152 virtual bool IsCommandIdChecked(int command_id) const; 158 virtual bool IsCommandIdChecked(int command_id) const;
153 virtual void ExecuteCommand(int command_id); 159 virtual void ExecuteCommand(int command_id);
154 virtual bool GetAcceleratorForCommandId(int command_id, 160 virtual bool GetAcceleratorForCommandId(int command_id,
155 ui::Accelerator* accelerator); 161 ui::Accelerator* accelerator);
156 162
157 // Overridden from NotificationObserver: 163 // Overridden from NotificationObserver:
158 virtual void Observe(NotificationType type, 164 virtual void Observe(NotificationType type,
159 const NotificationSource& source, 165 const NotificationSource& source,
160 const NotificationDetails& details); 166 const NotificationDetails& details);
161 167
162 // Overriden from ActiveWindowWatcher::Observer. 168 // Overriden from ActiveWindowWatcher::Observer.
163 virtual void ActiveWindowChanged(GdkWindow* active_window); 169 virtual void ActiveWindowChanged(GdkWindow* active_window);
164 170
171 bool IsTypePanel();
172
165 // Pointers to the browser window that owns us and it's GtkWindow. 173 // Pointers to the browser window that owns us and it's GtkWindow.
166 BrowserWindowGtk* browser_window_; 174 BrowserWindowGtk* browser_window_;
167 GtkWindow* window_; 175 GtkWindow* window_;
168 176
169 // The container widget the holds the hbox which contains the whole titlebar. 177 // The container widget the holds the hbox which contains the whole titlebar.
170 GtkWidget* container_; 178 GtkWidget* container_;
171 179
172 // The hbox that contains the whole titlebar. 180 // The hbox that contains the whole titlebar.
173 GtkWidget* container_hbox_; 181 GtkWidget* container_hbox_;
174 182
(...skipping 20 matching lines...) Expand all
195 GtkWidget* top_padding_right_; 203 GtkWidget* top_padding_right_;
196 204
197 // Gtk alignment that contains the tab strip. If the user turns off window 205 // Gtk alignment that contains the tab strip. If the user turns off window
198 // manager decorations, we draw this taller. 206 // manager decorations, we draw this taller.
199 GtkWidget* titlebar_alignment_; 207 GtkWidget* titlebar_alignment_;
200 208
201 // The favicon and page title used when in app mode or popup mode. 209 // The favicon and page title used when in app mode or popup mode.
202 GtkWidget* app_mode_favicon_; 210 GtkWidget* app_mode_favicon_;
203 GtkWidget* app_mode_title_; 211 GtkWidget* app_mode_title_;
204 212
213 // Wrench icon for panels. This'll only appear when a panel window has focus
214 // or mouse is in a panel window.
215 scoped_ptr<CustomDrawButton> panel_wrench_button_;
216
205 // Whether we are using a custom frame. 217 // Whether we are using a custom frame.
206 bool using_custom_frame_; 218 bool using_custom_frame_;
207 219
208 // Whether we have focus (gtk_window_is_active() sometimes returns the wrong 220 // Whether we have focus (gtk_window_is_active() sometimes returns the wrong
209 // value, so manually track the focus-in and focus-out events.) 221 // value, so manually track the focus-in and focus-out events.)
210 bool window_has_focus_; 222 bool window_has_focus_;
211 223
224 // Whether mouse is in the window. We show the wrench icon when a panel
225 // window has focus or mouse is in a panel window.
226 bool window_has_mouse_;
227
212 // We change the size of these three buttons when the window is maximized, so 228 // We change the size of these three buttons when the window is maximized, so
213 // we use these structs to keep track of their original size. 229 // we use these structs to keep track of their original size.
214 GtkRequisition close_button_req_; 230 GtkRequisition close_button_req_;
215 GtkRequisition minimize_button_req_; 231 GtkRequisition minimize_button_req_;
216 GtkRequisition restore_button_req_; 232 GtkRequisition restore_button_req_;
217 233
218 // Maximize and restore widgets in the titlebar. 234 // Maximize and restore widgets in the titlebar.
219 scoped_ptr<CustomDrawButton> minimize_button_; 235 scoped_ptr<CustomDrawButton> minimize_button_;
220 scoped_ptr<CustomDrawButton> maximize_button_; 236 scoped_ptr<CustomDrawButton> maximize_button_;
221 scoped_ptr<CustomDrawButton> restore_button_; 237 scoped_ptr<CustomDrawButton> restore_button_;
(...skipping 19 matching lines...) Expand all
241 // Shown in the profile button. Only used to register a notification observer. 257 // Shown in the profile button. Only used to register a notification observer.
242 StringPrefMember usernamePref_; 258 StringPrefMember usernamePref_;
243 259
244 // Theme provider for building buttons. 260 // Theme provider for building buttons.
245 GtkThemeService* theme_service_; 261 GtkThemeService* theme_service_;
246 262
247 NotificationRegistrar registrar_; 263 NotificationRegistrar registrar_;
248 }; 264 };
249 265
250 #endif // CHROME_BROWSER_UI_GTK_BROWSER_TITLEBAR_H_ 266 #endif // CHROME_BROWSER_UI_GTK_BROWSER_TITLEBAR_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/gtk/browser_titlebar.cc » ('j') | chrome/browser/ui/gtk/browser_titlebar.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698