summaryrefslogtreecommitdiffhomepage
path: root/mixgtk/mixgtk_mixvm.c
diff options
context:
space:
mode:
Diffstat (limited to 'mixgtk/mixgtk_mixvm.c')
-rw-r--r--mixgtk/mixgtk_mixvm.c43
1 files changed, 32 insertions, 11 deletions
diff --git a/mixgtk/mixgtk_mixvm.c b/mixgtk/mixgtk_mixvm.c
index cea52bb..10a34e1 100644
--- a/mixgtk/mixgtk_mixvm.c
+++ b/mixgtk/mixgtk_mixvm.c
@@ -1,7 +1,7 @@
/* -*-c-*- -------------- mixgtk_mixvm.c :
* Implementation of the functions declared in mixgtk_mixvm.h
* ------------------------------------------------------------------
- * $Id: mixgtk_mixvm.c,v 1.14 2004/07/02 00:09:55 jao Exp $
+ * $Id: mixgtk_mixvm.c,v 1.15 2004/07/04 22:34:15 jao Exp $
* ------------------------------------------------------------------
* Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
*
@@ -122,6 +122,34 @@ mixgtk_mixvm_init (mix_vm_t *vm)
return TRUE;
}
+static GtkWidget **
+text_widgets_ (gint *n)
+{
+ static GtkWidget *w[REGISTER_NO_ + 2] = { NULL};
+
+ if (w[0] == NULL)
+ {
+ gint k;
+ w[0] = GTK_WIDGET (loc_entry_);
+ w[1] = GTK_WIDGET (memory_);
+ for (k = 0; k < REGISTER_NO_; ++k)
+ w[k + 2] = GTK_WIDGET (reg_entries_[k]);
+ };
+
+ if (n) *n = REGISTER_NO_ + 2;
+
+ return w;
+}
+
+void
+mixgtk_mixvm_update_fonts (void)
+{
+ gint k, n = 0;
+ GtkWidget **w = text_widgets_ (&n);
+ for (k = 0; k < n; ++k)
+ mixgtk_fontsel_set_font (MIX_FONT_MIXVM, w[k]);
+}
+
/* update register widgets */
void
mixgtk_mixvm_update_registers (void)
@@ -329,16 +357,9 @@ mem_cell_ (mix_word_t w, gpointer a)
void
on_mix_font_activate (void)
{
- GtkWidget *w[REGISTER_NO_ + 2] = {
- GTK_WIDGET (loc_entry_), GTK_WIDGET (memory_)
- };
-
- gint k;
-
- for (k = 0; k < REGISTER_NO_; ++k) w[k + 2] = GTK_WIDGET (reg_entries_[k]);
-
- mixgtk_fontsel_query_font (MIX_FONT_MIXVM, w, REGISTER_NO_ + 2);
-
+ gint n;
+ GtkWidget **w = text_widgets_ (&n);
+ mixgtk_fontsel_query_font (MIX_FONT_MIXVM, w, n);
}