Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristophe Cornu2005-03-29 20:59:24 +0000
committerChristophe Cornu2005-03-29 20:59:24 +0000
commit62a50fd56f88963a53641139c08b109ccb5dd6cf (patch)
tree9d6e22afbfd83ef934933c8f57f60832b61cb2fb
parentb83310a1cf7fbf6ca6fc623153775b7c628d1753 (diff)
downloadeclipse.platform.swt-62a50fd56f88963a53641139c08b109ccb5dd6cf.tar.gz
eclipse.platform.swt-62a50fd56f88963a53641139c08b109ccb5dd6cf.tar.xz
eclipse.platform.swt-62a50fd56f88963a53641139c08b109ccb5dd6cf.zip
89217
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c17
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c5
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h1
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java9
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java7
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java15
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java15
7 files changed, 54 insertions, 15 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 ada7ecaa80..b4610c2276 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
@@ -10101,6 +10101,23 @@ JNIEXPORT jint JNICALL OS_NATIVE(_1gtk_1widget_1get_1parent)
}
#endif
+#ifndef NO__1gtk_1widget_1get_1size_1request
+JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1widget_1get_1size_1request)
+ (JNIEnv *env, jclass that, jint arg0, jintArray arg1, jintArray arg2)
+{
+ jint *lparg1=NULL;
+ jint *lparg2=NULL;
+ OS_NATIVE_ENTER(env, that, _1gtk_1widget_1get_1size_1request_FUNC);
+ if (arg1) if ((lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL)) == NULL) goto fail;
+ if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail;
+ gtk_widget_get_size_request((GtkWidget *)arg0, (gint *)lparg1, (gint *)lparg2);
+fail:
+ if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+ if (arg1 && lparg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
+ OS_NATIVE_EXIT(env, that, _1gtk_1widget_1get_1size_1request_FUNC);
+}
+#endif
+
#ifndef NO__1gtk_1widget_1get_1style
JNIEXPORT jint JNICALL OS_NATIVE(_1gtk_1widget_1get_1style)
(JNIEnv *env, jclass that, jint arg0)
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 f2ad661bc1..f7d9436987 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 = 980;
-int OS_nativeFunctionCallCount[980];
+int OS_nativeFunctionCount = 981;
+int OS_nativeFunctionCallCount[981];
char * OS_nativeFunctionNames[] = {
"Call",
"GDK_1WINDOWING_1X11",
@@ -804,6 +804,7 @@ char * OS_nativeFunctionNames[] = {
"_1gtk_1widget_1get_1modifier_1style",
"_1gtk_1widget_1get_1pango_1context",
"_1gtk_1widget_1get_1parent",
+ "_1gtk_1widget_1get_1size_1request",
"_1gtk_1widget_1get_1style",
"_1gtk_1widget_1get_1toplevel",
"_1gtk_1widget_1grab_1focus",
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 e08484194a..9f5553c274 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
@@ -808,6 +808,7 @@ typedef enum {
_1gtk_1widget_1get_1modifier_1style_FUNC,
_1gtk_1widget_1get_1pango_1context_FUNC,
_1gtk_1widget_1get_1parent_FUNC,
+ _1gtk_1widget_1get_1size_1request_FUNC,
_1gtk_1widget_1get_1style_FUNC,
_1gtk_1widget_1get_1toplevel_FUNC,
_1gtk_1widget_1grab_1focus_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 fe82c85b52..e3b46fcb1d 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
@@ -6947,6 +6947,15 @@ public static final int /*long*/ gtk_widget_get_style(int /*long*/ widget) {
lock.unlock();
}
}
+public static final native void _gtk_widget_get_size_request(int /*long*/ widget, int [] width, int [] height);
+public static final void gtk_widget_get_size_request(int /*long*/ widget, int [] width, int [] height) {
+ lock.lock();
+ try {
+ _gtk_widget_get_size_request(widget, width, height);
+ } finally {
+ lock.unlock();
+ }
+}
public static final native int /*long*/ _gtk_widget_get_toplevel (int /*long*/ widget);
public static final int /*long*/ gtk_widget_get_toplevel (int /*long*/ widget) {
lock.lock();
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
index 99145ac815..cb80bb030d 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
@@ -144,13 +144,16 @@ public Point computeSize (int wHint, int hHint, boolean changed) {
* of the button.
*/
forceResize ();
- int width = OS.GTK_WIDGET_WIDTH (handle);
+ int [] reqWidth = null, reqHeight = null;
if ((style & (SWT.CHECK | SWT.RADIO)) != 0) {
+ reqWidth = new int [1];
+ reqHeight = new int [1];
+ OS.gtk_widget_get_size_request (boxHandle, reqWidth, reqHeight);
OS.gtk_widget_set_size_request (boxHandle, -1, -1);
}
Point size = computeNativeSize (handle, wHint, hHint, changed);
if ((style & (SWT.CHECK | SWT.RADIO)) != 0) {
- OS.gtk_widget_set_size_request (boxHandle, width, -1);
+ OS.gtk_widget_set_size_request (boxHandle, reqWidth [0], reqHeight [0]);
}
if (wHint != SWT.DEFAULT || hHint != SWT.DEFAULT) {
if ((OS.GTK_WIDGET_FLAGS (handle) & OS.GTK_CAN_DEFAULT) != 0) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
index 9c5d7c5a50..ac59acb817 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
@@ -368,11 +368,20 @@ public Point computeSize (int wHint, int hHint, boolean changed) {
Point computeNativeSize (int /*long*/ h, int wHint, int hHint, boolean changed) {
int width = wHint, height = hHint;
- if (wHint == SWT.DEFAULT || hHint == SWT.DEFAULT) {
+ if (wHint == SWT.DEFAULT && hHint == SWT.DEFAULT) {
GtkRequisition requisition = new GtkRequisition ();
OS.gtk_widget_size_request (h, requisition);
- width = wHint == SWT.DEFAULT ? OS.GTK_WIDGET_REQUISITION_WIDTH (h) : wHint;
- height = hHint == SWT.DEFAULT ? OS.GTK_WIDGET_REQUISITION_HEIGHT (h) : hHint;
+ width = OS.GTK_WIDGET_REQUISITION_WIDTH (h);
+ height = OS.GTK_WIDGET_REQUISITION_HEIGHT (h);
+ } else if (wHint == SWT.DEFAULT || hHint == SWT.DEFAULT) {
+ int [] reqWidth = new int [1], reqHeight = new int [1];
+ OS.gtk_widget_get_size_request (h, reqWidth, reqHeight);
+ OS.gtk_widget_set_size_request (h, wHint, hHint);
+ GtkRequisition requisition = new GtkRequisition ();
+ OS.gtk_widget_size_request (h, requisition);
+ OS.gtk_widget_set_size_request (h, reqWidth [0], reqHeight [0]);
+ width = wHint == SWT.DEFAULT ? requisition.width : wHint;
+ height = hHint == SWT.DEFAULT ? requisition.height : hHint;
}
return new Point (width, height);
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
index 5dddb71d0a..c50ed1f7e4 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
@@ -106,24 +106,23 @@ public Point computeSize (int wHint, int hHint, boolean changed) {
}
boolean fixWrap = labelHandle != 0 && (style & SWT.WRAP) != 0;
if (fixWrap || frameHandle != 0) forceResize ();
- int labelWidth = 0, labelHeight = 0;
+ int [] labelWidth = new int [1], labelHeight = new int [1];
if (fixWrap) {
- labelWidth = OS.GTK_WIDGET_WIDTH (labelHandle);
- labelHeight = OS.GTK_WIDGET_HEIGHT (labelHandle);
- OS.gtk_widget_set_size_request (labelHandle, -1, -1);
+ OS.gtk_widget_get_size_request (labelHandle, labelWidth, labelHeight);
+ OS.gtk_widget_set_size_request (labelHandle, wHint, hHint);
}
Point size;
if (frameHandle != 0) {
- int width = OS.GTK_WIDGET_WIDTH (handle);
- int height = OS.GTK_WIDGET_HEIGHT (handle);
+ int [] reqWidth = new int [1], reqHeight = new int [1];
+ OS.gtk_widget_get_size_request (handle, reqWidth, reqHeight);
OS.gtk_widget_set_size_request (handle, wHint, hHint);
size = computeNativeSize (frameHandle, -1, -1, changed);
- OS.gtk_widget_set_size_request (handle, width, height);
+ OS.gtk_widget_set_size_request (handle, reqWidth [0], reqHeight [0]);
} else {
size = computeNativeSize (handle, wHint, hHint, changed);
}
if (fixWrap) {
- OS.gtk_widget_set_size_request (labelHandle, labelWidth, labelHeight);
+ OS.gtk_widget_set_size_request (labelHandle, labelWidth [0], labelHeight [0]);
}
return size;
}

Back to the top