Added a way to leave the presentation from the keyboard or the mouse
This commit is contained in:
parent
be5699968b
commit
69dedd422c
|
@ -58,6 +58,7 @@ struct _Presenter
|
||||||
|
|
||||||
/* slideshow */
|
/* slideshow */
|
||||||
GtkWidget * sl_window;
|
GtkWidget * sl_window;
|
||||||
|
GtkWidget * sl_toolbar;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -85,6 +86,7 @@ static void _presenter_on_save(gpointer data);
|
||||||
static void _presenter_on_save_as(gpointer data);
|
static void _presenter_on_save_as(gpointer data);
|
||||||
static void _presenter_on_select_all(gpointer data);
|
static void _presenter_on_select_all(gpointer data);
|
||||||
static void _presenter_on_slideshow(gpointer data);
|
static void _presenter_on_slideshow(gpointer data);
|
||||||
|
static void _presenter_on_slideshow_close(gpointer data);
|
||||||
static gboolean _presenter_on_slideshow_closex(gpointer data);
|
static gboolean _presenter_on_slideshow_closex(gpointer data);
|
||||||
#ifndef EMBEDDED
|
#ifndef EMBEDDED
|
||||||
static void _presenter_on_unselect_all(gpointer data);
|
static void _presenter_on_unselect_all(gpointer data);
|
||||||
|
@ -112,6 +114,12 @@ static const DesktopAccel _presenter_accel[] =
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static const DesktopAccel _presenter_accel_slideshow[] =
|
||||||
|
{
|
||||||
|
{ G_CALLBACK(_presenter_on_slideshow_close), 0, GDK_KEY_Escape },
|
||||||
|
{ NULL, 0, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
#ifndef EMBEDDED
|
#ifndef EMBEDDED
|
||||||
static const DesktopMenu _presenter_menu_file[] =
|
static const DesktopMenu _presenter_menu_file[] =
|
||||||
{
|
{
|
||||||
|
@ -491,14 +499,31 @@ static void _presenter_present(Presenter * presenter)
|
||||||
|
|
||||||
static void _present_window(Presenter * presenter)
|
static void _present_window(Presenter * presenter)
|
||||||
{
|
{
|
||||||
|
GtkAccelGroup * group;
|
||||||
GdkColor black;
|
GdkColor black;
|
||||||
|
GtkWidget * vbox;
|
||||||
|
GtkToolItem * toolitem;
|
||||||
|
|
||||||
|
group = gtk_accel_group_new();
|
||||||
presenter->sl_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
presenter->sl_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
|
gtk_window_add_accel_group(GTK_WINDOW(presenter->sl_window), group);
|
||||||
|
desktop_accel_create(_presenter_accel_slideshow, presenter, group);
|
||||||
|
g_object_unref(group);
|
||||||
gtk_window_set_keep_above(GTK_WINDOW(presenter->sl_window), TRUE);
|
gtk_window_set_keep_above(GTK_WINDOW(presenter->sl_window), TRUE);
|
||||||
memset(&black, 0, sizeof(black));
|
memset(&black, 0, sizeof(black));
|
||||||
gtk_widget_modify_bg(presenter->sl_window, GTK_STATE_NORMAL, &black);
|
gtk_widget_modify_bg(presenter->sl_window, GTK_STATE_NORMAL, &black);
|
||||||
g_signal_connect_swapped(presenter->sl_window, "delete-event",
|
g_signal_connect_swapped(presenter->sl_window, "delete-event",
|
||||||
G_CALLBACK(_presenter_on_slideshow_closex), presenter);
|
G_CALLBACK(_presenter_on_slideshow_closex), presenter);
|
||||||
|
vbox = gtk_vbox_new(FALSE, 0);
|
||||||
|
presenter->sl_toolbar = gtk_toolbar_new();
|
||||||
|
toolitem = gtk_tool_button_new_from_stock(GTK_STOCK_QUIT);
|
||||||
|
g_signal_connect_swapped(toolitem, "clicked", G_CALLBACK(
|
||||||
|
_presenter_on_slideshow_close), presenter);
|
||||||
|
gtk_toolbar_insert(GTK_TOOLBAR(presenter->sl_toolbar), toolitem, -1);
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), presenter->sl_toolbar, FALSE, TRUE,
|
||||||
|
0);
|
||||||
|
gtk_container_add(GTK_CONTAINER(presenter->sl_window), vbox);
|
||||||
|
gtk_widget_show_all(vbox);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -632,12 +657,21 @@ static void _presenter_on_slideshow(gpointer data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* presenter_on_slideshow */
|
/* presenter_on_slideshow_close */
|
||||||
static gboolean _presenter_on_slideshow_closex(gpointer data)
|
static void _presenter_on_slideshow_close(gpointer data)
|
||||||
{
|
{
|
||||||
Presenter * presenter = data;
|
Presenter * presenter = data;
|
||||||
|
|
||||||
gtk_widget_hide(presenter->sl_window);
|
gtk_widget_hide(presenter->sl_window);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* presenter_on_slideshow_closex */
|
||||||
|
static gboolean _presenter_on_slideshow_closex(gpointer data)
|
||||||
|
{
|
||||||
|
Presenter * presenter = data;
|
||||||
|
|
||||||
|
_presenter_on_slideshow_close(presenter);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user