diff options
| author | Thomas Fitzsimmons <fitzsim@redhat.com> | 2003-10-09 00:26:29 +0000 |
|---|---|---|
| committer | Thomas Fitzsimmons <fitzsim@gcc.gnu.org> | 2003-10-09 00:26:29 +0000 |
| commit | 23a555b077d77c46a1690eb90c029d40a33ea5c5 (patch) | |
| tree | e8c4b26ac43e59bc2b91154944ca054acfa5b1ae /libjava/gnu/java | |
| parent | ba401f2f1fe18f83efe35676cf1c530f195cbdeb (diff) | |
| download | gcc-23a555b077d77c46a1690eb90c029d40a33ea5c5.zip gcc-23a555b077d77c46a1690eb90c029d40a33ea5c5.tar.gz gcc-23a555b077d77c46a1690eb90c029d40a33ea5c5.tar.bz2 | |
GtkButtonPeer.java (handleEvent): Remove modality check.
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.
From-SVN: r72252
Diffstat (limited to 'libjava/gnu/java')
| -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 1b05750..0801f9c 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 e7b047e..551d05d 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 b44a02d..ce5aa71 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 be61504..8875913 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); + } } |
