summaryrefslogtreecommitdiff
path: root/new/window_unix.c
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2015-04-10 21:48:50 -0400
committerPietro Gagliardi <[email protected]>2015-04-10 21:48:50 -0400
commit47c89f6aefcae52301d621634701e7b676487e50 (patch)
treeede2a6a6b7c3fb51d279ea2ab475568d331eda1c /new/window_unix.c
parentda3009bfbb5e47d675cb8e58ea93ec7e3eb4021a (diff)
More TODO resolution and some GTK+ uiWindow inconsistency (and future repeated-event bug waiting to happen) cleanup.
Diffstat (limited to 'new/window_unix.c')
-rw-r--r--new/window_unix.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/new/window_unix.c b/new/window_unix.c
index ba9b7ef..c4ec6d4 100644
--- a/new/window_unix.c
+++ b/new/window_unix.c
@@ -8,6 +8,21 @@ struct uiWindow {
void *onClosingData;
};
+static gboolean onClosing(GtkWidget *win, GdkEvent *e, gpointer data)
+{
+ uiWindow *w = (uiWindow *) data;
+
+ // return exact values just in case
+ if ((*(w->onClosing))(w, w->onClosingData))
+ return FALSE;
+ return TRUE;
+}
+
+static int defaultOnClosing(uiWindow *w, void *data)
+{
+ return 1;
+}
+
static void onDestroy(GtkWidget *widget, gpointer data)
{
uiWindow *w = (uiWindow *) data;
@@ -23,9 +38,11 @@ uiWindow *uiNewWindow(char *title, int width, int height)
w->widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(w->widget), title);
gtk_window_resize(GTK_WINDOW(w->widget), width, height);
+ g_signal_connect(w->widget, "delete-event", G_CALLBACK(onClosing), w);
g_signal_connect(w->widget, "destroy", G_CALLBACK(onDestroy), w);
w->container = newContainer();
gtk_container_add(GTK_CONTAINER(w->widget), w->container);
+ w->onClosing = defaultOnClosing;
return w;
}
@@ -59,21 +76,10 @@ void uiWindowHide(uiWindow *w)
gtk_widget_hide(w->widget);
}
-static gboolean onClosing(GtkWidget *win, GdkEvent *e, gpointer data)
-{
- uiWindow *w = (uiWindow *) data;
-
- // return exact values just in case
- if ((*(w->onClosing))(w, w->onClosingData))
- return FALSE;
- return TRUE;
-}
-
void uiWindowOnClosing(uiWindow *w, int (*f)(uiWindow *, void *), void *data)
{
w->onClosing = f;
w->onClosingData = data;
- g_signal_connect(w->widget, "delete-event", G_CALLBACK(onClosing), w);
}
void uiWindowSetChild(uiWindow *w, uiControl *c)