SF.net SVN: geany: [2749] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Thu Jul 3 17:04:16 UTC 2008


Revision: 2749
          http://geany.svn.sourceforge.net/geany/?rev=2749&view=rev
Author:   ntrel
Date:     2008-07-03 10:04:12 -0700 (Thu, 03 Jul 2008)

Log Message:
-----------
Avoid flickering the menu bar when 'Override Geany keybindings'
Terminal pref is set.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/keybindings.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-07-03 15:20:44 UTC (rev 2748)
+++ trunk/ChangeLog	2008-07-03 17:04:12 UTC (rev 2749)
@@ -5,6 +5,9 @@
    allocate string when '<' found.
    Factor insert_closing_tag() from handle_xml(), fixing a memory leak
    when ignoring tags like <br>.
+ * src/keybindings.c:
+   Avoid flickering the menu bar when 'Override Geany keybindings'
+   Terminal pref is set.
 
 
 2008-07-03  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c	2008-07-03 15:20:44 UTC (rev 2748)
+++ trunk/src/keybindings.c	2008-07-03 17:04:12 UTC (rev 2749)
@@ -832,6 +832,15 @@
 
 
 #ifdef HAVE_VTE
+static gboolean on_menu_expose_event(GtkWidget *widget, GdkEventExpose *event,
+		gpointer user_data)
+{
+	if (!GTK_WIDGET_SENSITIVE(widget))
+		gtk_widget_set_sensitive(GTK_WIDGET(widget), TRUE);
+	return FALSE;
+}
+
+
 static gboolean set_sensitive(gpointer widget)
 {
 	gtk_widget_set_sensitive(GTK_WIDGET(widget), TRUE);
@@ -865,14 +874,19 @@
 
 	/* Temporarily disable the menus to prevent conflicting menu accelerators
 	 * from overriding the VTE bash shortcuts.
-	 * Ideally we would just somehow disable the menubar without redrawing it,
-	 * but maybe that's not possible. */
+	 * Note: maybe there's a better way of doing this ;-) */
 	widget = lookup_widget(main_widgets.window, "menubar1");
 	gtk_widget_set_sensitive(widget, FALSE);
-	g_idle_add(&set_sensitive, (gpointer) widget);
+	{
+		/* make the menubar sensitive before it is redrawn */
+		static gboolean connected = FALSE;
+		if (!connected)
+			g_signal_connect(widget, "expose-event", G_CALLBACK(on_menu_expose_event), NULL);
+	}
+
 	widget = main_widgets.editor_menu;
 	gtk_widget_set_sensitive(widget, FALSE);
-	g_idle_add(&set_sensitive, (gpointer) widget);
+	g_idle_add(set_sensitive, widget);
 	return TRUE;
 }
 #endif


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list