diff options
| author | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-09 00:26:29 +0000 |
|---|---|---|
| committer | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-09 00:26:29 +0000 |
| commit | afdfc197c91adb0d71a2b07f8f71457dc157eaf3 (patch) | |
| tree | e8c4b26ac43e59bc2b91154944ca054acfa5b1ae /libjava/gnu/java/awt/peer/gtk | |
| parent | 945d9f0e95b5519f87de0221eed0061dd7be321b (diff) | |
| download | ppe42-gcc-afdfc197c91adb0d71a2b07f8f71457dc157eaf3.tar.gz ppe42-gcc-afdfc197c91adb0d71a2b07f8f71457dc157eaf3.zip | |
2003-10-08 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkButtonPeer.java (handleEvent): Remove
modality check.
* gnu/java/awt/peer/gtk/GtkDialogPeer.java (initializeInsets):
Initialize insets to use latest insets.
* gnu/java/awt/peer/gtk/GtkFramePeer.java: Likewise.
* gnu/java/awt/peer/gtk/GtkWindowPeer.java (latestInsets): New
field.
(postConfigureEvent): Update latestInsets field when insets
change. Remove call to setSize. Move validate call outside of
if blocks.
(setVisible): Call setBounds before showing window.
(nativeSetVisible): New native method.
* java/awt/Window.java (show): Show visible owned windows.
(hide): Hide visible owned windows.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
(awt_event_handler): Implement modality using GTK grabs.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
(global_gtk_window_group): New global variable.
(gtkInit): Initialize global_gtk_window_group.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c (create):
Clamp width and height values to at least 1. Add this window to
the global GTK window group.
(setVisible): Rename to nativeSetVisible.
(setup_window): Remove function.
(setSize): Clamp width and height values to at least 1.
(nativeSetBounds): Likewise.
(gdk_window_get_root_geometry): Remove function.
* jni/gtk-peer/gtkpeer.h: Remove gdk_window_get_root_geometry
and setup_window declarations. Declare global_gtk_window_group.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72252 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/java/awt/peer/gtk')
| -rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java | 3 | ||||
| -rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java | 12 | ||||
| -rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java | 8 | ||||
| -rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java | 42 |
4 files changed, 47 insertions, 18 deletions
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java index 1b057507b02..0801f9c6ec0 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java @@ -66,8 +66,7 @@ public class GtkButtonPeer extends GtkComponentPeer public void handleEvent (AWTEvent e) { - if (e.getID () == MouseEvent.MOUSE_CLICKED && isEnabled () - && !modalHasGrab ()) + if (e.getID () == MouseEvent.MOUSE_CLICKED && isEnabled ()) { MouseEvent me = (MouseEvent) e; if (!me.isConsumed () diff --git a/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java index e7b047ea2e2..551d05ded8f 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java @@ -54,11 +54,13 @@ public class GtkDialogPeer extends GtkWindowPeer void initializeInsets () { - // Unfortunately, X does not provide a clean way to calculate the - // dimensions of a dialog's borders before it has been displayed. - // So we guess and then fix the dimensions upon receipt of the - // first configure event. - insets = new Insets (20, 6, 6, 6); + synchronized (latestInsets) + { + insets = new Insets (latestInsets.top, + latestInsets.left, + latestInsets.bottom, + latestInsets.right); + } } void create () diff --git a/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java b/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java index b44a02d13db..ce5aa71e573 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java @@ -76,7 +76,13 @@ public class GtkFramePeer extends GtkWindowPeer // dimensions of a frame's borders before it has been displayed. // So we guess and then fix the dimensions upon receipt of the // first configure event. - insets = new Insets (20, 6, 6, 6); + synchronized (latestInsets) + { + insets = new Insets (latestInsets.top, + latestInsets.left, + latestInsets.bottom, + latestInsets.right); + } } void create () diff --git a/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java index be615042524..8875913d4fc 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java @@ -56,6 +56,15 @@ public class GtkWindowPeer extends GtkContainerPeer static protected final int GDK_WINDOW_TYPE_HINT_DOCK = 6; static protected final int GDK_WINDOW_TYPE_HINT_DESKTOP = 7; + // Unfortunately, X does not provide a clean way to calculate the + // dimensions of a window's borders before it has been displayed. + // So when creating the application's first window we guess the + // border dimensions. Then if need be for that window, we fix the + // dimensions upon receipt of the first configure event. Windows + // created after the first one will use the latest inset values + // received in postConfigureEvent. + static Insets latestInsets = new Insets (20, 6, 6, 6); + native void create (int type, boolean decorated, int width, int height, GtkWindowPeer parent); @@ -109,18 +118,19 @@ public class GtkWindowPeer extends GtkContainerPeer set ("title", title); } + native void setSize (int width, int height); + public void setResizable (boolean resizable) { // Call setSize; otherwise when resizable is changed from true to // false the window will shrink to the dimensions it had before it // was resizable. setSize (awtComponent.getWidth() - insets.left - insets.right, - awtComponent.getHeight() - insets.top - insets.bottom); + awtComponent.getHeight() - insets.top - insets.bottom); set ("allow_shrink", resizable); set ("allow_grow", resizable); } - native void setSize (int width, int height); native void setBoundsCallback (Window window, int x, int y, int width, int height); @@ -159,7 +169,13 @@ public class GtkWindowPeer extends GtkContainerPeer insets.bottom = bottom; insets.right = right; - awtComponent.validate(); + synchronized (latestInsets) + { + latestInsets.top = top; + latestInsets.left = left; + latestInsets.bottom = bottom; + latestInsets.right = right; + } } else { @@ -178,15 +194,21 @@ public class GtkWindowPeer extends GtkContainerPeer frame_y, frame_width, frame_height); - - if (frame_width != awtComponent.getWidth() - || frame_height != awtComponent.getHeight()) - setSize (width, height); - - awtComponent.validate(); } } + awtComponent.validate(); } - native public void setVisible (boolean b); + native void nativeSetVisible (boolean b); + public void setVisible (boolean b) + { + // Prevent the window manager from automatically placing this + // window when it is shown. + if (b) + setBounds (awtComponent.getX(), + awtComponent.getY(), + awtComponent.getWidth(), + awtComponent.getHeight()); + nativeSetVisible (b); + } } |

