[gnome-games] glines: Remove games_settings_bind_window_state
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games] glines: Remove games_settings_bind_window_state
- Date: Wed, 29 Aug 2012 23:46:42 +0000 (UTC)
commit 6455af9f8bcbcd99ca8fd01c00879eebb2188ad9
Author: Robert Ancell <robert ancell canonical com>
Date: Thu Aug 30 11:46:01 2012 +1200
glines: Remove games_settings_bind_window_state
glines/data/org.gnome.glines.gschema.xml.in | 16 ++
glines/src/Makefile.am | 2 -
glines/src/games-settings.c | 225 ---------------------------
glines/src/games-settings.h | 40 -----
glines/src/glines.c | 44 +++++-
5 files changed, 58 insertions(+), 269 deletions(-)
---
diff --git a/glines/data/org.gnome.glines.gschema.xml.in b/glines/data/org.gnome.glines.gschema.xml.in
index 4e47646..91f4a92 100644
--- a/glines/data/org.gnome.glines.gschema.xml.in
+++ b/glines/data/org.gnome.glines.gschema.xml.in
@@ -35,5 +35,21 @@
<_summary>Game preview</_summary>
<_description>Game preview from last saved session.</_description>
</key>
+ <key name="window-width" type="i">
+ <default>600</default>
+ <_summary>Width of the window in pixels</_summary>
+ </key>
+ <key name="window-height" type="i">
+ <default>400</default>
+ <_summary>Height of the window in pixels</_summary>
+ </key>
+ <key name="window-is-maximized" type="b">
+ <default>false</default>
+ <_summary>true if the window is maximized</_summary>
+ </key>
+ <key name="window-is-fullscreen" type="b">
+ <default>false</default>
+ <_summary>true if the window is fullscren</_summary>
+ </key>
</schema>
</schemalist>
diff --git a/glines/src/Makefile.am b/glines/src/Makefile.am
index b6beb52..c12bac2 100644
--- a/glines/src/Makefile.am
+++ b/glines/src/Makefile.am
@@ -7,8 +7,6 @@ glines_SOURCES = \
games-gridframe.h \
games-preimage.c \
games-preimage.h \
- games-settings.c \
- games-settings.h \
games-stock.c \
games-stock.h \
glines.c \
diff --git a/glines/src/glines.c b/glines/src/glines.c
index ec65941..3d15506 100644
--- a/glines/src/glines.c
+++ b/glines/src/glines.c
@@ -43,7 +43,6 @@
#include "games-file-list.h"
#include "games-preimage.h"
#include "games-gridframe.h"
-#include "games-settings.h"
#include "games-stock.h"
#define KEY_BACKGROUND_COLOR "background-color"
@@ -100,6 +99,9 @@ static GtkWidget *draw_area;
static GtkWidget *app, *statusbar, *pref_dialog, *gridframe;
static GtkWidget *preview_widgets[MAXNPIECES];
+static gint window_width = 0, window_height = 0;
+static gboolean window_is_fullscreen = FALSE, window_is_maximized = FALSE;
+
static field_props field[MAXFIELDSIZE * MAXFIELDSIZE];
/* Pre-rendering image data prepared from file. */
@@ -1493,6 +1495,28 @@ init_config (void)
set_sizes (game_size);
}
+static gboolean
+window_configure_event_cb (GtkWidget *widget, GdkEventConfigure *event)
+{
+ if (!window_is_maximized && !window_is_fullscreen)
+ {
+ window_width = event->width;
+ window_height = event->height;
+ }
+
+ return FALSE;
+}
+
+static gboolean
+window_state_event_cb (GtkWidget *widget, GdkEventWindowState *event)
+{
+ if ((event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) != 0)
+ window_is_maximized = (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) != 0;
+ if ((event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) != 0)
+ window_is_fullscreen = (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) != 0;
+ return FALSE;
+}
+
static void
startup_cb (GApplication *application)
{
@@ -1527,8 +1551,14 @@ startup_cb (GApplication *application)
}
app = GTK_WIDGET (gtk_builder_get_object (builder, "glines_window"));
+ g_signal_connect (GTK_WINDOW (app), "configure-event", G_CALLBACK (window_configure_event_cb), NULL);
+ g_signal_connect (GTK_WINDOW (app), "window-state-event", G_CALLBACK (window_state_event_cb), NULL);
+ gtk_window_set_default_size (GTK_WINDOW (app), g_settings_get_int (settings, "window-width"), g_settings_get_int (settings, "window-height"));
+ if (g_settings_get_boolean (settings, "window-is-fullscreen"))
+ gtk_window_fullscreen (GTK_WINDOW (app));
+ if (g_settings_get_boolean (settings, "window-is-maximized"))
+ gtk_window_maximize (GTK_WINDOW (app));
gtk_application_add_window (GTK_APPLICATION (application), GTK_WINDOW (app));
- games_settings_bind_window_state ("/org/gnome/glines/", GTK_WINDOW (app));
hbox = GTK_WIDGET (gtk_builder_get_object (builder, "top_box"));
@@ -1590,6 +1620,15 @@ activate_cb (GApplication *application)
start_game ();
}
+static void
+shutdown_cb (GApplication *application)
+{
+ g_settings_set_int (settings, "window-width", window_width);
+ g_settings_set_int (settings, "window-height", window_height);
+ g_settings_set_boolean (settings, "window-is-maximized", window_is_maximized);
+ g_settings_set_boolean (settings, "window-is-fullscreen", window_is_fullscreen);
+}
+
int
main (int argc, char *argv[])
{
@@ -1627,6 +1666,7 @@ main (int argc, char *argv[])
application = gtk_application_new ("org.gnome.glines", G_APPLICATION_FLAGS_NONE);
g_signal_connect (application, "startup", G_CALLBACK (startup_cb), NULL);
g_signal_connect (application, "activate", G_CALLBACK (activate_cb), NULL);
+ g_signal_connect (application, "shutdown", G_CALLBACK (shutdown_cb), NULL);
status = g_application_run (G_APPLICATION (application), argc, argv);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]