uiDateTimePicker Emit proper GTK+ signal in dateTimePickerWidget

This commit is contained in:
cody271 2018-02-22 19:56:57 -08:00
parent 0baf2d2eb6
commit 5ec5ebdfae
1 changed files with 19 additions and 6 deletions

View File

@ -38,7 +38,6 @@ struct dateTimePickerWidget {
GdkDevice *keyboard; GdkDevice *keyboard;
GdkDevice *mouse; GdkDevice *mouse;
uiDateTimePicker *control;
}; };
struct dateTimePickerWidgetClass { struct dateTimePickerWidgetClass {
@ -120,12 +119,11 @@ static void setLabel(dateTimePickerWidget *d)
g_date_time_unref(dt); g_date_time_unref(dt);
} }
static int changedSignal;
static void dateTimeChanged(dateTimePickerWidget *d) static void dateTimeChanged(dateTimePickerWidget *d)
{ {
uiDateTimePicker *c; g_signal_emit(d, changedSignal, 0);
c = d->control;
(*(c->onChanged))(c, c->onChangedData);
setLabel(d); setLabel(d);
} }
@ -553,6 +551,13 @@ static void dateTimePickerWidget_class_init(dateTimePickerWidgetClass *class)
{ {
G_OBJECT_CLASS(class)->dispose = dateTimePickerWidget_dispose; G_OBJECT_CLASS(class)->dispose = dateTimePickerWidget_dispose;
G_OBJECT_CLASS(class)->finalize = dateTimePickerWidget_finalize; G_OBJECT_CLASS(class)->finalize = dateTimePickerWidget_finalize;
changedSignal = g_signal_new("changed",
G_TYPE_FROM_CLASS(class),
G_SIGNAL_RUN_LAST,
0,
NULL, NULL, NULL,
G_TYPE_NONE, 0);
} }
static void defaultOnChanged(uiDateTimePicker *d, void *data) static void defaultOnChanged(uiDateTimePicker *d, void *data)
@ -592,6 +597,14 @@ void uiDateTimePickerOnChanged(uiDateTimePicker *d, void (*f)(uiDateTimePicker *
d->onChangedData = data; d->onChangedData = data;
} }
static void onChanged(dateTimePickerWidget *d, gpointer data)
{
uiDateTimePicker *c;
c = uiDateTimePicker(data);
(*(c->onChanged))(c, c->onChangedData);
}
static GtkWidget *newDTP(void) static GtkWidget *newDTP(void)
{ {
GtkWidget *w; GtkWidget *w;
@ -629,7 +642,7 @@ uiDateTimePicker *finishNewDateTimePicker(GtkWidget *(*fn)(void))
d->widget = (*fn)(); d->widget = (*fn)();
d->d = dateTimePickerWidget(d->widget); d->d = dateTimePickerWidget(d->widget);
d->d->control = d; g_signal_connect(d->widget, "changed", G_CALLBACK(onChanged), d);
uiDateTimePickerOnChanged(d, defaultOnChanged, NULL); uiDateTimePickerOnChanged(d, defaultOnChanged, NULL);
return d; return d;