/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2009 Free Software Foundation
+ Copyright (C) 2009, 2010 Free Software Foundation
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
void
psppire_conf_save_window_geometry (PsppireConf *conf,
const gchar *base,
- GdkEvent *e)
+ GtkWindow *gtk_window)
{
- switch (e->type)
- {
- case GDK_CONFIGURE:
- {
- GdkEventConfigure *event = &e->configure;
+ gboolean maximized;
+ GdkWindow *w;
- if ( gdk_window_get_state (event->window) &
- GDK_WINDOW_STATE_MAXIMIZED )
- return;
+ w = gtk_widget_get_window (GTK_WIDGET (gtk_window));
+ if (w == NULL)
+ return;
- psppire_conf_set_int (conf, base, "height", event->height);
- psppire_conf_set_int (conf, base, "width", event->width);
+ maximized = (gdk_window_get_state (w) & GDK_WINDOW_STATE_MAXIMIZED) != 0;
+ psppire_conf_set_boolean (conf, base, "maximize", maximized);
- psppire_conf_set_int (conf, base, "x", event->x);
- psppire_conf_set_int (conf, base, "y", event->y);
- }
- break;
- case GDK_WINDOW_STATE:
- {
- GdkEventWindowState *event = &e->window_state;
+ if (!maximized)
+ {
+ gint width, height;
+ gint x, y;
- psppire_conf_set_boolean (conf, base, "maximize",
- event->new_window_state &
- GDK_WINDOW_STATE_MAXIMIZED );
- }
- break;
- default:
- break;
- };
+ gdk_drawable_get_size (w, &width, &height);
+ gdk_window_get_position (w, &x, &y);
+ psppire_conf_set_int (conf, base, "height", height);
+ psppire_conf_set_int (conf, base, "width", width);
+ psppire_conf_set_int (conf, base, "x", x);
+ psppire_conf_set_int (conf, base, "y", y);
+ }
}
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2009 Free Software Foundation
+ Copyright (C) 2009, 2010 Free Software Foundation
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
void psppire_conf_save_window_geometry (PsppireConf *,
const gchar *,
- GdkEvent *);
+ GtkWindow *);
G_END_DECLS
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2007 Free Software Foundation
+ Copyright (C) 2007, 2010 Free Software Foundation
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
g_object_get (dialog, "name", &base, NULL);
- psppire_conf_save_window_geometry (conf, base, event);
+ psppire_conf_save_window_geometry (conf, base, GTK_WINDOW (dialog));
return FALSE;
}
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2009 Free Software Foundation
+ Copyright (C) 2009, 2010 Free Software Foundation
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
}
-static gboolean
-save_geometry (GtkWidget *window, GdkEvent *event, gpointer data)
-{
- const gchar *base = G_OBJECT_TYPE_NAME (window);
-
- PsppireConf *conf = psppire_conf_new ();
-
- psppire_conf_save_window_geometry (conf, base, event);
-
- return FALSE;
-}
-
-
static void
psppire_window_finalize (GObject *object)
{
{
PsppireWindowRegister *reg = psppire_window_register_new ();
+ const gchar *base = G_OBJECT_TYPE_NAME (w);
+
+ PsppireConf *conf = psppire_conf_new ();
+
+ psppire_conf_save_window_geometry (conf, base, GTK_WINDOW (w));
+
+
if ( w->dirty )
{
gint response = psppire_window_query_save (w);
g_object_set (window, "icon-name", "psppicon", NULL);
- g_signal_connect (window, "configure-event",
- G_CALLBACK (save_geometry), window);
-
- g_signal_connect (window, "window-state-event",
- G_CALLBACK (save_geometry), window);
-
g_signal_connect (window, "realize",
G_CALLBACK (on_realize), window);