GSList *targets;
};
+#define GTK_WINDOW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_WINDOW, GtkWindowPrivate))
+
typedef struct _GtkWindowPrivate GtkWindowPrivate;
struct _GtkWindowPrivate
{
+ guint above_initially : 1;
+ guint below_initially : 1;
guint fullscreen_initially : 1;
guint skips_taskbar : 1;
guint skips_pager : 1;
static void gtk_window_dispose (GObject *object);
static void gtk_window_destroy (GtkObject *object);
static void gtk_window_finalize (GObject *object);
-static void gtk_window_private_finalize (GtkWindowPrivate *priv);
static void gtk_window_show (GtkWidget *widget);
static void gtk_window_hide (GtkWidget *widget);
static void gtk_window_map (GtkWidget *widget);
(ka->keyval == kb->keyval);
}
-GtkWindowPrivate*
-gtk_window_get_private (GtkWindow *window)
-{
- GtkWindowPrivate *private;
- static GQuark private_quark = 0;
-
- if (!private_quark)
- private_quark = g_quark_from_static_string ("gtk-window-private");
-
- private = g_object_get_qdata (G_OBJECT (window), private_quark);
-
- if (!private)
- {
- private = g_new0 (GtkWindowPrivate, 1);
-
- private->fullscreen_initially = FALSE;
- private->skips_pager = FALSE;
- private->skips_taskbar = FALSE;
-
- g_object_set_qdata_full (G_OBJECT (window), private_quark,
- private,
- (GDestroyNotify) gtk_window_private_finalize);
- }
-
- return private;
-}
-
GType
gtk_window_get_type (void)
{
klass->move_focus = gtk_window_move_focus;
klass->keys_changed = gtk_window_keys_changed;
+ g_type_class_add_private (gobject_class, sizeof (GtkWindowPrivate));
+
/* Construct */
g_object_class_install_property (gobject_class,
PROP_TYPE,
g_return_if_fail (GTK_IS_WINDOW (window));
- priv = gtk_window_get_private (window);
+ priv = GTK_WINDOW_GET_PRIVATE (window);
setting = setting != FALSE;
g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);
- priv = gtk_window_get_private (window);
+ priv = GTK_WINDOW_GET_PRIVATE (window);
return priv->skips_taskbar;
}
g_return_if_fail (GTK_IS_WINDOW (window));
- priv = gtk_window_get_private (window);
+ priv = GTK_WINDOW_GET_PRIVATE (window);
setting = setting != FALSE;
g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);
- priv = gtk_window_get_private (window);
+ priv = GTK_WINDOW_GET_PRIVATE (window);
return priv->skips_pager;
}
return FALSE;
}
-static void
-gtk_window_private_finalize (GtkWindowPrivate *priv)
-{
-
- g_free (priv);
-}
-
static void
gtk_window_finalize (GObject *object)
{
gtk_window_map (GtkWidget *widget)
{
GtkWindow *window = GTK_WINDOW (widget);
+ GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE (window);
GdkWindow *toplevel;
- GtkWindowPrivate *priv;
- priv = gtk_window_get_private (window);
-
GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED);
if (window->bin.child &&
else
gdk_window_unfullscreen (toplevel);
- gdk_window_set_keep_above (toplevel, window->above_initially);
+ gdk_window_set_keep_above (toplevel, priv->above_initially);
- gdk_window_set_keep_below (toplevel, window->below_initially);
+ gdk_window_set_keep_below (toplevel, priv->below_initially);
/* No longer use the default settings */
window->need_default_size = FALSE;
gtk_window_unmap (GtkWidget *widget)
{
GtkWindow *window = GTK_WINDOW (widget);
+ GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE (widget);
GtkWindowGeometryInfo *info;
GdkWindowState state;
window->iconify_initially = state & GDK_WINDOW_STATE_ICONIFIED;
window->maximize_initially = state & GDK_WINDOW_STATE_MAXIMIZED;
window->stick_initially = state & GDK_WINDOW_STATE_STICKY;
- window->above_initially = state & GDK_WINDOW_STATE_ABOVE;
- window->below_initially = state & GDK_WINDOW_STATE_BELOW;
+ priv->above_initially = state & GDK_WINDOW_STATE_ABOVE;
+ priv->below_initially = state & GDK_WINDOW_STATE_BELOW;
}
static void
g_return_if_fail (GTK_IS_WINDOW (window));
widget = GTK_WIDGET (window);
- priv = gtk_window_get_private (window);
+ priv = GTK_WINDOW_GET_PRIVATE (window);
priv->fullscreen_initially = TRUE;
g_return_if_fail (GTK_IS_WINDOW (window));
widget = GTK_WIDGET (window);
- priv = gtk_window_get_private (window);
+ priv = GTK_WINDOW_GET_PRIVATE (window);
priv->fullscreen_initially = FALSE;
* Since: 2.4
**/
void
-gtk_window_set_keep_above (GtkWindow *window, gboolean setting)
+gtk_window_set_keep_above (GtkWindow *window,
+ gboolean setting)
{
GtkWidget *widget;
+ GtkWindowPrivate *priv;
GdkWindow *toplevel;
g_return_if_fail (GTK_IS_WINDOW (window));
widget = GTK_WIDGET (window);
+ priv = GTK_WINDOW_GET_PRIVATE (window);
- window->above_initially = setting;
+ priv->above_initially = setting;
if (setting)
- window->below_initially = FALSE;
+ priv->below_initially = FALSE;
if (window->frame)
toplevel = window->frame;
* Since: 2.4
**/
void
-gtk_window_set_keep_below (GtkWindow *window, gboolean setting)
+gtk_window_set_keep_below (GtkWindow *window,
+ gboolean setting)
{
GtkWidget *widget;
+ GtkWindowPrivate *priv;
GdkWindow *toplevel;
g_return_if_fail (GTK_IS_WINDOW (window));
widget = GTK_WIDGET (window);
+ priv = GTK_WINDOW_GET_PRIVATE (window);
- window->below_initially = setting;
+ priv->below_initially = setting;
if (setting)
- window->above_initially = FALSE;
+ priv->above_initially = FALSE;
if (window->frame)
toplevel = window->frame;