OLD | NEW |
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 #include "chrome/browser/ui/gtk/browser_actions_toolbar_gtk.h" | 5 #include "chrome/browser/ui/gtk/browser_actions_toolbar_gtk.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <vector> | 10 #include <vector> |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 return std::max((kButtonWidth + kButtonPadding) * icon_count - kButtonPadding, | 82 return std::max((kButtonWidth + kButtonPadding) * icon_count - kButtonPadding, |
83 0); | 83 0); |
84 } | 84 } |
85 | 85 |
86 } // namespace | 86 } // namespace |
87 | 87 |
88 using ui::SimpleMenuModel; | 88 using ui::SimpleMenuModel; |
89 | 89 |
90 class BrowserActionButton : public content::NotificationObserver, | 90 class BrowserActionButton : public content::NotificationObserver, |
91 public ImageLoadingTracker::Observer, | 91 public ImageLoadingTracker::Observer, |
92 public ExtensionContextMenuModel::PopupDelegate, | |
93 public MenuGtk::Delegate { | 92 public MenuGtk::Delegate { |
94 public: | 93 public: |
95 BrowserActionButton(BrowserActionsToolbarGtk* toolbar, | 94 BrowserActionButton(BrowserActionsToolbarGtk* toolbar, |
96 const Extension* extension, | 95 const Extension* extension, |
97 ThemeServiceGtk* theme_provider) | 96 ThemeServiceGtk* theme_provider) |
98 : toolbar_(toolbar), | 97 : toolbar_(toolbar), |
99 extension_(extension), | 98 extension_(extension), |
100 image_(NULL), | 99 image_(NULL), |
101 tracker_(this), | 100 tracker_(this), |
102 tab_specific_icon_(NULL), | 101 tab_specific_icon_(NULL), |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 } else { | 233 } else { |
235 return default_skbitmap_; | 234 return default_skbitmap_; |
236 } | 235 } |
237 } | 236 } |
238 | 237 |
239 MenuGtk* GetContextMenu() { | 238 MenuGtk* GetContextMenu() { |
240 if (!extension_->ShowConfigureContextMenus()) | 239 if (!extension_->ShowConfigureContextMenus()) |
241 return NULL; | 240 return NULL; |
242 | 241 |
243 context_menu_model_ = | 242 context_menu_model_ = |
244 new ExtensionContextMenuModel(extension_, toolbar_->browser(), this); | 243 new ExtensionContextMenuModel(extension_, toolbar_->browser()); |
245 context_menu_.reset( | 244 context_menu_.reset( |
246 new MenuGtk(this, context_menu_model_.get())); | 245 new MenuGtk(this, context_menu_model_.get())); |
247 return context_menu_.get(); | 246 return context_menu_.get(); |
248 } | 247 } |
249 | 248 |
250 private: | 249 private: |
251 // MenuGtk::Delegate implementation. | 250 // MenuGtk::Delegate implementation. |
252 virtual void StoppedShowing() { | 251 virtual void StoppedShowing() { |
253 button_->UnsetPaintOverride(); | 252 button_->UnsetPaintOverride(); |
254 | 253 |
(...skipping 24 matching lines...) Expand all Loading... |
279 if (browser_action->HasPopup(tab_id)) { | 278 if (browser_action->HasPopup(tab_id)) { |
280 ExtensionPopupGtk::Show( | 279 ExtensionPopupGtk::Show( |
281 browser_action->GetPopupUrl(tab_id), toolbar_->browser(), | 280 browser_action->GetPopupUrl(tab_id), toolbar_->browser(), |
282 widget(), devtools); | 281 widget(), devtools); |
283 return true; | 282 return true; |
284 } | 283 } |
285 | 284 |
286 return false; | 285 return false; |
287 } | 286 } |
288 | 287 |
289 // ExtensionContextMenuModel::PopupDelegate implementation. | |
290 virtual void InspectPopup(ExtensionAction* action) { | |
291 ShowPopup(true); | |
292 } | |
293 | |
294 void SetImage(GdkPixbuf* image) { | 288 void SetImage(GdkPixbuf* image) { |
295 if (!image_) { | 289 if (!image_) { |
296 image_ = gtk_image_new_from_pixbuf(image); | 290 image_ = gtk_image_new_from_pixbuf(image); |
297 gtk_button_set_image(GTK_BUTTON(button()), image_); | 291 gtk_button_set_image(GTK_BUTTON(button()), image_); |
298 } else { | 292 } else { |
299 gtk_image_set_from_pixbuf(GTK_IMAGE(image_), image); | 293 gtk_image_set_from_pixbuf(GTK_IMAGE(image_), image); |
300 } | 294 } |
301 } | 295 } |
302 | 296 |
303 static gboolean OnButtonPress(GtkWidget* widget, | 297 static gboolean OnButtonPress(GtkWidget* widget, |
(...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1078 | 1072 |
1079 menu->PopupAsContext(gfx::Point(event->x_root, event->y_root), | 1073 menu->PopupAsContext(gfx::Point(event->x_root, event->y_root), |
1080 event->time); | 1074 event->time); |
1081 return TRUE; | 1075 return TRUE; |
1082 } | 1076 } |
1083 | 1077 |
1084 void BrowserActionsToolbarGtk::OnButtonShowOrHide(GtkWidget* sender) { | 1078 void BrowserActionsToolbarGtk::OnButtonShowOrHide(GtkWidget* sender) { |
1085 if (!resize_animation_.is_animating()) | 1079 if (!resize_animation_.is_animating()) |
1086 UpdateChevronVisibility(); | 1080 UpdateChevronVisibility(); |
1087 } | 1081 } |
OLD | NEW |