From 5ae7cd11e52ffe44b3c78cc1460ee268e1ca8e1e Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Thu, 7 Nov 2013 01:31:45 +0100 Subject: [PATCH] Also the presentation monitor to be changed --- src/presenter.c | 28 +++++++++++++++++++++++++++- src/presenter.h | 3 +++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/presenter.c b/src/presenter.c index 26f379d..fdb5c1b 100644 --- a/src/presenter.c +++ b/src/presenter.c @@ -37,6 +37,7 @@ struct _Presenter /* preferences */ Config * config; + int monitor; /* widgets */ GtkWidget * window; @@ -281,6 +282,8 @@ Presenter * presenter_new(void) object_delete(presenter); return NULL; } + /* FIXME load the configuration */ + presenter->monitor = -1; /* widgets */ group = gtk_accel_group_new(); /* window */ @@ -359,6 +362,25 @@ void presenter_delete(Presenter * presenter) } +/* accessors */ +/* presenter_set_monitor */ +int presenter_set_monitor(Presenter * presenter, int monitor) +{ + GdkScreen * screen; + + if(monitor < 0) + { + presenter->monitor = -1; + return 0; + } + screen = gdk_screen_get_default(); + if(monitor >= gdk_screen_get_n_monitors(screen)) + return -1; + presenter->monitor = monitor; + return 0; +} + + /* useful */ /* presenter_about */ /* callbacks */ @@ -532,13 +554,17 @@ static void _present_window(Presenter * presenter); static void _presenter_present(Presenter * presenter) { GdkScreen * screen; + int monitor = 0; GdkRectangle rect; if(presenter->sl_window == NULL) _present_window(presenter); /* (re-)configure the window */ screen = gdk_screen_get_default(); - gdk_screen_get_monitor_geometry(screen, 0, &rect); + if(presenter->monitor >= 0 && presenter->monitor + < gdk_screen_get_n_monitors(screen)) + monitor = presenter->monitor; + gdk_screen_get_monitor_geometry(screen, monitor, &rect); gtk_window_move(GTK_WINDOW(presenter->sl_window), rect.x, rect.y); gtk_window_resize(GTK_WINDOW(presenter->sl_window), rect.width, rect.height); diff --git a/src/presenter.h b/src/presenter.h index 8d34438..d14a5b9 100644 --- a/src/presenter.h +++ b/src/presenter.h @@ -28,6 +28,9 @@ typedef struct _Presenter Presenter; Presenter * presenter_new(void); void presenter_delete(Presenter * presenter); +/* accessors */ +int presenter_set_monitor(Presenter * presenter, int monitor); + /* useful */ int presenter_error(Presenter * presenter, char const * message, int ret);