diff options
author | Alexander Larsson <alexl@redhat.com> | 2010-11-20 22:38:34 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2010-11-25 22:09:30 +0100 |
commit | d211d78eef4282cbd6e02dac6df893d5257b04f8 (patch) | |
tree | ff43f6bdabe079d368fac2262b6c1a9e01369152 /gdk | |
parent | cdd274a55c2722fe9f0fdfdbeed48b12b3595803 (diff) | |
download | gtk+-d211d78eef4282cbd6e02dac6df893d5257b04f8.tar.gz |
[broadway] Track window<->id mapping
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/broadway/gdkdisplay-broadway.c | 1 | ||||
-rw-r--r-- | gdk/broadway/gdkdisplay-broadway.h | 2 | ||||
-rw-r--r-- | gdk/broadway/gdkwindow-broadway.c | 5 |
3 files changed, 8 insertions, 0 deletions
diff --git a/gdk/broadway/gdkdisplay-broadway.c b/gdk/broadway/gdkdisplay-broadway.c index b043da156e..3384793061 100644 --- a/gdk/broadway/gdkdisplay-broadway.c +++ b/gdk/broadway/gdkdisplay-broadway.c @@ -59,6 +59,7 @@ _gdk_display_broadway_class_init (GdkDisplayBroadwayClass * class) static void _gdk_display_broadway_init (GdkDisplayBroadway *display) { + display->id_ht = g_hash_table_new (NULL, NULL); } static void diff --git a/gdk/broadway/gdkdisplay-broadway.h b/gdk/broadway/gdkdisplay-broadway.h index 30934e998d..a294cbec3a 100644 --- a/gdk/broadway/gdkdisplay-broadway.h +++ b/gdk/broadway/gdkdisplay-broadway.h @@ -49,6 +49,8 @@ struct _GdkDisplayBroadway GdkScreen *default_screen; GdkScreen **screens; + GHashTable *id_ht; + GSource *event_source; GdkWindow *mouse_in_toplevel; diff --git a/gdk/broadway/gdkwindow-broadway.c b/gdk/broadway/gdkwindow-broadway.c index 14f4d0367c..b8937b58b1 100644 --- a/gdk/broadway/gdkwindow-broadway.c +++ b/gdk/broadway/gdkwindow-broadway.c @@ -251,6 +251,7 @@ gdk_window_impl_broadway_finalize (GObject *object) GdkWindowObject *wrapper; GdkDrawableImplBroadway *draw_impl; GdkWindowImplBroadway *window_impl; + GdkDisplayBroadway *display_broadway; g_return_if_fail (GDK_IS_WINDOW_IMPL_BROADWAY (object)); @@ -259,6 +260,9 @@ gdk_window_impl_broadway_finalize (GObject *object) wrapper = (GdkWindowObject*) draw_impl->wrapper; + display_broadway = GDK_DISPLAY_BROADWAY (gdk_window_get_display (wrapper)); + g_hash_table_remove (display_broadway->id_ht, window_impl->id); + if (window_impl->cursor) gdk_cursor_unref (window_impl->cursor); @@ -330,6 +334,7 @@ _gdk_window_impl_new (GdkWindow *window, impl = g_object_new (_gdk_window_impl_get_type (), NULL); private->impl = (GdkDrawable *)impl; impl->id = current_id++; + g_hash_table_insert (display_broadway->id_ht, impl->id, window); draw_impl = GDK_DRAWABLE_IMPL_BROADWAY (impl); draw_impl->wrapper = GDK_DRAWABLE (window); |