GtkSpinButton *frequency;
} App;
+static int n_instances = 0;
+
/* Prototypes for auto-connected signal handlers ***************************/
/**
* These are declared non-static for signal auto-connection
*/
-gboolean window_delete_event_cb (GtkObject * window, App * app);
+gboolean window_delete_event_cb (GtkObject * window, GdkEvent * event,
+ App * app);
void quit_item_activate_cb (GtkMenuItem * item, App * app);
void delete_activate_cb (GtkAction * item, App * app);
void play_activate_cb (GtkAction * item, App * app);
g_free (app);
}
+
+ n_instances--;
+
+ if (n_instances == 0) {
+ gtk_main_quit ();
+ }
}
static App *
{
App *ret;
ret = g_new0 (App, 1);
+ n_instances++;
ret->selected_type = G_TYPE_NONE;
/* UI callbacks ************************************************************/
gboolean
-window_delete_event_cb (GtkObject * window, App * app)
+window_delete_event_cb (GtkObject * window, GdkEvent * event, App * app)
{
- gtk_main_quit ();
- return TRUE;
+ app_dispose (app);
+ return FALSE;
}
void
if ((app = app_new ())) {
gtk_main ();
- app_dispose (app);
}
return 0;
<object class="GtkImageMenuItem" id="new_item">
<property name="label">gtk-new</property>
<property name="use_underline">True</property>
+ <property name="visible">True</property>
<property name="use_stock">True</property>
+ <signal name="activate" handler="new_activate_cb"/>
</object>
</child>
<child>
<property name="use_stock">True</property>
</object>
</child>
- <child>
- <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="quit_item">
- <property name="label">gtk-quit</property>
- <property name="visible">True</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="quit_item_activate_cb"/>
- </object>
- </child>
</object>
</child>
</object>