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