[gcompris/gcomprixogoo] Fixed fullscreen mode to work on Windows.



commit b12d73b4e7ffc2e17ae420302043549ab9274573
Author: Bruno Coudoin <bruno coudoin free fr>
Date:   Sun Jan 31 18:38:01 2010 +0100

    Fixed fullscreen mode to work on Windows.

 src/gcompris/gcompris.c |   41 ++++++++++++++++++++++++++++++++---------
 1 files changed, 32 insertions(+), 9 deletions(-)
---
diff --git a/src/gcompris/gcompris.c b/src/gcompris/gcompris.c
index eafde87..64e2d68 100644
--- a/src/gcompris/gcompris.c
+++ b/src/gcompris/gcompris.c
@@ -1039,24 +1039,47 @@ void gc_board_end()
  */
 void gc_fullscreen_set(gboolean state)
 {
+  static gint window_x = 0;
+  static gint window_y = 0;
+  static gint window_w = BOARDWIDTH;
+  static gint window_h = BOARDHEIGHT;
+
   fullscreen = state;
   if(state)
     {
-      gdk_window_set_decorations (window->window, 0);
+      gtk_window_get_position ( (GtkWindow*)( window ), &window_x, &window_y );
+      gtk_window_get_size ( GTK_WINDOW ( window ), &window_w, &window_h );
+#ifdef WIN32
+      // WARNING: Doing this is required on Windows
+      //          but keep the window hidden on GNU/Linux
+      gtk_widget_hide ( window );
+#endif
+      gtk_window_set_decorated ( GTK_WINDOW ( window ), FALSE );
+      gtk_window_set_type_hint ( GTK_WINDOW ( window ),
+				 GDK_WINDOW_TYPE_HINT_DESKTOP );
       if (popt_sugar_look)
-        gtk_window_maximize (GTK_WINDOW(window));
+	gtk_window_maximize ( GTK_WINDOW( window ) );
       else
-        gtk_window_fullscreen (GTK_WINDOW(window));
-      gtk_widget_set_uposition (window, 0, 0);
+        gtk_window_fullscreen ( GTK_WINDOW ( window ) );
+
+      gtk_window_move ( GTK_WINDOW ( window ), 0, 0 );
+
+      GdkScreen *screen = gtk_window_get_screen ( GTK_WINDOW ( window ) );
+      gtk_window_resize ( GTK_WINDOW ( window ),
+			  gdk_screen_get_width (screen),
+			  gdk_screen_get_height (screen) );
     }
   else
     {
-      gdk_window_set_decorations (window->window, GDK_DECOR_ALL);
-      gtk_window_unfullscreen (GTK_WINDOW(window));
-
-      /* Mandatory or on windows we get iconified */
-      gtk_window_deiconify (GTK_WINDOW(window));
+      gtk_widget_hide ( window );
+      gtk_window_set_type_hint ( GTK_WINDOW ( window ),
+				 GDK_WINDOW_TYPE_HINT_NORMAL );
+      gtk_window_unfullscreen ( GTK_WINDOW ( window ) );
+      gtk_window_set_decorated ( GTK_WINDOW ( window ), TRUE );
+      gtk_window_move ( GTK_WINDOW ( window ), window_x, window_y );
+      gtk_window_resize ( GTK_WINDOW ( window ), window_w, window_h );
     }
+  gtk_window_present ( GTK_WINDOW ( window ) );
 
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]