[gnome-games] glines: Remove games_settings_bind_window_state



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]