Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 239227 Details for
Bug 421127
[GTK3] All views empty with GTK 3.10
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
hacks
PR421120_1.patch (text/plain), 6.20 KB, created by
Silenio Quarti
on 2014-01-22 10:27:33 EST
(
hide
)
Description:
hacks
Filename:
MIME Type:
Creator:
Silenio Quarti
Created:
2014-01-22 10:27:33 EST
Size:
6.20 KB
patch
obsolete
>diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java >index 9107e15..a0aeb44 100644 >--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java >+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java >@@ -332,7 +332,7 @@ void checkGC (int mask) { > if ((state & DRAW_OFFSET) != 0) { > data.cairoXoffset = data.cairoYoffset = 0; > double[] matrix = new double[6]; >- Cairo.cairo_get_matrix(cairo, matrix); >+ cairo_get_matrix(cairo, matrix); > double[] dx = new double[]{1}; > double[] dy = new double[]{1}; > Cairo.cairo_user_to_device_distance(cairo, dx, dy); >@@ -659,6 +659,9 @@ void disposeLayout() { > > @Override > void destroy() { >+ if (OS.GTK_VERSION >= OS.VERSION(3, 9, 0)) { >+ Cairo.cairo_restore(data.cairo); >+ } > if (data.disposeCairo) { > long /*int*/ cairo = data.cairo; > if (cairo != 0) Cairo.cairo_destroy(cairo); >@@ -1447,7 +1450,7 @@ void drawPolyline(long /*int*/ cairo, int[] pointArray, boolean close) { > for (int i = 1, j=2; i < count; i++, j += 2) { > Cairo.cairo_line_to(cairo, pointArray[j] + xOffset, pointArray[j + 1] + yOffset); > } >- if (close) Cairo.cairo_close_path(cairo); >+ //if (close) Cairo.cairo_close_path(cairo); > } > > /** >@@ -2055,6 +2058,9 @@ public void fillPolygon(int[] pointArray) { > checkGC(FILL); > long /*int*/ cairo = data.cairo; > if (cairo != 0) { >+ System.out.println(pointArray.length); >+ if (pointArray.length >= 80) >+ return; > drawPolyline(cairo, pointArray, true); > Cairo.cairo_fill(cairo); > return; >@@ -2419,7 +2425,7 @@ public Rectangle getClipping() { > /* Convert to user space */ > if (cairo != 0) { > double[] matrix = new double[6]; >- Cairo.cairo_get_matrix(cairo, matrix); >+ cairo_get_matrix(cairo, matrix); > Cairo.cairo_matrix_invert(matrix); > clipRgn = convertRgn(rgn, matrix); > OS.gdk_region_destroy(rgn); >@@ -2435,6 +2441,16 @@ public Rectangle getClipping() { > return new Rectangle(x, y, width, height); > } > >+void cairo_get_matrix(long /*int*/ cairo, double[] matrix) { >+ //TODO cairo_get_matrix behavior changed in GTK 3.10 >+ matrix[0] = 1; >+ matrix[1] = 0; >+ matrix[2] = 0; >+ matrix[3] = 1; >+ matrix[4] = 0; >+ matrix[5] = 0; >+} >+ > /** > * Sets the region managed by the argument to the current > * clipping region of the receiver. >@@ -2480,7 +2496,7 @@ public void getClipping(Region region) { > /* Convert to user space */ > if (cairo != 0) { > double[] matrix = new double[6]; >- Cairo.cairo_get_matrix(cairo, matrix); >+ cairo_get_matrix(cairo, matrix); > Cairo.cairo_matrix_invert(matrix); > long /*int*/ rgn = convertRgn(clipping, matrix); > OS.gdk_region_subtract(clipping, clipping); >@@ -2852,7 +2868,7 @@ public void getTransform(Transform transform) { > if (transform.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); > long /*int*/ cairo = data.cairo; > if (cairo != 0) { >- Cairo.cairo_get_matrix(cairo, transform.handle); >+ cairo_get_matrix(cairo, transform.handle); > double[] identity = identity(); > Cairo.cairo_matrix_invert(identity); > Cairo.cairo_matrix_multiply(transform.handle, transform.handle, identity); >@@ -2935,6 +2951,9 @@ void init(Drawable drawable, GCData data, long /*int*/ gdkGC) { > if (OS.USE_CAIRO) { > long /*int*/ cairo = data.cairo = handle; > Cairo.cairo_set_fill_rule(cairo, Cairo.CAIRO_FILL_RULE_EVEN_ODD); >+ if (OS.GTK_VERSION >= OS.VERSION(3, 9, 0)) { >+ Cairo.cairo_save(cairo); >+ } > data.state &= ~(BACKGROUND | FOREGROUND | FONT | LINE_WIDTH | LINE_CAP | LINE_JOIN | LINE_STYLE | DRAW_OFFSET); > } else if (OS.INIT_CAIRO) { > initCairo(); >@@ -3285,14 +3304,20 @@ static void setCairoPatternColor(long /*int*/ pattern, int offset, Color c, int > > void setCairoClip(long /*int*/ damageRgn, long /*int*/ clipRgn) { > long /*int*/ cairo = data.cairo; >- if (OS.GTK_VERSION >= OS.VERSION(2,18,0) && data.drawable != 0 && !OS.GTK3) { >- OS.gdk_cairo_reset_clip(cairo, data.drawable); >+ if (OS.GTK_VERSION >= OS.VERSION(3, 9, 0)) { >+ Cairo.cairo_restore(cairo); >+ Cairo.cairo_save(cairo); >+ data.state &= ~(BACKGROUND | FOREGROUND | LINE_CAP | LINE_JOIN | LINE_WIDTH | LINE_STYLE | LINE_MITERLIMIT); > } else { >- Cairo.cairo_reset_clip(cairo); >+ if (OS.GTK_VERSION >= OS.VERSION(2,18,0) && data.drawable != 0 && !OS.GTK3) { >+ OS.gdk_cairo_reset_clip(cairo, data.drawable); >+ } else { >+ Cairo.cairo_reset_clip(cairo); >+ } > } > if (damageRgn != 0) { > double[] matrix = new double[6]; >- Cairo.cairo_get_matrix(cairo, matrix); >+ cairo_get_matrix(cairo, matrix); > double[] identity = new double[6]; > Cairo.cairo_matrix_init_identity(identity); > Cairo.cairo_set_matrix(cairo, identity); >@@ -3326,7 +3351,7 @@ void setClipping(long /*int*/ clipRgn) { > OS.gdk_region_union(data.clipRgn, clipRgn); > if (cairo != 0) { > if (data.clippingTransform == null) data.clippingTransform = new double[6]; >- Cairo.cairo_get_matrix(cairo, data.clippingTransform); >+ cairo_get_matrix(cairo, data.clippingTransform); > setCairoClip(data.damageRgn, clipRgn); > } else { > long /*int*/ clipping = clipRgn; >diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java >index 8c0b868..61f3a05 100644 >--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java >+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java >@@ -2733,7 +2733,16 @@ void rendererRender (long /*int*/ cell, long /*int*/ cr, long /*int*/ window, lo > } > contentX [0] -= imageWidth; > contentWidth [0] += imageWidth; >- GC gc = new GC (this); >+ GC gc; >+ if (cr != 0) { >+ Cairo.cairo_save(cr); >+ Cairo.cairo_reset_clip(cr); >+ GCData data = new GCData(); >+ data.cairo = cr; >+ gc = GC.gtk_new (this, data); >+ } else { >+ gc = new GC (this); >+ } > if ((drawState & SWT.SELECTED) != 0) { > Color background, foreground; > if (gtk_widget_has_focus (handle) || OS.GTK3) { >@@ -2772,6 +2781,9 @@ void rendererRender (long /*int*/ cell, long /*int*/ cr, long /*int*/ window, lo > event.detail = drawState; > sendEvent (SWT.PaintItem, event); > gc.dispose(); >+ if (cr != 0) { >+ Cairo.cairo_restore(cr); >+ } > } > } > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 421127
: 239227 |
239668
|
240317
|
240445
|
241941
|
242048