OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/gtk/toolbar_star_toggle_gtk.h" | 5 #include "chrome/browser/gtk/toolbar_star_toggle_gtk.h" |
6 | 6 |
7 #include "app/gtk_dnd_util.h" | 7 #include "app/gtk_dnd_util.h" |
8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
9 #include "base/gfx/rect.h" | 9 #include "base/gfx/rect.h" |
10 #include "chrome/browser/browser.h" | 10 #include "chrome/browser/browser.h" |
11 #include "chrome/browser/gtk/bookmark_bubble_gtk.h" | 11 #include "chrome/browser/gtk/bookmark_bubble_gtk.h" |
12 #include "chrome/browser/gtk/browser_toolbar_gtk.h" | 12 #include "chrome/browser/gtk/browser_toolbar_gtk.h" |
13 #include "chrome/browser/gtk/gtk_chrome_button.h" | 13 #include "chrome/browser/gtk/gtk_chrome_button.h" |
14 #include "chrome/browser/gtk/gtk_theme_provider.h" | 14 #include "chrome/browser/gtk/gtk_theme_provider.h" |
15 #include "chrome/browser/profile.h" | 15 #include "chrome/browser/profile.h" |
16 #include "chrome/browser/tab_contents/tab_contents.h" | 16 #include "chrome/browser/tab_contents/tab_contents.h" |
17 #include "chrome/common/notification_service.h" | 17 #include "chrome/common/notification_service.h" |
18 #include "grit/theme_resources.h" | 18 #include "grit/theme_resources.h" |
19 | 19 |
20 ToolbarStarToggleGtk::ToolbarStarToggleGtk(BrowserToolbarGtk* host) | 20 ToolbarStarToggleGtk::ToolbarStarToggleGtk(BrowserToolbarGtk* host) |
21 : host_(host), | 21 : host_(host), |
22 widget_(gtk_chrome_button_new()), | 22 widget_(gtk_chrome_button_new()), |
23 is_starred_(false), | 23 is_starred_(false), |
24 theme_provider_(GtkThemeProvider::GetFrom(host->profile())), | 24 theme_provider_(GtkThemeProvider::GetFrom(host->profile())), |
25 unstarred_(theme_provider_, IDR_STAR, IDR_STAR_P, IDR_STAR_H, IDR_STAR_D), | 25 unstarred_(theme_provider_, IDR_STAR, IDR_STAR_P, IDR_STAR_H, IDR_STAR_D), |
26 starred_(theme_provider_, IDR_STARRED, IDR_STARRED_P, IDR_STARRED_H, 0) { | 26 starred_(theme_provider_, IDR_STARRED, IDR_STARRED_P, IDR_STARRED_H, 0) { |
27 gtk_widget_set_size_request(widget_.get(), | 27 gtk_widget_set_size_request(widget_.get(), unstarred_.width(), |
28 gdk_pixbuf_get_width(unstarred_.pixbufs(0)), | 28 unstarred_.height()); |
29 gdk_pixbuf_get_height(unstarred_.pixbufs(0))); | |
30 | 29 |
31 gtk_widget_set_app_paintable(widget_.get(), TRUE); | 30 gtk_widget_set_app_paintable(widget_.get(), TRUE); |
32 // We effectively double-buffer by virtue of having only one image... | 31 // We effectively double-buffer by virtue of having only one image... |
33 gtk_widget_set_double_buffered(widget_.get(), FALSE); | 32 gtk_widget_set_double_buffered(widget_.get(), FALSE); |
34 | 33 |
35 g_signal_connect(widget(), "expose-event", | 34 g_signal_connect(widget(), "expose-event", |
36 G_CALLBACK(OnExpose), this); | 35 G_CALLBACK(OnExpose), this); |
37 GTK_WIDGET_UNSET_FLAGS(widget_.get(), GTK_CAN_FOCUS); | 36 GTK_WIDGET_UNSET_FLAGS(widget_.get(), GTK_CAN_FOCUS); |
38 | 37 |
39 gtk_drag_source_set(widget(), GDK_BUTTON1_MASK, | 38 gtk_drag_source_set(widget(), GDK_BUTTON1_MASK, |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 } | 123 } |
125 | 124 |
126 gtk_button_set_image( | 125 gtk_button_set_image( |
127 GTK_BUTTON(widget_.get()), | 126 GTK_BUTTON(widget_.get()), |
128 gtk_image_new_from_pixbuf(pixbuf)); | 127 gtk_image_new_from_pixbuf(pixbuf)); |
129 | 128 |
130 gtk_widget_set_size_request(widget_.get(), -1, -1); | 129 gtk_widget_set_size_request(widget_.get(), -1, -1); |
131 gtk_widget_set_app_paintable(widget_.get(), FALSE); | 130 gtk_widget_set_app_paintable(widget_.get(), FALSE); |
132 gtk_widget_set_double_buffered(widget_.get(), TRUE); | 131 gtk_widget_set_double_buffered(widget_.get(), TRUE); |
133 } else { | 132 } else { |
134 gtk_widget_set_size_request(widget_.get(), | 133 gtk_widget_set_size_request(widget_.get(), unstarred_.width(), |
135 gdk_pixbuf_get_width(unstarred_.pixbufs(0)), | 134 unstarred_.height()); |
136 gdk_pixbuf_get_height(unstarred_.pixbufs(0))); | |
137 | 135 |
138 gtk_widget_set_app_paintable(widget_.get(), TRUE); | 136 gtk_widget_set_app_paintable(widget_.get(), TRUE); |
139 // We effectively double-buffer by virtue of having only one image... | 137 // We effectively double-buffer by virtue of having only one image... |
140 gtk_widget_set_double_buffered(widget_.get(), FALSE); | 138 gtk_widget_set_double_buffered(widget_.get(), FALSE); |
141 } | 139 } |
142 | 140 |
143 gtk_chrome_button_set_use_gtk_rendering( | 141 gtk_chrome_button_set_use_gtk_rendering( |
144 GTK_CHROME_BUTTON(widget_.get()), use_gtk); | 142 GTK_CHROME_BUTTON(widget_.get()), use_gtk); |
145 } | 143 } |
OLD | NEW |