aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2011-06-01 13:53:56 +0200
committerThomas White <taw@physics.org>2011-06-01 13:53:56 +0200
commitddd4bba22a4cd4ebd326694961190129d129d2fd (patch)
treeb6b4b31614e44293b08fc8a507cdf23ee1dc8a8b /src
parent61b40bb09d62de702706ef7fc8c9d4fa73af9595 (diff)
Put slideshow on second monitor
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.c6
-rw-r--r--src/presentation.h1
-rw-r--r--src/slideshow.c17
3 files changed, 23 insertions, 1 deletions
diff --git a/src/mainwindow.c b/src/mainwindow.c
index d0d668f..d407888 100644
--- a/src/mainwindow.c
+++ b/src/mainwindow.c
@@ -404,7 +404,11 @@ static gboolean expose_sig(GtkWidget *da, GdkEventExpose *event,
/* Overall background */
cairo_rectangle(cr, event->area.x, event->area.y,
event->area.width, event->area.height);
- cairo_set_source_rgb(cr, 0.9, 0.9, 0.9);
+ if ( p->slideshow == NULL ) {
+ cairo_set_source_rgb(cr, 0.9, 0.9, 0.9);
+ } else {
+ cairo_set_source_rgb(cr, 1.0, 0.3, 0.2);
+ }
cairo_fill(cr);
/* Get the overall size */
diff --git a/src/presentation.h b/src/presentation.h
index b6736b3..fe0abd2 100644
--- a/src/presentation.h
+++ b/src/presentation.h
@@ -61,6 +61,7 @@ struct presentation
GtkWidget *ss_drawingarea;
GdkCursor *blank_cursor;
int ss_blank;
+ char ss_geom[256];
double slide_width;
double slide_height;
diff --git a/src/slideshow.c b/src/slideshow.c
index a36aabe..1af0e18 100644
--- a/src/slideshow.c
+++ b/src/slideshow.c
@@ -152,6 +152,9 @@ static gboolean ss_realize_sig(GtkWidget *w, struct presentation *p)
p->blank_cursor = gdk_cursor_new(GDK_BLANK_CURSOR);
gdk_window_set_cursor(GDK_WINDOW(p->slideshow->window),
p->blank_cursor);
+
+ gtk_window_parse_geometry(GTK_WINDOW(w), p->ss_geom);
+
return FALSE;
}
@@ -159,6 +162,9 @@ static gboolean ss_realize_sig(GtkWidget *w, struct presentation *p)
void try_start_slideshow(struct presentation *p)
{
GtkWidget *n;
+ GdkScreen *screen;
+ int n_monitors;
+ int i;
/* Presentation already running? */
if ( p->slideshow != NULL ) return;
@@ -183,6 +189,17 @@ void try_start_slideshow(struct presentation *p)
gtk_widget_grab_focus(GTK_WIDGET(p->ss_drawingarea));
+ screen = gdk_screen_get_default();
+ n_monitors = gdk_screen_get_n_monitors(screen);
+ for ( i=0; i<n_monitors; i++ ) {
+
+ GdkRectangle rect;
+
+ gdk_screen_get_monitor_geometry(screen, i, &rect);
+ snprintf(p->ss_geom, 255, "%ix%i+%i+%i",
+ rect.width, rect.height, rect.x, rect.y);
+ }
+
p->slideshow = n;
gtk_window_fullscreen(GTK_WINDOW(n));
gtk_widget_show_all(GTK_WIDGET(n));