Ick, I just noticed that the magic colon disappeared.  I must have
edited gschem/lib/system-gschemrc by mistake, and not its *.in source.
Also a cleanup to avoid trampling on wild pointers.

commit 487b314a9cc8a4237c5277d025dad5b11e66aa1b
Author: Bernd Jendrissek <[EMAIL PROTECTED]>
Date:   Tue Jul 8 02:15:46 2008 +0200

    Add the magic colon to the global keymap.

diff --git a/gschem/lib/system-gschemrc.in b/gschem/lib/system-gschemrc.in
index 14fedad..8e164ca 100644
--- a/gschem/lib/system-gschemrc.in
+++ b/gschem/lib/system-gschemrc.in
@@ -1341,6 +1341,7 @@
     ("y" . buffer-keymap)
     ("z" . view-zoom-in-hotkey)
     ("period" . repeat-last-command)
+    ("Shift colon" . edit-invoke-macro)
     ("comma" . misc-misc)
     ("equal" . misc-misc2)
     ("Shift plus" . misc-misc3)

commit 4c3fb6aebb3f835d4e85b2df9b1bc7070c38ed28
Author: Bernd Jendrissek <[EMAIL PROTECTED]>
Date:   Tue Jul 8 02:19:15 2008 +0200

    Evaluate the scheme form at the very end of the callback.
    
    The scheme form may include a call to (file-quit), which will
    invalidate w_current.  So we hide the scripting box before we call
    its contents.

diff --git a/gschem/src/x_window.c b/gschem/src/x_window.c
index ea0f21e..b777d27 100644
--- a/gschem/src/x_window.c
+++ b/gschem/src/x_window.c
@@ -326,9 +326,12 @@ static void x_window_invoke_macro(GtkEntry *entry, void 
*userdata)
 {
   GSCHEM_TOPLEVEL *w_current = userdata;
 
-  g_scm_c_eval_string_protected(gtk_entry_get_text(entry));
+  /* Do all the GTK+ stuff while the pointers are still valid. */
   gtk_widget_hide(w_current->macro_box);
   gtk_widget_grab_focus(w_current->drawing_area);
+
+  /* XXX - this needs to be last, since it may invoke (file-quit). */
+  g_scm_c_eval_string_protected(gtk_entry_get_text(entry));
 }
 
 /*! \todo Finish function documentation!!!


_______________________________________________
geda-dev mailing list
[email protected]
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev

Reply via email to