diff options
author | Silenio Quarti <silenio_quarti@ca.ibm.com> | 2012-10-26 14:52:30 -0400 |
---|---|---|
committer | Silenio Quarti <silenio_quarti@ca.ibm.com> | 2012-10-26 14:52:30 -0400 |
commit | a886f16168f44eb14dce55165728859cc8ee3baa (patch) | |
tree | 77507a36826a1bbab089f5996d8b8b798895d212 /bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java | |
parent | d0069d7ed7376b10efa426e883f2b4851a6c7c22 (diff) | |
download | eclipse.platform.swt-a886f16168f44eb14dce55165728859cc8ee3baa.tar.gz eclipse.platform.swt-a886f16168f44eb14dce55165728859cc8ee3baa.tar.xz eclipse.platform.swt-a886f16168f44eb14dce55165728859cc8ee3baa.zip |
Bug 392841 - [GTK3] Need to replace expose-event signal with draw signal
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java | 68 |
1 files changed, 21 insertions, 47 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java index e23bf0a52d..6ffa359a07 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java @@ -725,57 +725,31 @@ long /*int*/ gtk_expose_event (long /*int*/ widget, long /*int*/ eventPtr) { if ((style & SWT.NO_MERGE_PAINTS) == 0) { return super.gtk_expose_event (widget, eventPtr); } - if (!hooks (SWT.Paint) && !filters (SWT.Paint)) return 0; + if (!hooksPaint ()) return 0; GdkEventExpose gdkEvent = new GdkEventExpose (); OS.memmove(gdkEvent, eventPtr, GdkEventExpose.sizeof); long /*int*/ [] rectangles = new long /*int*/ [1]; int [] n_rectangles = new int [1]; - if (OS.GTK_VERSION >= OS.VERSION(3, 0, 0)) { - int num = Cairo.cairo_region_num_rectangles (gdkEvent.region); - for (int n = 0; n < num; n++) { - Cairo.cairo_region_get_rectangle (gdkEvent.region, n, rectangles[n]); - } - cairo_rectangle_int_t rect = new cairo_rectangle_int_t (); - for (int i=0; i<n_rectangles[0]; i++) { - Event event = new Event (); - Cairo.memmove (rect, rectangles [0] + i * cairo_rectangle_int_t.sizeof, cairo_rectangle_int_t.sizeof); - event.x = rect.x; - event.y = rect.y; - event.width = rect.width; - event.height = rect.height; - if ((style & SWT.MIRRORED) != 0) event.x = getClientWidth () - event.width - event.x; - long /*int*/ damageRgn = Cairo.cairo_region_create (); - Cairo.cairo_region_union_rectangle (damageRgn, rect); - GCData data = new GCData (); - data.damageRgn = damageRgn; - GC gc = event.gc = GC.gtk_new (this, data); - sendEvent (SWT.Paint, event); - gc.dispose (); - Cairo.cairo_region_destroy (damageRgn); - event.gc = null; - } - } else { - OS.gdk_region_get_rectangles (gdkEvent.region, rectangles, n_rectangles); - GdkRectangle rect = new GdkRectangle (); - for (int i=0; i<n_rectangles[0]; i++) { - Event event = new Event (); - OS.memmove (rect, rectangles [0] + i * GdkRectangle.sizeof, GdkRectangle.sizeof); - event.x = rect.x; - event.y = rect.y; - event.width = rect.width; - event.height = rect.height; - if ((style & SWT.MIRRORED) != 0) event.x = getClientWidth () - event.width - event.x; - long /*int*/ damageRgn = OS.gdk_region_new (); - OS.gdk_region_union_with_rect (damageRgn, rect); - GCData data = new GCData (); - data.damageRgn = damageRgn; - GC gc = event.gc = GC.gtk_new (this, data); - sendEvent (SWT.Paint, event); - gc.dispose (); - OS.gdk_region_destroy (damageRgn); - event.gc = null; - } - } + OS.gdk_region_get_rectangles (gdkEvent.region, rectangles, n_rectangles); + GdkRectangle rect = new GdkRectangle (); + for (int i=0; i<n_rectangles[0]; i++) { + Event event = new Event (); + OS.memmove (rect, rectangles [0] + i * GdkRectangle.sizeof, GdkRectangle.sizeof); + event.x = rect.x; + event.y = rect.y; + event.width = rect.width; + event.height = rect.height; + if ((style & SWT.MIRRORED) != 0) event.x = getClientWidth () - event.width - event.x; + long /*int*/ damageRgn = OS.gdk_region_new (); + OS.gdk_region_union_with_rect (damageRgn, rect); + GCData data = new GCData (); + data.damageRgn = damageRgn; + GC gc = event.gc = GC.gtk_new (this, data); + sendEvent (SWT.Paint, event); + gc.dispose (); + OS.gdk_region_destroy (damageRgn); + event.gc = null; + } OS.g_free (rectangles [0]); return 0; } |