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) {