diff --git a/src/tpdfview.c b/src/tpdfview.c
index 0d3755958a800a9bb511ccacde5ef3e02678a2e2..e6fee214669f91edc7a8f68fa661d361229ef402 100644 (file)
--- a/src/tpdfview.c
+++ b/src/tpdfview.c
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
+/*
+ * Global variables.
+ */
+static gtk_tpdfv_screens_t *screens = NULL;
+
static void
exit_usage(char *name, int status)
{
exit(0);
} /* exit_version */
+static void
+toggle_fullscreen(GtkWindow *win)
+{
+ GdkWindowState state;
+
+ if (! gtk_widget_get_realized(GTK_WIDGET(win)))
+ return;
+
+ state = gdk_window_get_state(GTK_WIDGET(win)->window);
+
+ if (state & GDK_WINDOW_STATE_FULLSCREEN)
+ gtk_window_unfullscreen(win);
+ else
+ gtk_window_fullscreen(win);
+} /* toggle_fullscreen */
+
static void
on_destroy(GtkWidget __attribute__((unused)) *widget,
gpointer __attribute__((unused)) data)
} /* on_destroy */
static gboolean
-key_press(GtkWidget __attribute__((unused)) *widget,
- GdkEventKey *event, gpointer data)
+key_press(GtkWidget *window, GdkEventKey *event, gpointer data)
{
GtkWidget *tpdfv;
gtk_tpdfv_reload(tpdfv);
break;
+ case GDK_F:
+ toggle_fullscreen(GTK_WINDOW(window));
+ break;
+
/* navigation */
case GDK_Page_Up:
gtk_tpdfv_page_up(tpdfv);
case GDK_Right:
gtk_tpdfv_scroll_right(tpdfv);
break;
+
+ /* screen management */
+ case GDK_M:
+ {
+ gint n_screens = gtk_tpdfv_screens_number(screens);
+ gint screen = gtk_tpdfv_screens_window_get(screens,
+ GTK_WINDOW(window));
+
+ gtk_tpdfv_screens_window_set(screens,
+ GTK_WINDOW(window), (screen + 1) % n_screens);
+ }
+ break;
}
return FALSE;
} /* key_press */
if (! win)
return 1;
+ screens = gtk_tpdfv_screens_init(/* display = */ NULL);
+ if (! screens)
+ return 1;
+
snprintf(win_title, sizeof(win_title), "tpdfview: %s",
basename(filename));
gtk_window_set_title(GTK_WINDOW(win), win_title);
gtk_widget_show_all(win);
gtk_main();
+
+ gtk_tpdfv_screens_destroy(screens);
return 0;
} /* main */