Also the presentation monitor to be changed

This commit is contained in:
Pierre Pronchery 2013-11-07 01:31:45 +01:00
parent 726941b719
commit 5ae7cd11e5
2 changed files with 30 additions and 1 deletions

View File

@ -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);

View File

@ -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);