[geany/geany] b0f71a: Merge branch 'Forkest/copy-items-nonlatin'
Colomban Wendling
git-noreply at xxxxx
Sun Feb 5 16:32:54 UTC 2017
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Sun, 05 Feb 2017 16:32:54 UTC
Commit: b0f71a166651b65a0a6184b02d90327d696cfea2
https://github.com/geany/geany/commit/b0f71a166651b65a0a6184b02d90327d696cfea2
Log Message:
-----------
Merge branch 'Forkest/copy-items-nonlatin'
Work around incorrect keybinding handling with multiple layouts so
cut/copy/delete keybindings work via menuitem activation if we failed
to trigger the action ourselves.
Closes #1386.
Modified Paths:
--------------
data/geany.glade
src/callbacks.c
src/ui_utils.c
src/ui_utils.h
Modified: data/geany.glade
3 lines changed, 2 insertions(+), 1 deletions(-)
===================================================================
@@ -6562,7 +6562,8 @@
<property name="can_focus">False</property>
<property name="label" translatable="yes">_Edit</property>
<property name="use_underline">True</property>
- <signal name="activate" handler="on_edit1_activate" swapped="no"/>
+ <signal name="select" handler="on_edit1_select" swapped="no"/>
+ <signal name="deselect" handler="on_edit1_deselect" swapped="no"/>
<child type="submenu">
<object class="GtkMenu" id="edit1_menu">
<property name="can_focus">False</property>
Modified: src/callbacks.c
12 lines changed, 11 insertions(+), 1 deletions(-)
===================================================================
@@ -183,7 +183,7 @@ static void on_file1_activate(GtkMenuItem *menuitem, gpointer user_data)
/* edit actions, c&p & co, from menu bar and from popup menu */
-static void on_edit1_activate(GtkMenuItem *menuitem, gpointer user_data)
+static void on_edit1_select(GtkMenuItem *menuitem, gpointer user_data)
{
GtkWidget *item;
GeanyDocument *doc = document_get_current();
@@ -200,6 +200,16 @@ static void on_edit1_activate(GtkMenuItem *menuitem, gpointer user_data)
}
+static void on_edit1_deselect(GtkMenuShell *menushell, gpointer user_data)
+{
+ /* we re-enable items that were disabled in on_edit1_select() on menu popdown to
+ * workaround mutli-layout keyboard issues in our keybinding handling code, so that
+ * GTK's accelerator handling can catch them.
+ * See https://github.com/geany/geany/issues/1368#issuecomment-273678207 */
+ ui_menu_copy_items_set_sensitive(TRUE);
+}
+
+
void on_undo1_activate(GtkMenuItem *menuitem, gpointer user_data)
{
GeanyDocument *doc = document_get_current();
Modified: src/ui_utils.c
15 lines changed, 11 insertions(+), 4 deletions(-)
===================================================================
@@ -512,10 +512,19 @@ void ui_update_popup_goto_items(gboolean enable)
}
+void ui_menu_copy_items_set_sensitive(gboolean sensitive)
+{
+ guint i, len;
+
+ len = G_N_ELEMENTS(widgets.menu_copy_items);
+ for (i = 0; i < len; i++)
+ ui_widget_set_sensitive(widgets.menu_copy_items[i], sensitive);
+}
+
+
void ui_update_menu_copy_items(GeanyDocument *doc)
{
gboolean enable = FALSE;
- guint i, len;
GtkWidget *focusw = gtk_window_get_focus(GTK_WINDOW(main_widgets.window));
g_return_if_fail(doc == NULL || doc->is_valid);
@@ -533,9 +542,7 @@ void ui_update_menu_copy_items(GeanyDocument *doc)
enable = gtk_text_buffer_get_selection_bounds(buffer, NULL, NULL);
}
- len = G_N_ELEMENTS(widgets.menu_copy_items);
- for (i = 0; i < len; i++)
- ui_widget_set_sensitive(widgets.menu_copy_items[i], enable);
+ ui_menu_copy_items_set_sensitive(enable);
}
Modified: src/ui_utils.h
2 lines changed, 2 insertions(+), 0 deletions(-)
===================================================================
@@ -297,6 +297,8 @@ void ui_update_popup_copy_items(GeanyDocument *doc);
void ui_update_popup_goto_items(gboolean enable);
+void ui_menu_copy_items_set_sensitive(gboolean sensitive);
+
void ui_update_menu_copy_items(GeanyDocument *doc);
void ui_update_insert_include_item(GeanyDocument *doc, gint item);
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list