[gthumb] slideshow: allow to customize the keyboard shortcuts
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] slideshow: allow to customize the keyboard shortcuts
- Date: Sun, 24 Nov 2019 12:34:08 +0000 (UTC)
commit 701a9f866d0c95b2f7d0a56a004472a2d24b78a0
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sun Nov 17 10:00:51 2019 +0100
slideshow: allow to customize the keyboard shortcuts
extensions/slideshow/actions.c | 37 ++++++
extensions/slideshow/actions.h | 4 +
extensions/slideshow/callbacks.c | 7 +-
extensions/slideshow/gth-slideshow.c | 241 ++++++++++++++++++-----------------
extensions/slideshow/gth-slideshow.h | 10 +-
extensions/slideshow/main.c | 7 +
extensions/slideshow/shortcuts.h | 27 ++++
gthumb/gth-main-default-types.c | 1 -
gthumb/gth-shortcut.h | 1 -
gthumb/gth-shortcuts-window.c | 2 +-
gthumb/gth-window.c | 22 +++-
gthumb/gth-window.h | 3 +
12 files changed, 235 insertions(+), 127 deletions(-)
---
diff --git a/extensions/slideshow/actions.c b/extensions/slideshow/actions.c
index c94b9b5b..d3c9f109 100644
--- a/extensions/slideshow/actions.c
+++ b/extensions/slideshow/actions.c
@@ -148,3 +148,40 @@ gth_browser_activate_slideshow (GSimpleAction *action,
_g_object_list_unref (file_list);
_gtk_tree_path_list_free (items);
}
+
+
+void
+gth_slideshow_activate_close (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ gth_slideshow_close (GTH_SLIDESHOW (user_data));
+}
+
+
+void
+gth_slideshow_activate_toggle_pause (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ gth_slideshow_toggle_pause (GTH_SLIDESHOW (user_data));
+}
+
+
+void
+gth_slideshow_activate_next_image (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ gth_slideshow_load_next_image (GTH_SLIDESHOW (user_data));
+}
+
+
+void
+gth_slideshow_activate_previous_image (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ gth_slideshow_load_prev_image (GTH_SLIDESHOW (user_data));
+}
+
diff --git a/extensions/slideshow/actions.h b/extensions/slideshow/actions.h
index 6e262577..f5684716 100644
--- a/extensions/slideshow/actions.h
+++ b/extensions/slideshow/actions.h
@@ -25,5 +25,9 @@
#include <gthumb.h>
DEF_ACTION_CALLBACK (gth_browser_activate_slideshow)
+DEF_ACTION_CALLBACK (gth_slideshow_activate_close)
+DEF_ACTION_CALLBACK (gth_slideshow_activate_toggle_pause)
+DEF_ACTION_CALLBACK (gth_slideshow_activate_next_image)
+DEF_ACTION_CALLBACK (gth_slideshow_activate_previous_image)
#endif /* ACTIONS_H */
diff --git a/extensions/slideshow/callbacks.c b/extensions/slideshow/callbacks.c
index 6932ed30..801dcd93 100644
--- a/extensions/slideshow/callbacks.c
+++ b/extensions/slideshow/callbacks.c
@@ -28,6 +28,7 @@
#include "callbacks.h"
#include "gth-slideshow-preferences.h"
#include "preferences.h"
+#include "shortcuts.h"
static const GActionEntry actions[] = {
@@ -36,7 +37,11 @@ static const GActionEntry actions[] = {
static const GthShortcut shortcuts[] = {
- { "slideshow", N_("Presentation"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER,
GTH_SHORTCUT_CATEGORY_FILE_MANAGER, "F5" },
+ { "slideshow", N_("Start presentation"), GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER,
GTH_SHORTCUT_CATEGORY_VIEWER, "F5" },
+ { "slideshow-close", N_("Terminate presentation"), GTH_SHORTCUT_CONTEXT_SLIDESHOW,
GTH_SHORTCUT_CATEGORY_SLIDESHOW, "Escape" },
+ { "slideshow-toggle-pause", N_("Pause/Resume presentation"), GTH_SHORTCUT_CONTEXT_SLIDESHOW,
GTH_SHORTCUT_CATEGORY_SLIDESHOW, "p" },
+ { "slideshow-next-image", N_("Show next file"), GTH_SHORTCUT_CONTEXT_SLIDESHOW,
GTH_SHORTCUT_CATEGORY_SLIDESHOW, "space" },
+ { "slideshow-previous-image", N_("Show previous file"), GTH_SHORTCUT_CONTEXT_SLIDESHOW,
GTH_SHORTCUT_CATEGORY_SLIDESHOW, "b" },
};
diff --git a/extensions/slideshow/gth-slideshow.c b/extensions/slideshow/gth-slideshow.c
index 4a9d0e35..b5fd115e 100644
--- a/extensions/slideshow/gth-slideshow.c
+++ b/extensions/slideshow/gth-slideshow.c
@@ -32,6 +32,7 @@
#endif /* HAVE_GSTREAMER */
#include "gth-slideshow.h"
#include "gth-transition.h"
+#include "actions.h"
#define HIDE_CURSOR_DELAY 1
#define HIDE_PAUSED_SIGN_DELAY 1
@@ -90,33 +91,16 @@ struct _GthSlideshowPrivate {
G_DEFINE_TYPE_WITH_CODE (GthSlideshow,
gth_slideshow,
- GTK_TYPE_WINDOW,
+ GTH_TYPE_WINDOW,
G_ADD_PRIVATE (GthSlideshow))
-static void
-_gth_slideshow_close_cb (gpointer user_data)
-{
- GthSlideshow *self = user_data;
- gboolean close_browser;
- GthBrowser *browser;
-
- browser = self->priv->browser;
- close_browser = ! gtk_widget_get_visible (GTK_WIDGET (browser));
- self->priv->projector->show_cursor (self);
- self->priv->projector->finalize (self);
- gtk_widget_destroy (GTK_WIDGET (self));
-
- if (close_browser)
- gth_window_close (GTH_WINDOW (browser));
-}
-
-
-static void
-_gth_slideshow_close (GthSlideshow *self)
-{
- call_when_idle (_gth_slideshow_close_cb, self);
-}
+static const GActionEntry actions[] = {
+ { "slideshow-close", gth_slideshow_activate_close },
+ { "slideshow-toggle-pause", gth_slideshow_activate_toggle_pause },
+ { "slideshow-next-image", gth_slideshow_activate_next_image },
+ { "slideshow-previous-image", gth_slideshow_activate_previous_image },
+};
static int
@@ -141,9 +125,6 @@ _gth_slideshow_reset_current (GthSlideshow *self)
}
-static void _gth_slideshow_load_next_image (GthSlideshow *self);
-
-
static void
preloader_load_ready_cb (GObject *source_object,
GAsyncResult *result,
@@ -167,7 +148,7 @@ preloader_load_ready_cb (GObject *source_object,
&error))
{
g_clear_error (&error);
- _gth_slideshow_load_next_image (self);
+ gth_slideshow_load_next_image (self);
return;
}
@@ -175,7 +156,7 @@ preloader_load_ready_cb (GObject *source_object,
self->priv->current_pixbuf = gth_image_get_pixbuf (image);
if (self->priv->current_pixbuf == NULL) {
- _gth_slideshow_load_next_image (self);
+ gth_slideshow_load_next_image (self);
return;
}
@@ -203,7 +184,7 @@ _gth_slideshow_load_current_image (GthSlideshow *self)
if (self->priv->current == NULL) {
if (! self->priv->one_loaded || ! self->priv->wrap_around) {
- _gth_slideshow_close (self);
+ gth_slideshow_close (self);
return;
}
_gth_slideshow_reset_current (self);
@@ -232,34 +213,6 @@ _gth_slideshow_load_current_image (GthSlideshow *self)
}
-static void
-_gth_slideshow_load_next_image (GthSlideshow *self)
-{
- self->priv->projector->load_next_image (self);
- self->priv->direction = GTH_SLIDESHOW_DIRECTION_FORWARD;
-
- if (self->priv->paused)
- return;
-
- self->priv->current = self->priv->current->next;
- _gth_slideshow_load_current_image (self);
-}
-
-
-static void
-_gth_slideshow_load_prev_image (GthSlideshow *self)
-{
- self->priv->projector->load_prev_image (self);
- self->priv->direction = GTH_SLIDESHOW_DIRECTION_BACKWARD;
-
- if (self->priv->paused)
- return;
-
- self->priv->current = self->priv->current->prev;
- _gth_slideshow_load_current_image (self);
-}
-
-
static gboolean
next_image_cb (gpointer user_data)
{
@@ -269,7 +222,7 @@ next_image_cb (gpointer user_data)
g_source_remove (self->priv->next_event);
self->priv->next_event = 0;
}
- _gth_slideshow_load_next_image (self);
+ gth_slideshow_load_next_image (self);
return FALSE;
}
@@ -352,27 +305,6 @@ hide_cursor_cb (gpointer data)
}
-static void
-_gth_slideshow_toggle_pause (GthSlideshow *self)
-{
- self->priv->paused = ! self->priv->paused;
- if (self->priv->paused) {
- self->priv->projector->paused (self);
-#if HAVE_GSTREAMER
- if (self->priv->playbin != NULL)
- gst_element_set_state (self->priv->playbin, GST_STATE_PAUSED);
-#endif
- }
- else { /* resume */
- _gth_slideshow_load_next_image (self);
-#if HAVE_GSTREAMER
- if (self->priv->playbin != NULL)
- gst_element_set_state (self->priv->playbin, GST_STATE_PLAYING);
-#endif
- }
-}
-
-
#if HAVE_GSTREAMER
@@ -451,41 +383,10 @@ _gth_slideshow_key_press_cb (GthSlideshow *self,
GdkEventKey *event,
gpointer user_data)
{
- gboolean handled = TRUE;
-
- switch (event->keyval) {
- case GDK_KEY_F5:
- case GDK_KEY_Escape:
- case GDK_KEY_q:
- _gth_slideshow_close (self);
- break;
-
- case GDK_KEY_p:
- _gth_slideshow_toggle_pause (self);
- break;
-
- case GDK_KEY_space:
- case GDK_KEY_Down:
- case GDK_KEY_Right:
- case GDK_KEY_Page_Down:
- if (self->priv->paused)
- _gth_slideshow_toggle_pause (self);
- else
- _gth_slideshow_load_next_image (self);
- break;
-
- case GDK_KEY_BackSpace:
- case GDK_KEY_Up:
- case GDK_KEY_Left:
- case GDK_KEY_Page_Up:
- _gth_slideshow_load_prev_image (self);
- break;
-
- default:
- handled = FALSE;
- }
-
- return handled;
+ return gth_window_activate_shortcut (GTH_WINDOW (self),
+ GTH_SHORTCUT_CONTEXT_SLIDESHOW,
+ event->keyval,
+ event->state);
}
@@ -537,6 +438,14 @@ _gth_slideshow_construct (GthSlideshow *self,
self->priv->projector->construct (self);
+ g_action_map_add_action_entries (G_ACTION_MAP (self),
+ actions,
+ G_N_ELEMENTS (actions),
+ self);
+ gth_window_copy_shortcuts (GTH_WINDOW (self),
+ GTH_WINDOW (self->priv->browser),
+ GTH_SHORTCUT_CONTEXT_SLIDESHOW);
+
g_signal_connect (self, "show", G_CALLBACK (gth_slideshow_show_cb), self);
g_signal_connect (self,
@@ -613,6 +522,98 @@ gth_slideshow_set_random_order (GthSlideshow *self,
}
+void
+gth_slideshow_toggle_pause (GthSlideshow *self)
+{
+ g_return_if_fail (GTH_IS_SLIDESHOW (self));
+
+ self->priv->paused = ! self->priv->paused;
+ if (self->priv->paused) {
+ self->priv->projector->paused (self);
+#if HAVE_GSTREAMER
+ if (self->priv->playbin != NULL)
+ gst_element_set_state (self->priv->playbin, GST_STATE_PAUSED);
+#endif
+ }
+ else { /* resume */
+ gth_slideshow_load_next_image (self);
+#if HAVE_GSTREAMER
+ if (self->priv->playbin != NULL)
+ gst_element_set_state (self->priv->playbin, GST_STATE_PLAYING);
+#endif
+ }
+}
+
+
+void
+gth_slideshow_load_next_image (GthSlideshow *self)
+{
+ g_return_if_fail (GTH_IS_SLIDESHOW (self));
+
+ self->priv->projector->load_next_image (self);
+ self->priv->direction = GTH_SLIDESHOW_DIRECTION_FORWARD;
+
+ if (self->priv->paused)
+ return;
+
+ self->priv->current = self->priv->current->next;
+ _gth_slideshow_load_current_image (self);
+}
+
+
+void
+gth_slideshow_load_prev_image (GthSlideshow *self)
+{
+ g_return_if_fail (GTH_IS_SLIDESHOW (self));
+
+ self->priv->projector->load_prev_image (self);
+ self->priv->direction = GTH_SLIDESHOW_DIRECTION_BACKWARD;
+
+ if (self->priv->paused)
+ return;
+
+ self->priv->current = self->priv->current->prev;
+ _gth_slideshow_load_current_image (self);
+}
+
+
+void
+gth_slideshow_next_image_or_resume (GthSlideshow *self)
+{
+ g_return_if_fail (GTH_IS_SLIDESHOW (self));
+
+ if (self->priv->paused)
+ gth_slideshow_toggle_pause (self);
+ else
+ gth_slideshow_load_next_image (self);
+}
+
+
+static void
+_gth_slideshow_close_cb (gpointer user_data)
+{
+ GthSlideshow *self = user_data;
+ gboolean close_browser;
+ GthBrowser *browser;
+
+ browser = self->priv->browser;
+ close_browser = ! gtk_widget_get_visible (GTK_WIDGET (browser));
+ self->priv->projector->show_cursor (self);
+ self->priv->projector->finalize (self);
+ gtk_widget_destroy (GTK_WIDGET (self));
+
+ if (close_browser)
+ gth_window_close (GTH_WINDOW (browser));
+}
+
+
+void
+gth_slideshow_close (GthSlideshow *self)
+{
+ call_when_idle (_gth_slideshow_close_cb, self);
+}
+
+
/* -- default projector -- */
@@ -689,10 +690,10 @@ viewer_event_cb (GtkWidget *widget,
else if (event->type == GDK_BUTTON_PRESS) {
switch (((GdkEventButton *) event)->button) {
case 1:
- _gth_slideshow_load_next_image (self);
+ gth_slideshow_load_next_image (self);
break;
case 3:
- _gth_slideshow_load_prev_image (self);
+ gth_slideshow_load_prev_image (self);
break;
default:
break;
@@ -757,7 +758,7 @@ default_projector_construct (GthSlideshow *self)
gth_image_viewer_set_zoom_change (GTH_IMAGE_VIEWER (self->priv->viewer), GTH_ZOOM_CHANGE_FIT_SIZE);
gth_image_viewer_set_zoom_quality (GTH_IMAGE_VIEWER (self->priv->viewer), GTH_ZOOM_QUALITY_LOW);
gth_image_viewer_add_painter (GTH_IMAGE_VIEWER (self->priv->viewer), default_projector_pause_painter,
self);
- gth_image_viewer_set_transparency_style (GTH_IMAGE_VIEWER (self->priv->viewer),
GTH_TRANSPARENCY_STYLE_BLACK);
+ gth_image_viewer_set_transparency_style (GTH_IMAGE_VIEWER (self->priv->viewer),
GTH_TRANSPARENCY_STYLE_CHECKERED);
g_signal_connect (self->priv->viewer, "button-press-event", G_CALLBACK (viewer_event_cb), self);
g_signal_connect (self->priv->viewer, "motion-notify-event", G_CALLBACK (viewer_event_cb), self);
@@ -1065,10 +1066,10 @@ stage_input_cb (ClutterStage *stage,
switch (clutter_event_get_button (event)) {
case 1:
- _gth_slideshow_load_next_image (self);
+ gth_slideshow_load_next_image (self);
break;
case 3:
- _gth_slideshow_load_prev_image (self);
+ gth_slideshow_load_prev_image (self);
break;
default:
break;
diff --git a/extensions/slideshow/gth-slideshow.h b/extensions/slideshow/gth-slideshow.h
index 637405df..9d1a9050 100644
--- a/extensions/slideshow/gth-slideshow.h
+++ b/extensions/slideshow/gth-slideshow.h
@@ -43,7 +43,7 @@ typedef struct _GthSlideshowPrivate GthSlideshowPrivate;
struct _GthSlideshow
{
- GtkWindow __parent;
+ GthWindow __parent;
#ifdef HAVE_CLUTTER
ClutterActor *stage;
ClutterActor *current_image;
@@ -57,7 +57,7 @@ struct _GthSlideshow
struct _GthSlideshowClass
{
- GtkWindowClass __parent_class;
+ GthWindowClass __parent_class;
};
typedef struct {
@@ -93,6 +93,12 @@ void gth_slideshow_set_playlist (GthSlideshow *self,
char **files);
void gth_slideshow_set_random_order (GthSlideshow *self,
gboolean random);
+void gth_slideshow_toggle_pause (GthSlideshow *self);
+void gth_slideshow_load_next_image (GthSlideshow *self);
+void gth_slideshow_load_prev_image (GthSlideshow *self);
+void gth_slideshow_next_image_or_resume
+ (GthSlideshow *self);
+void gth_slideshow_close (GthSlideshow *self);
G_END_DECLS
diff --git a/extensions/slideshow/main.c b/extensions/slideshow/main.c
index 5110186a..aa0dd877 100644
--- a/extensions/slideshow/main.c
+++ b/extensions/slideshow/main.c
@@ -26,6 +26,7 @@
#include "callbacks.h"
#include "gth-transition.h"
#include "preferences.h"
+#include "shortcuts.h"
#ifdef HAVE_CLUTTER
@@ -281,6 +282,11 @@ cube_from_bottom_transition (GthSlideshow *self,
#endif /* HAVE_CLUTTER */
+static GthShortcutCategory shortcut_categories[] = {
+ { GTH_SHORTCUT_CATEGORY_SLIDESHOW, N_("Presentation"), 40 },
+};
+
+
G_MODULE_EXPORT void
gthumb_extension_activate (void)
{
@@ -341,6 +347,7 @@ gthumb_extension_activate (void)
NULL);
#endif /* HAVE_CLUTTER */
+ gth_main_register_shortcut_category (shortcut_categories, G_N_ELEMENTS (shortcut_categories));
gth_hook_add_callback ("slideshow", 10, G_CALLBACK (ss__slideshow_cb), NULL);
gth_hook_add_callback ("gth-browser-construct", 10, G_CALLBACK (ss__gth_browser_construct_cb), NULL);
gth_hook_add_callback ("gth-browser-update-sensitivity", 10, G_CALLBACK
(ss__gth_browser_update_sensitivity_cb), NULL);
diff --git a/extensions/slideshow/shortcuts.h b/extensions/slideshow/shortcuts.h
new file mode 100644
index 00000000..ab6fae19
--- /dev/null
+++ b/extensions/slideshow/shortcuts.h
@@ -0,0 +1,27 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * GThumb
+ *
+ * Copyright (C) 2019 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef SLIDESHOW_SHORTCUTS_H
+#define SLIDESHOW_SHORTCUTS_H
+
+#define GTH_SHORTCUT_CATEGORY_SLIDESHOW "slideshow"
+
+#endif /* SLIDESHOW_SHORTCUTS_H */
diff --git a/gthumb/gth-main-default-types.c b/gthumb/gth-main-default-types.c
index 2b03705d..fbccf86f 100644
--- a/gthumb/gth-main-default-types.c
+++ b/gthumb/gth-main-default-types.c
@@ -40,7 +40,6 @@ static GthShortcutCategory shortcut_categories[] = {
{ GTH_SHORTCUT_CATEGORY_NAVIGATION, N_("Navigation"), 15 },
{ GTH_SHORTCUT_CATEGORY_FILE_MANAGER, N_("File Manager"), 10 },
{ GTH_SHORTCUT_CATEGORY_VIEWER, N_("Viewer"), 20 },
- { GTH_SHORTCUT_CATEGORY_SLIDESHOW, N_("Presentation"), 21 }
};
diff --git a/gthumb/gth-shortcut.h b/gthumb/gth-shortcut.h
index 38f2906b..0596c398 100644
--- a/gthumb/gth-shortcut.h
+++ b/gthumb/gth-shortcut.h
@@ -32,7 +32,6 @@ G_BEGIN_DECLS
#define GTH_SHORTCUT_CATEGORY_NAVIGATION "file-navigation"
#define GTH_SHORTCUT_CATEGORY_FILE_MANAGER "file-manager"
#define GTH_SHORTCUT_CATEGORY_VIEWER "file-viewer"
-#define GTH_SHORTCUT_CATEGORY_SLIDESHOW "slideshow"
typedef struct {
diff --git a/gthumb/gth-shortcuts-window.c b/gthumb/gth-shortcuts-window.c
index 284f735e..62b5eb88 100644
--- a/gthumb/gth-shortcuts-window.c
+++ b/gthumb/gth-shortcuts-window.c
@@ -38,7 +38,7 @@ typedef struct {
static ContextInfo contexts[] = {
{ GTH_SHORTCUT_CONTEXT_BROWSER, "browser", N_("Browser") },
{ GTH_SHORTCUT_CONTEXT_VIEWER, "viewer", N_("Viewer") },
- //{ GTH_SHORTCUT_CONTEXT_SLIDESHOW, "slideshow", N_("Presentation") }
+ { GTH_SHORTCUT_CONTEXT_SLIDESHOW, "slideshow", N_("Presentation") }
};
diff --git a/gthumb/gth-window.c b/gthumb/gth-window.c
index b75b855a..1f8e117b 100644
--- a/gthumb/gth-window.c
+++ b/gthumb/gth-window.c
@@ -745,7 +745,7 @@ gth_window_add_accelerators (GthWindow *window,
NULL);
shortcut = gth_shortcut_new (acc->action_name, NULL);
- shortcut->context = GTH_SHORTCUT_CONTEXT_INTERNAL | GTH_SHORTCUT_CONTEXT_ANY;
+ shortcut->context = GTH_SHORTCUT_CONTEXT_INTERNAL | GTH_SHORTCUT_CONTEXT_BROWSER_VIEWER;
shortcut->category = GTH_SHORTCUT_CATEGORY_HIDDEN;
gth_shortcut_set_accelerator (shortcut, acc->accelerator);
_gth_window_add_shortcut (window, shortcut);
@@ -1062,3 +1062,23 @@ gth_window_can_change_shortcut (GthWindow *window,
return TRUE;
}
+
+
+void
+gth_window_copy_shortcuts (GthWindow *to_window,
+ GthWindow *from_window,
+ int context)
+{
+ int i;
+
+ for (i = 0; i < from_window->priv->shortcuts_v->len; i++) {
+ const GthShortcut *shortcut = g_ptr_array_index (from_window->priv->shortcuts_v, i);
+ GthShortcut *new_shortcut;
+
+ if ((shortcut->context & context) == 0)
+ continue;
+
+ new_shortcut = gth_shortcut_dup (shortcut);
+ _gth_window_add_shortcut (to_window, new_shortcut);
+ }
+}
diff --git a/gthumb/gth-window.h b/gthumb/gth-window.h
index 89843e1c..66c88f11 100644
--- a/gthumb/gth-window.h
+++ b/gthumb/gth-window.h
@@ -146,6 +146,9 @@ gboolean gth_window_can_change_shortcut (GthWindow *window,
guint keycode,
GdkModifierType modifiers,
GtkWindow *parent);
+void gth_window_copy_shortcuts (GthWindow *to_window,
+ GthWindow *from_window,
+ int context);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]