summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/rounded_window.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/gtk/rounded_window.cc')
-rw-r--r--chrome/browser/gtk/rounded_window.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/chrome/browser/gtk/rounded_window.cc b/chrome/browser/gtk/rounded_window.cc
index 79af804..b6174b4 100644
--- a/chrome/browser/gtk/rounded_window.cc
+++ b/chrome/browser/gtk/rounded_window.cc
@@ -184,6 +184,8 @@ void ActAsRoundedWindow(
GtkWidget* widget, const GdkColor& color, int corner_size,
int rounded_edges, int drawn_borders) {
DCHECK(widget);
+ DCHECK(!g_object_get_data(G_OBJECT(widget), kRoundedData));
+
gtk_widget_set_app_paintable(widget, TRUE);
g_signal_connect(G_OBJECT(widget), "expose-event",
G_CALLBACK(OnRoundedWindowExpose), NULL);
@@ -209,10 +211,26 @@ void StopActingAsRoundedWindow(GtkWidget* widget) {
g_signal_handlers_disconnect_by_func(widget,
reinterpret_cast<gpointer>(OnStyleSet), NULL);
+ delete static_cast<RoundedWindowData*>(
+ g_object_steal_data(G_OBJECT(widget), kRoundedData));
+
if (GTK_WIDGET_REALIZED(widget))
gdk_window_shape_combine_mask(widget->window, NULL, 0, 0);
}
+void SetRoundedWindowEdgesAndBorders(GtkWidget* widget,
+ int corner_size,
+ int rounded_edges,
+ int drawn_borders) {
+ DCHECK(widget);
+ RoundedWindowData* data = static_cast<RoundedWindowData*>(
+ g_object_get_data(G_OBJECT(widget), kRoundedData));
+ DCHECK(data);
+ data->corner_size = corner_size;
+ data->rounded_edges = rounded_edges;
+ data->drawn_borders = drawn_borders;
+}
+
void SetRoundedWindowBorderColor(GtkWidget* widget, GdkColor color) {
DCHECK(widget);
RoundedWindowData* data = static_cast<RoundedWindowData*>(