diff options
author | Guilhem Lavaux <guilhem@kaffe.org> | 2006-06-06 20:30:07 +0000 |
---|---|---|
committer | Guilhem Lavaux <guilhem@kaffe.org> | 2006-06-06 20:30:07 +0000 |
commit | 56c5b96a2d3754736d13eebb73270fb8f925301d (patch) | |
tree | 8f13d21d9dadf9810d11284977ed98a0a5c41868 /gnu/java/awt/peer/gtk/GtkComponentPeer.java | |
parent | 68d82e8b935385c52f40123538e6e5b0dad7dbc9 (diff) | |
download | classpath-56c5b96a2d3754736d13eebb73270fb8f925301d.tar.gz |
2006-06-06 Guilhem Lavaux <guilhem@kaffe.org>
* Merged HEAD as of 2006-05-08.
Diffstat (limited to 'gnu/java/awt/peer/gtk/GtkComponentPeer.java')
-rw-r--r-- | gnu/java/awt/peer/gtk/GtkComponentPeer.java | 50 |
1 files changed, 43 insertions, 7 deletions
diff --git a/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/gnu/java/awt/peer/gtk/GtkComponentPeer.java index 61cc3a82a..1a85de5fe 100644 --- a/gnu/java/awt/peer/gtk/GtkComponentPeer.java +++ b/gnu/java/awt/peer/gtk/GtkComponentPeer.java @@ -63,6 +63,7 @@ import java.awt.event.FocusEvent; import java.awt.event.ItemEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; +import java.awt.event.MouseWheelEvent; import java.awt.event.PaintEvent; import java.awt.event.TextEvent; import java.awt.image.BufferedImage; @@ -98,8 +99,9 @@ public class GtkComponentPeer extends GtkGenericPeer native void gtkWidgetGetPreferredDimensions (int[] dim); native void gtkWindowGetLocationOnScreen (int[] point); native void gtkWidgetGetLocationOnScreen (int[] point); - native void gtkWidgetSetCursor (int type); - native void gtkWidgetSetCursorUnlocked (int type); + native void gtkWidgetSetCursor (int type, GtkImage image, int x, int y); + native void gtkWidgetSetCursorUnlocked (int type, GtkImage image, + int x, int y); native void gtkWidgetSetBackground (int red, int green, int blue); native void gtkWidgetSetForeground (int red, int green, int blue); native void gtkWidgetSetSensitive (boolean sensitive); @@ -148,6 +150,9 @@ public class GtkComponentPeer extends GtkGenericPeer setNativeEventMask (); realize (); + + if (awtComponent.isCursorSet()) + setCursor (); } void setParentAndBounds () @@ -313,7 +318,7 @@ public class GtkComponentPeer extends GtkGenericPeer // seems expensive. However, the graphics state does not carry // over between calls to paint, and resetting the graphics object // may even be more costly than simply creating a new one. - GdkGraphics g = (GdkGraphics) getGraphics(); + Graphics g = getGraphics(); g.setClip(event.getUpdateRect()); @@ -332,7 +337,7 @@ public class GtkComponentPeer extends GtkGenericPeer || (awtComponent.getWidth() < 1 || awtComponent.getHeight() < 1)) return; - GdkGraphics g = (GdkGraphics) getGraphics(); + Graphics g = getGraphics(); g.setClip(event.getUpdateRect()); @@ -502,10 +507,28 @@ public class GtkComponentPeer extends GtkGenericPeer public void setCursor (Cursor cursor) { + int x, y; + GtkImage image; + int type = cursor.getType(); + if (cursor instanceof GtkCursor) + { + GtkCursor gtkCursor = (GtkCursor) cursor; + image = gtkCursor.getGtkImage(); + Point hotspot = gtkCursor.getHotspot(); + x = hotspot.x; + y = hotspot.y; + } + else + { + image = null; + x = 0; + y = 0; + } + if (Thread.currentThread() == GtkToolkit.mainThread) - gtkWidgetSetCursorUnlocked (cursor.getType ()); + gtkWidgetSetCursorUnlocked(cursor.getType(), image, x, y); else - gtkWidgetSetCursor (cursor.getType ()); + gtkWidgetSetCursor(cursor.getType(), image, x, y); } public void setEnabled (boolean b) @@ -544,7 +567,7 @@ public class GtkComponentPeer extends GtkGenericPeer public void setVisible (boolean b) { // Only really set visible when component is bigger than zero pixels. - if (b) + if (b && ! (awtComponent instanceof Window)) { Rectangle bounds = awtComponent.getBounds(); b = (bounds.width > 0) && (bounds.height > 0); @@ -573,6 +596,19 @@ public class GtkComponentPeer extends GtkGenericPeer clickCount, popupTrigger)); } + /** + * Callback for component_scroll_cb. + */ + protected void postMouseWheelEvent(int id, long when, int mods, + int x, int y, int clickCount, + boolean popupTrigger, + int type, int amount, int rotation) + { + q().postEvent(new MouseWheelEvent(awtComponent, id, when, mods, + x, y, clickCount, popupTrigger, + type, amount, rotation)); + } + protected void postExposeEvent (int x, int y, int width, int height) { q().postEvent (new PaintEvent (awtComponent, PaintEvent.PAINT, |