[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