aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2011-06-01 18:35:40 +0200
committerThomas White <taw@physics.org>2011-06-01 18:35:49 +0200
commitbcc9f89407ed1e632da249623fd63e493439ec39 (patch)
tree1d604ab225156548592165d01ef531c88ab623a9
parent247a81c6e1b78d91fc6126d03f4018eabba43119 (diff)
Make escape in main window also exit slideshow
-rw-r--r--src/mainwindow.c5
-rw-r--r--src/slideshow.c12
-rw-r--r--src/slideshow.h2
3 files changed, 17 insertions, 2 deletions
diff --git a/src/mainwindow.c b/src/mainwindow.c
index 1997951..289e875 100644
--- a/src/mainwindow.c
+++ b/src/mainwindow.c
@@ -322,6 +322,11 @@ static gboolean key_press_sig(GtkWidget *da, GdkEventKey *event,
next_slide_sig(NULL, p);
break;
+ case GDK_KEY_Escape :
+ if ( p->slideshow != NULL ) end_slideshow(p);
+ p->editing_object = NULL;
+ break;
+
}
/* FIXME: Invalidate only the necessary region */
diff --git a/src/slideshow.c b/src/slideshow.c
index 933a4dd..a7c98b0 100644
--- a/src/slideshow.c
+++ b/src/slideshow.c
@@ -120,6 +120,15 @@ static gint next_slide_sig(GtkWidget *widget, struct presentation *p)
}
+void end_slideshow(struct presentation *p)
+{
+ gtk_widget_destroy(p->ss_drawingarea);
+ gtk_widget_destroy(p->slideshow);
+ p->slideshow = NULL;
+ notify_slide_changed(p);
+}
+
+
static gboolean ss_key_press_sig(GtkWidget *da, GdkEventKey *event,
struct presentation *p)
{
@@ -141,8 +150,7 @@ static gboolean ss_key_press_sig(GtkWidget *da, GdkEventKey *event,
break;
case GDK_KEY_Escape :
- gtk_widget_destroy(p->ss_drawingarea);
- gtk_widget_destroy(p->slideshow);
+ end_slideshow(p);
break;
}
diff --git a/src/slideshow.h b/src/slideshow.h
index 635344c..5b332c7 100644
--- a/src/slideshow.h
+++ b/src/slideshow.h
@@ -32,4 +32,6 @@ extern void try_start_slideshow(struct presentation *p);
extern void notify_slideshow_slide_changed(struct presentation *p);
+extern void end_slideshow(struct presentation *p);
+
#endif /* SLIDESHOW_H */