OLD | NEW |
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 #include "ui/gfx/gtk_preserve_window.h" | 5 #include "ui/gfx/gtk_preserve_window.h" |
6 | 6 |
7 #include <gdk/gdk.h> | 7 #include <gdk/gdk.h> |
8 #include <gtk/gtk.h> | 8 #include <gtk/gtk.h> |
9 | 9 |
10 #include "ui/base/gtk/gtk_compat.h" | 10 #include "ui/base/gtk/gtk_compat.h" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 | 45 |
46 GObjectClass* gobject_class = G_OBJECT_CLASS(klass); | 46 GObjectClass* gobject_class = G_OBJECT_CLASS(klass); |
47 g_type_class_add_private(gobject_class, sizeof(GtkPreserveWindowPrivate)); | 47 g_type_class_add_private(gobject_class, sizeof(GtkPreserveWindowPrivate)); |
48 } | 48 } |
49 | 49 |
50 static void gtk_preserve_window_init(GtkPreserveWindow* widget) { | 50 static void gtk_preserve_window_init(GtkPreserveWindow* widget) { |
51 GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget); | 51 GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget); |
52 priv->preserve_window = FALSE; | 52 priv->preserve_window = FALSE; |
53 | 53 |
54 // These widgets always have their own window. | 54 // These widgets always have their own window. |
55 gtk_fixed_set_has_window(GTK_FIXED(widget), TRUE); | 55 gtk_widget_set_has_window(GTK_WIDGET(widget), TRUE); |
56 } | 56 } |
57 | 57 |
58 GtkWidget* gtk_preserve_window_new() { | 58 GtkWidget* gtk_preserve_window_new() { |
59 return GTK_WIDGET(g_object_new(GTK_TYPE_PRESERVE_WINDOW, NULL)); | 59 return GTK_WIDGET(g_object_new(GTK_TYPE_PRESERVE_WINDOW, NULL)); |
60 } | 60 } |
61 | 61 |
62 static void gtk_preserve_window_destroy(GtkObject* object) { | 62 static void gtk_preserve_window_destroy(GtkObject* object) { |
63 GtkWidget* widget = reinterpret_cast<GtkWidget*>(object); | 63 GtkWidget* widget = reinterpret_cast<GtkWidget*>(object); |
64 GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget); | 64 GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget); |
65 | 65 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 static void gtk_preserve_window_unrealize(GtkWidget* widget) { | 107 static void gtk_preserve_window_unrealize(GtkWidget* widget) { |
108 g_return_if_fail(GTK_IS_PRESERVE_WINDOW(widget)); | 108 g_return_if_fail(GTK_IS_PRESERVE_WINDOW(widget)); |
109 | 109 |
110 GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget); | 110 GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget); |
111 if (priv->preserve_window) { | 111 if (priv->preserve_window) { |
112 GtkWidgetClass* widget_class = | 112 GtkWidgetClass* widget_class = |
113 GTK_WIDGET_CLASS(gtk_preserve_window_parent_class); | 113 GTK_WIDGET_CLASS(gtk_preserve_window_parent_class); |
114 GtkContainerClass* container_class = | 114 GtkContainerClass* container_class = |
115 GTK_CONTAINER_CLASS(gtk_preserve_window_parent_class); | 115 GTK_CONTAINER_CLASS(gtk_preserve_window_parent_class); |
116 | 116 |
117 // Deprecated as of GTK 2.22. Used for compatibility. | 117 if (gtk_widget_get_mapped(widget)) { |
118 // It should be: gtk_widget_get_mapped() | |
119 if (GTK_WIDGET_MAPPED(widget)) { | |
120 widget_class->unmap(widget); | 118 widget_class->unmap(widget); |
121 | 119 |
122 // Deprecated as of GTK 2.22. Used for compatibility. | 120 gtk_widget_set_mapped(widget, FALSE); |
123 // It should be: gtk_widget_set_mapped(widget, FALSE) | |
124 GTK_WIDGET_UNSET_FLAGS(widget, GTK_MAPPED); | |
125 } | 121 } |
126 | 122 |
127 // This is the behavior from GtkWidget, inherited by GtkFixed. | 123 // This is the behavior from GtkWidget, inherited by GtkFixed. |
128 // It is unclear why we should not call the potentially overridden | 124 // It is unclear why we should not call the potentially overridden |
129 // unrealize method (via the callback), but doing so causes errors. | 125 // unrealize method (via the callback), but doing so causes errors. |
130 container_class->forall( | 126 container_class->forall( |
131 GTK_CONTAINER(widget), FALSE, | 127 GTK_CONTAINER(widget), FALSE, |
132 reinterpret_cast<GtkCallback>(gtk_widget_unrealize), NULL); | 128 reinterpret_cast<GtkCallback>(gtk_widget_unrealize), NULL); |
133 | 129 |
134 gtk_style_detach(widget->style); | 130 gtk_style_detach(widget->style); |
135 gdk_window_reparent(widget->window, gdk_get_default_root_window(), 0, 0); | 131 gdk_window_reparent(widget->window, gdk_get_default_root_window(), 0, 0); |
136 gtk_selection_remove_all(widget); | 132 gtk_selection_remove_all(widget); |
137 gdk_window_set_user_data(widget->window, NULL); | 133 gdk_window_set_user_data(widget->window, NULL); |
138 | 134 |
139 // Deprecated as of GTK 2.22. Used for compatibility. | 135 gtk_widget_set_realized(widget, FALSE); |
140 // It should be: gtk_widget_set_realized(widget, FALSE) | |
141 GTK_WIDGET_UNSET_FLAGS(widget, GTK_REALIZED); | |
142 } else { | 136 } else { |
143 GTK_WIDGET_CLASS(gtk_preserve_window_parent_class)->unrealize(widget); | 137 GTK_WIDGET_CLASS(gtk_preserve_window_parent_class)->unrealize(widget); |
144 } | 138 } |
145 } | 139 } |
146 | 140 |
147 gboolean gtk_preserve_window_get_preserve(GtkPreserveWindow* window) { | 141 gboolean gtk_preserve_window_get_preserve(GtkPreserveWindow* window) { |
148 g_return_val_if_fail(GTK_IS_PRESERVE_WINDOW(window), FALSE); | 142 g_return_val_if_fail(GTK_IS_PRESERVE_WINDOW(window), FALSE); |
149 GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(window); | 143 GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(window); |
150 | 144 |
151 return priv->preserve_window; | 145 return priv->preserve_window; |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 } | 218 } |
225 } | 219 } |
226 | 220 |
227 void gtk_preserve_window_delegate_resize(GtkPreserveWindow* widget, | 221 void gtk_preserve_window_delegate_resize(GtkPreserveWindow* widget, |
228 gboolean delegate) { | 222 gboolean delegate) { |
229 GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget); | 223 GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget); |
230 priv->delegate_resize = delegate; | 224 priv->delegate_resize = delegate; |
231 } | 225 } |
232 | 226 |
233 G_END_DECLS | 227 G_END_DECLS |
OLD | NEW |