Going fullscreen and back



Hi there,

The small working code below shows
how my app goes fullscreen and back.

1) Is there a better way of doing this?

2) This code works fine in Enlightenment,
KDE, BlackBox, IceWM, etc. In Gnome and XFCE
it works, but the desktop bars are still visible
(I suppose it should be possible to change this?).

However, in GNOME and only in GNOME, I have to
subtract 1 pixel, on width or height, for this to work.
In other words, if I replace this:

gdk_window_move_resize (window->window,
0, 0, gdk_screen_width (), gdk_screen_height () - 1);

by this:
gdk_window_move_resize (window->window,
0, 0, gdk_screen_width (), gdk_screen_height ());

poor Gnome WM gets confused, indeed goes fullscreen,
but does not come back... :-(

What is the best way to handle this?
going fullscreen is a very useful feature
in many scientific/engineering apps.

Many thanks,
Carlos

*** working code: going fullscreen and back ***
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>

int x, y, w, h;

int press_event (GtkWidget *widget, GdkEventKey *event, GtkWidget *window)
{
static int fullscreen = FALSE;

switch (event->keyval)
 {
 case GDK_Escape:
 if (fullscreen == FALSE)
   {
   gtk_window_get_position (GTK_WINDOW (window), &x, &y);
   gtk_window_get_size (GTK_WINDOW (window), &w, &h);

   gtk_window_set_decorated (GTK_WINDOW (window), FALSE);
   gdk_window_raise (window->window);
   gdk_window_move_resize (window->window,
   0, 0, gdk_screen_width (), gdk_screen_height () - 1);
   fullscreen = TRUE;
   }
 else
   {
   gtk_window_set_decorated (GTK_WINDOW (window), TRUE);
   gdk_window_move_resize (window->window, x, y, w, h);
   fullscreen = FALSE;
   }
 }

return FALSE;
}

int main (int argc, char **argv)
{
GtkWidget *window;

gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (window, 200, 200);
g_signal_connect_after (G_OBJECT (window),
"key_press_event", G_CALLBACK (press_event), window);
gtk_widget_show (window);

gtk_main ();
return 0;
}




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