summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnatoly Spektor <aspektor@redhat.com>2012-07-05 16:42:25 -0400
committerAnatoly Spektor <aspektor@redhat.com>2012-07-05 16:42:25 -0400
commit09d73bd1805c09a7b310e62c4937835db9518580 (patch)
treec0cc84dfcbd2a5c1e87bc3c27fcaf56c4794787d
parent7eb39505fe0ea4da84d8b917779e7cdc43b38cc9 (diff)
downloadeclipse.platform.swt-tracker_testing.tar.gz
eclipse.platform.swt-tracker_testing.tar.xz
eclipse.platform.swt-tracker_testing.zip
Tracker Widget Trying different ways to work around INCLUDE_INFERIORStracker_testing
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c58
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c9
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h5
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java62
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java60
5 files changed, 175 insertions, 19 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
index 1c8c5a54fb..25c2e915d6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
@@ -1277,6 +1277,18 @@ JNIEXPORT jint JNICALL OS_NATIVE(_1Call)
}
#endif
+#ifndef NO__1DefaultDepth
+JNIEXPORT jint JNICALL OS_NATIVE(_1DefaultDepth)
+ (JNIEnv *env, jclass that, jintLong arg0, jint arg1)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, _1DefaultDepth_FUNC);
+ rc = (jint)DefaultDepth((Display *)arg0, arg1);
+ OS_NATIVE_EXIT(env, that, _1DefaultDepth_FUNC);
+ return rc;
+}
+#endif
+
#ifndef NO__1FcConfigAppFontAddFile
JNIEXPORT jboolean JNICALL OS_NATIVE(_1FcConfigAppFontAddFile)
(JNIEnv *env, jclass that, jintLong arg0, jbyteArray arg1)
@@ -1861,6 +1873,28 @@ JNIEXPORT jboolean JNICALL OS_NATIVE(_1XCheckWindowEvent)
}
#endif
+#ifndef NO__1XCloseDisplay
+JNIEXPORT void JNICALL OS_NATIVE(_1XCloseDisplay)
+ (JNIEnv *env, jclass that, jintLong arg0)
+{
+ OS_NATIVE_ENTER(env, that, _1XCloseDisplay_FUNC);
+ XCloseDisplay((Display *)arg0);
+ OS_NATIVE_EXIT(env, that, _1XCloseDisplay_FUNC);
+}
+#endif
+
+#ifndef NO__1XCreateGC
+JNIEXPORT jintLong JNICALL OS_NATIVE(_1XCreateGC)
+ (JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3)
+{
+ jintLong rc = 0;
+ OS_NATIVE_ENTER(env, that, _1XCreateGC_FUNC);
+ rc = (jintLong)XCreateGC((Display *)arg0, (Drawable)arg1, (unsigned long)arg2, (XGCValues *)arg3);
+ OS_NATIVE_EXIT(env, that, _1XCreateGC_FUNC);
+ return rc;
+}
+#endif
+
#ifndef NO__1XDefaultRootWindow
JNIEXPORT jintLong JNICALL OS_NATIVE(_1XDefaultRootWindow)
(JNIEnv *env, jclass that, jintLong arg0)
@@ -1989,6 +2023,18 @@ fail:
}
#endif
+#ifndef NO__1XOpenDisplay
+JNIEXPORT jintLong JNICALL OS_NATIVE(_1XOpenDisplay)
+ (JNIEnv *env, jclass that, jintLong arg0)
+{
+ jintLong rc = 0;
+ OS_NATIVE_ENTER(env, that, _1XOpenDisplay_FUNC);
+ rc = (jintLong)XOpenDisplay((char *)arg0);
+ OS_NATIVE_EXIT(env, that, _1XOpenDisplay_FUNC);
+ return rc;
+}
+#endif
+
#ifndef NO__1XQueryPointer
JNIEXPORT jint JNICALL OS_NATIVE(_1XQueryPointer)
(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLongArray arg2, jintLongArray arg3, jintArray arg4, jintArray arg5, jintArray arg6, jintArray arg7, jintArray arg8)
@@ -2320,6 +2366,18 @@ JNIEXPORT jintLong JNICALL OS_NATIVE(_1XSetSelectionOwner)
}
#endif
+#ifndef NO__1XSetSubwindowMode
+JNIEXPORT jintLong JNICALL OS_NATIVE(_1XSetSubwindowMode)
+ (JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jint arg2)
+{
+ jintLong rc = 0;
+ OS_NATIVE_ENTER(env, that, _1XSetSubwindowMode_FUNC);
+ rc = (jintLong)XSetSubwindowMode((Display *)arg0, (GC)arg1, arg2);
+ OS_NATIVE_EXIT(env, that, _1XSetSubwindowMode_FUNC);
+ return rc;
+}
+#endif
+
#ifndef NO__1XSetTransientForHint
JNIEXPORT jint JNICALL OS_NATIVE(_1XSetTransientForHint)
(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
index f444a423e7..5265f025e4 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
@@ -18,8 +18,8 @@
#ifdef NATIVE_STATS
-int OS_nativeFunctionCount = 1402;
-int OS_nativeFunctionCallCount[1402];
+int OS_nativeFunctionCount = 1407;
+int OS_nativeFunctionCallCount[1407];
char * OS_nativeFunctionNames[] = {
#ifndef JNI64
"Call__IIII",
@@ -134,6 +134,7 @@ char * OS_nativeFunctionNames[] = {
"X_1EVENT_1TYPE",
"X_1EVENT_1WINDOW",
"_1Call",
+ "_1DefaultDepth",
"_1FcConfigAppFontAddFile",
"_1GDK_1PIXMAP_1XID",
"_1GDK_1TYPE_1COLOR",
@@ -182,6 +183,8 @@ char * OS_nativeFunctionNames[] = {
"_1XCheckIfEvent",
"_1XCheckMaskEvent",
"_1XCheckWindowEvent",
+ "_1XCloseDisplay",
+ "_1XCreateGC",
"_1XDefaultRootWindow",
"_1XDefaultScreen",
"_1XFlush",
@@ -191,6 +194,7 @@ char * OS_nativeFunctionNames[] = {
"_1XInternAtom",
"_1XKeysymToKeycode",
"_1XListProperties",
+ "_1XOpenDisplay",
"_1XQueryPointer",
"_1XQueryTree",
"_1XReconfigureWMWindow",
@@ -208,6 +212,7 @@ char * OS_nativeFunctionNames[] = {
"_1XSetIOErrorHandler",
"_1XSetInputFocus",
"_1XSetSelectionOwner",
+ "_1XSetSubwindowMode",
"_1XSetTransientForHint",
"_1XSynchronize",
"_1XTestFakeButtonEvent",
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
index f7321e2d6a..9ca99f7352 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
@@ -142,6 +142,7 @@ typedef enum {
X_1EVENT_1TYPE_FUNC,
X_1EVENT_1WINDOW_FUNC,
_1Call_FUNC,
+ _1DefaultDepth_FUNC,
_1FcConfigAppFontAddFile_FUNC,
_1GDK_1PIXMAP_1XID_FUNC,
_1GDK_1TYPE_1COLOR_FUNC,
@@ -190,6 +191,8 @@ typedef enum {
_1XCheckIfEvent_FUNC,
_1XCheckMaskEvent_FUNC,
_1XCheckWindowEvent_FUNC,
+ _1XCloseDisplay_FUNC,
+ _1XCreateGC_FUNC,
_1XDefaultRootWindow_FUNC,
_1XDefaultScreen_FUNC,
_1XFlush_FUNC,
@@ -199,6 +202,7 @@ typedef enum {
_1XInternAtom_FUNC,
_1XKeysymToKeycode_FUNC,
_1XListProperties_FUNC,
+ _1XOpenDisplay_FUNC,
_1XQueryPointer_FUNC,
_1XQueryTree_FUNC,
_1XReconfigureWMWindow_FUNC,
@@ -216,6 +220,7 @@ typedef enum {
_1XSetIOErrorHandler_FUNC,
_1XSetInputFocus_FUNC,
_1XSetSelectionOwner_FUNC,
+ _1XSetSubwindowMode_FUNC,
_1XSetTransientForHint_FUNC,
_1XSynchronize_FUNC,
_1XTestFakeButtonEvent_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
index 8827bda6b3..c5e76a4738 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
@@ -885,6 +885,26 @@ public static final int /*long*/ XDefaultRootWindow(int /*long*/ display) {
lock.unlock();
}
}
+/** @param display_name cast=(char *) */
+public static final native int /*long*/ _XOpenDisplay(int /*long*/ display_name);
+public static final int /*long*/ XOpenDisplay(int /*long*/ display_name) {
+ lock.lock();
+ try {
+ return _XOpenDisplay(display_name);
+ } finally {
+ lock.unlock();
+ }
+}
+/** @param display cast=(Display *) */
+public static final native void _XCloseDisplay(int /*long*/ display);
+public static final void XCloseDisplay(int /*long*/ display) {
+ lock.lock();
+ try {
+ _XFlush(display);
+ } finally {
+ lock.unlock();
+ }
+}
/** @param display cast=(Display *) */
public static final native void _XFlush(int /*long*/ display);
public static final void XFlush(int /*long*/ display) {
@@ -895,6 +915,19 @@ public static final void XFlush(int /*long*/ display) {
lock.unlock();
}
}
+/**
+ * @param display cast=(Display *)
+ **/
+public static final native int _DefaultDepth(int /*long*/ display, int screen_number);
+public static final int DefaultDepth(int /*long*/ display, int screen_number) {
+ lock.lock();
+ try {
+ return DefaultDepth(display,screen_number);
+ } finally {
+ lock.unlock();
+ }
+ }
+
/** @param address cast=(void *) */
public static final native void _XFree(int /*long*/ address);
public static final void XFree(int /*long*/ address) {
@@ -922,6 +955,34 @@ public static final int /*long*/ XSetSelectionOwner(int /*long*/ display, int /*
}
/**
* @param display cast=(Display *)
+ * @param d cast=(Drawable)
+ * @param valuemask cast=(unsigned long)
+ * @param values cast=(XGCValues *)
+ */
+public static final native int /*long*/ _XCreateGC(int /*long*/ display, int /*long*/ d, int /*long*/ valuemask, int /*long*/ values);
+public static final int /*long*/ XCreateGC(int /*long*/ display, int /*long*/ d, int /*long*/ valuemask, int /*long*/ values) {
+ lock.lock();
+ try {
+ return _XCreateGC(display, d, valuemask, values);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @param display cast=(Display *)
+ * @param gc cast=(GC)
+ */
+public static final native int /*long*/ _XSetSubwindowMode(int /*long*/ display, int /*long*/ gc, int subwindow_mode);
+public static final int /*long*/ XSetSubwindowMode(int /*long*/ display, int /*long*/ gc, int subwindow_mode) {
+ lock.lock();
+ try {
+ return _XSetSubwindowMode(display, gc, subwindow_mode);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @param display cast=(Display *)
* @param selection cast=(Atom)
*/
public static final native int /*long*/ _XGetSelectionOwner(int /*long*/ display, int /*long*/ selection);
@@ -933,7 +994,6 @@ public static final int /*long*/ XGetSelectionOwner(int /*long*/ display, int /*
lock.unlock();
}
}
-
/**
* @param display cast=(Display *)
* @param window cast=(Window)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java
index 701085c35a..5c88436263 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java
@@ -313,24 +313,52 @@ void drawRectangles (Rectangle [] rects) {
}
if (window == 0) return;
- if(OS.USE_CAIRO){
- int /*long*/ cairo = OS.gdk_cairo_create(window);
- if (cairo == 0) error (SWT.ERROR_NO_HANDLES);
-
- Cairo.cairo_set_source_rgb(cairo, 1, 1, 1);
- Cairo.cairo_set_line_width(cairo, 1);
- Cairo.cairo_set_operator(cairo,Cairo.CAIRO_OPERATOR_DIFFERENCE);
- Cairo.cairo_set_antialias(cairo, Cairo.CAIRO_ANTIALIAS_NONE);
-
- for (int i=0; i<rects.length; i++) {
- Rectangle rect = rects [i];
- Cairo.cairo_rectangle (cairo, rect.x, rect.y, rect.width, rect.height);
- Cairo.cairo_stroke(cairo);
+ if (OS.USE_CAIRO) {
+ if(parent != null){
+ int /*long*/ cairo = OS.gdk_cairo_create(window);
+ if (cairo == 0) error (SWT.ERROR_NO_HANDLES);
+ Cairo.cairo_set_source_rgb(cairo, 1, 1, 1);
+ Cairo.cairo_set_line_width(cairo, 1);
+ Cairo.cairo_set_operator(cairo,Cairo.CAIRO_OPERATOR_DIFFERENCE);
+ Cairo.cairo_set_antialias(cairo, Cairo.CAIRO_ANTIALIAS_NONE);
+ for (int i=0; i<rects.length; i++) {
+ Rectangle rect = rects [i];
+ Cairo.cairo_rectangle (cairo, rect.x, rect.y, rect.width, rect.height);
+ Cairo.cairo_stroke(cairo);
+ }
+ Cairo.cairo_destroy(cairo);
+ return;
+ }else{
+
+ int /*long*/ pixmap = OS.gdk_pixmap_new(window, 1000, 1000, 1);
+ int /*long*/ xDisplay = OS.gdk_x11_display_get_xdisplay(OS.gdk_display_get_default());
+ int /*long*/ xDrawable = OS.gdk_x11_drawable_get_xid(pixmap);
+ int /*long*/ xVisual = OS.gdk_x11_visual_get_xvisual(OS.gdk_visual_get_system());
+ int /*long*/ gc = OS.XCreateGC(xDisplay, xDrawable, 0, 0);
+//
+// int /*long*/ srcSurface = Cairo.cairo_xlib_surface_create(xDisplay, xDrawable, xVisual, 1000, 1000);
+// XRenderPictureAttributes attrib;
+// attrib = new XRenderPictureAttributes();
+// attrib.subwindow_mode = 1;
+ OS.XSetSubwindowMode(xDisplay,gc, 1);
+ int /*long*/ cairo = Cairo.cairo_create(gc);
+
+ if (cairo == 0) error (SWT.ERROR_NO_HANDLES);
+ Cairo.cairo_set_source_rgb(cairo, 1, 1, 1);
+ Cairo.cairo_set_line_width(cairo, 1);
+ Cairo.cairo_set_operator(cairo,Cairo.CAIRO_OPERATOR_DIFFERENCE);
+ Cairo.cairo_set_antialias(cairo, Cairo.CAIRO_ANTIALIAS_NONE);
+ for (int i=0; i<rects.length; i++) {
+ Rectangle rect = rects [i];
+ Cairo.cairo_rectangle (cairo, rect.x, rect.y, rect.width, rect.height);
+ Cairo.cairo_set_operator(cairo, Cairo.CAIRO_OPERATOR_SOURCE);
+ Cairo.cairo_stroke(cairo);
+ }
+ Cairo.cairo_destroy(cairo);
+
+ return;
}
- Cairo.cairo_destroy(cairo);
- return;
}
-
int /*long*/ gc = OS.gdk_gc_new (window);
if (gc == 0) return;
int /*long*/ colormap = OS.gdk_colormap_get_system ();