| 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/rounded_window.h" | 5 #include "chrome/browser/gtk/rounded_window.h" |
| 6 | 6 |
| 7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
| 8 | 8 |
| 9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
| 10 #include "chrome/common/gtk_util.h" | 10 #include "chrome/common/gtk_util.h" |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 data->expected_width = -1; | 177 data->expected_width = -1; |
| 178 data->expected_height = -1; | 178 data->expected_height = -1; |
| 179 } | 179 } |
| 180 | 180 |
| 181 } // namespace | 181 } // namespace |
| 182 | 182 |
| 183 void ActAsRoundedWindow( | 183 void ActAsRoundedWindow( |
| 184 GtkWidget* widget, const GdkColor& color, int corner_size, | 184 GtkWidget* widget, const GdkColor& color, int corner_size, |
| 185 int rounded_edges, int drawn_borders) { | 185 int rounded_edges, int drawn_borders) { |
| 186 DCHECK(widget); | 186 DCHECK(widget); |
| 187 DCHECK(!g_object_get_data(G_OBJECT(widget), kRoundedData)); |
| 188 |
| 187 gtk_widget_set_app_paintable(widget, TRUE); | 189 gtk_widget_set_app_paintable(widget, TRUE); |
| 188 g_signal_connect(G_OBJECT(widget), "expose-event", | 190 g_signal_connect(G_OBJECT(widget), "expose-event", |
| 189 G_CALLBACK(OnRoundedWindowExpose), NULL); | 191 G_CALLBACK(OnRoundedWindowExpose), NULL); |
| 190 g_signal_connect(G_OBJECT(widget), "style-set", G_CALLBACK(OnStyleSet), NULL); | 192 g_signal_connect(G_OBJECT(widget), "style-set", G_CALLBACK(OnStyleSet), NULL); |
| 191 | 193 |
| 192 RoundedWindowData* data = new RoundedWindowData; | 194 RoundedWindowData* data = new RoundedWindowData; |
| 193 data->expected_width = -1; | 195 data->expected_width = -1; |
| 194 data->expected_height = -1; | 196 data->expected_height = -1; |
| 195 | 197 |
| 196 data->border_color = color; | 198 data->border_color = color; |
| 197 data->corner_size = corner_size; | 199 data->corner_size = corner_size; |
| 198 | 200 |
| 199 data->rounded_edges = rounded_edges; | 201 data->rounded_edges = rounded_edges; |
| 200 data->drawn_borders = drawn_borders; | 202 data->drawn_borders = drawn_borders; |
| 201 | 203 |
| 202 g_object_set_data_full(G_OBJECT(widget), kRoundedData, | 204 g_object_set_data_full(G_OBJECT(widget), kRoundedData, |
| 203 data, FreeRoundedWindowData); | 205 data, FreeRoundedWindowData); |
| 204 } | 206 } |
| 205 | 207 |
| 206 void StopActingAsRoundedWindow(GtkWidget* widget) { | 208 void StopActingAsRoundedWindow(GtkWidget* widget) { |
| 207 g_signal_handlers_disconnect_by_func(widget, | 209 g_signal_handlers_disconnect_by_func(widget, |
| 208 reinterpret_cast<gpointer>(OnRoundedWindowExpose), NULL); | 210 reinterpret_cast<gpointer>(OnRoundedWindowExpose), NULL); |
| 209 g_signal_handlers_disconnect_by_func(widget, | 211 g_signal_handlers_disconnect_by_func(widget, |
| 210 reinterpret_cast<gpointer>(OnStyleSet), NULL); | 212 reinterpret_cast<gpointer>(OnStyleSet), NULL); |
| 211 | 213 |
| 214 delete static_cast<RoundedWindowData*>( |
| 215 g_object_steal_data(G_OBJECT(widget), kRoundedData)); |
| 216 |
| 212 if (GTK_WIDGET_REALIZED(widget)) | 217 if (GTK_WIDGET_REALIZED(widget)) |
| 213 gdk_window_shape_combine_mask(widget->window, NULL, 0, 0); | 218 gdk_window_shape_combine_mask(widget->window, NULL, 0, 0); |
| 214 } | 219 } |
| 215 | 220 |
| 221 void SetRoundedWindowEdgesAndBorders(GtkWidget* widget, |
| 222 int corner_size, |
| 223 int rounded_edges, |
| 224 int drawn_borders) { |
| 225 DCHECK(widget); |
| 226 RoundedWindowData* data = static_cast<RoundedWindowData*>( |
| 227 g_object_get_data(G_OBJECT(widget), kRoundedData)); |
| 228 DCHECK(data); |
| 229 data->corner_size = corner_size; |
| 230 data->rounded_edges = rounded_edges; |
| 231 data->drawn_borders = drawn_borders; |
| 232 } |
| 233 |
| 216 void SetRoundedWindowBorderColor(GtkWidget* widget, GdkColor color) { | 234 void SetRoundedWindowBorderColor(GtkWidget* widget, GdkColor color) { |
| 217 DCHECK(widget); | 235 DCHECK(widget); |
| 218 RoundedWindowData* data = static_cast<RoundedWindowData*>( | 236 RoundedWindowData* data = static_cast<RoundedWindowData*>( |
| 219 g_object_get_data(G_OBJECT(widget), kRoundedData)); | 237 g_object_get_data(G_OBJECT(widget), kRoundedData)); |
| 220 DCHECK(data); | 238 DCHECK(data); |
| 221 data->border_color = color; | 239 data->border_color = color; |
| 222 } | 240 } |
| 223 | 241 |
| 224 } // namespace gtk_util | 242 } // namespace gtk_util |
| OLD | NEW |