diff -u hornsey-1.5.1/debian/changelog hornsey-1.5.1/debian/changelog --- hornsey-1.5.1/debian/changelog +++ hornsey-1.5.1/debian/changelog @@ -1,3 +1,9 @@ +hornsey (1.5.1-1ubuntu1) lucid; urgency=low + + * src/hrn-window.c: If F11 is pressed, toggle fullscreen (LP: #523851) + + -- Michael Terry Wed, 17 Feb 2010 15:40:41 -0500 + hornsey (1.5.1-1) unstable; urgency=low * Initial release. (Closes: #565151) only in patch2: unchanged: --- hornsey-1.5.1.orig/src/hrn-window.c +++ hornsey-1.5.1/src/hrn-window.c @@ -14,6 +14,8 @@ GtkClutterEmbed *embed; ClutterActor *internal; HrnStateManager *state_manager; + int orig_width; + int orig_height; }; #define GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), HRN_TYPE_WINDOW, HrnWindowPrivate)) @@ -68,6 +70,10 @@ hrn_quit (); return TRUE; } + else if (event->keyval == GDK_F11) { + hrn_window_toggle_fullscreen (HRN_WINDOW (window)); + return TRUE; + } return gtk_window_propagate_key_event (window, event); } @@ -156,9 +162,13 @@ hrn_window_fullscreen (HrnWindow *self) { #ifndef DISABLE_MUTTER_MOBLIN_FULLSCREEN_HACK + HrnWindowPrivate *priv; GdkScreen *screen = gdk_screen_get_default (); gint width, height; + priv = GET_PRIVATE (self); + gtk_window_get_size (GTK_WINDOW (self), &priv->orig_width, &priv->orig_height); + /* XXX: This is a hack so that mutter doesn't disable the panel as it would * for a real fullscreen window. * @@ -176,6 +186,41 @@ #endif } +void +hrn_window_unfullscreen (HrnWindow *self) +{ +#ifndef DISABLE_MUTTER_MOBLIN_FULLSCREEN_HACK + HrnWindowPrivate *priv; + + priv = GET_PRIVATE (self); + + if (priv->orig_width > 0 || priv->orig_height > 0) { + gtk_window_set_decorated (GTK_WINDOW (self), TRUE); + gtk_window_resize (GTK_WINDOW (self), priv->orig_width, priv->orig_height); + } +#else + gtk_window_unfullscreen (GTK_WINDOW (self)); +#endif +} + +void +hrn_window_toggle_fullscreen (HrnWindow *self) +{ +#ifndef DISABLE_MUTTER_MOBLIN_FULLSCREEN_HACK + if (gtk_window_get_decorated (GTK_WINDOW (self))) + hrn_window_fullscreen (self); + else + hrn_window_unfullscreen (self); +#else + if (GTK_WINDOW (self)->window) { + if (gdk_window_get_state (GTK_WINDOW (self)->window) & GDK_WINDOW_STATE_FULLSCREEN) + hrn_window_unfullscreen (self); + else + hrn_window_fullscreen (self); + } +#endif +} + ClutterActor * hrn_window_get_stage (HrnWindow *self) { only in patch2: unchanged: --- hornsey-1.5.1.orig/src/hrn-window.h +++ hornsey-1.5.1/src/hrn-window.h @@ -47,6 +47,8 @@ HrnWindow *hrn_window_new (HrnStateManager *manager); void hrn_window_fullscreen (HrnWindow *self); +void hrn_window_unfullscreen (HrnWindow *self); +void hrn_window_toggle_fullscreen (HrnWindow *self); ClutterActor *hrn_window_get_stage (HrnWindow *self); void hrn_window_set_internal_actor (HrnWindow *self, ClutterActor *actor);