Mercurial > projects > dwt-linux
changeset 221:dc5328912f3d
Fix: Display timer if multiple instances in use.
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Wed, 09 Apr 2008 16:46:29 +0200 |
parents | ba054b4a1c55 |
children | 79bb10c082fb |
files | dwt/internal/gtk/OS.d dwt/widgets/Display.d |
diffstat | 2 files changed, 7 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/dwt/internal/gtk/OS.d Wed Apr 09 16:46:02 2008 +0200 +++ b/dwt/internal/gtk/OS.d Wed Apr 09 16:46:29 2008 +0200 @@ -1267,6 +1267,8 @@ mixin ForwardGtkOsCFunc!(.g_object_set1_float); mixin ForwardGtkOsCFunc!(.g_object_set_qdata); mixin ForwardGtkOsCFunc!(.g_object_unref); + mixin ForwardGtkOsCFunc!(.g_object_get_data); + mixin ForwardGtkOsCFunc!(.g_object_set_data); mixin ForwardGtkOsCFunc!(.g_quark_from_string); mixin ForwardGtkOsCFunc!(.g_set_prgname); mixin ForwardGtkOsCFunc!(.g_signal_connect_closure);
--- a/dwt/widgets/Display.d Wed Apr 09 16:46:02 2008 +0200 +++ b/dwt/widgets/Display.d Wed Apr 09 16:46:29 2008 +0200 @@ -49,6 +49,7 @@ import tango.core.Thread; import tango.io.Stdout; +import tango.util.log.Trace; /** * Instances of this class are responsible for managing the @@ -4087,15 +4088,13 @@ } package int doWindowTimerAdd( CallbackData* cbdata, int delay, GtkWidget* widget ){ - cbdata.display = this; - cbdata.data = cast(void*)widget; - return OS.gtk_timeout_add (delay, &windowTimerProcFunc, &cbdata); + OS.g_object_set_data(cast(GObject*)widget, Display.classinfo.name.ptr, cast(void*)this); + return OS.gtk_timeout_add (delay, &windowTimerProcFunc, widget); } - private static extern(C) int /*long*/ windowTimerProcFunc (void* user_data) { version(LOG) Stderr.formatln( "Display {}:", __LINE__ ).flush; - CallbackData* cbdata = cast(CallbackData*)user_data; - return cbdata.display.windowTimerProc( cast(GtkWidget*)cbdata.data ); + Display d = cast(Display) OS.g_object_get_data(cast(GObject*)user_data, Display.classinfo.name.ptr ); + return d.windowTimerProc( cast(GtkWidget*)user_data ); } int /*long*/ windowTimerProc (GtkWidget* handle) {