diff options
Diffstat (limited to 'libjava/gnu/java/awt/peer')
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GdkGraphics.java | 22 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java | 6 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java | 15 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java | 7 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java | 52 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java | 30 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkImage.java | 2 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java | 14 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkLabelPeer.java | 7 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkListPeer.java | 38 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java | 6 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java | 5 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkToolkit.java | 4 |
13 files changed, 144 insertions, 64 deletions
diff --git a/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java b/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java index d36ac2d..8ea6817 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java @@ -46,6 +46,7 @@ import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.awt.Shape; +import java.awt.SystemColor; import java.awt.image.ImageObserver; import java.text.AttributedCharacterIterator; @@ -149,7 +150,10 @@ public class GdkGraphics extends Graphics return true; } - return drawImage (img, x, y, component.getBackground (), observer); + if (component != null) + return drawImage (img, x, y, component.getBackground (), observer); + else + return drawImage (img, x, y, SystemColor.window, observer); } public boolean drawImage (Image img, int x, int y, int width, int height, @@ -168,8 +172,12 @@ public class GdkGraphics extends Graphics public boolean drawImage (Image img, int x, int y, int width, int height, ImageObserver observer) { - return drawImage (img, x, y, width, height, component.getBackground (), - observer); + if (component != null) + return drawImage (img, x, y, width, height, component.getBackground (), + observer); + else + return drawImage (img, x, y, width, height, SystemColor.window, + observer); } public boolean drawImage (Image img, int dx1, int dy1, int dx2, int dy2, @@ -191,8 +199,12 @@ public class GdkGraphics extends Graphics int sx1, int sy1, int sx2, int sy2, ImageObserver observer) { - return drawImage (img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, - component.getBackground (), observer); + if (component != null) + return drawImage (img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, + component.getBackground (), observer); + else + return drawImage (img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, + SystemColor.window, observer); } native public void drawLine (int x1, int y1, int x2, int y2); diff --git a/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java b/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java index 633eb09..3e77047 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java @@ -823,13 +823,13 @@ public class GdkGraphics2D extends Graphics2D public void setClip (int x, int y, int width, int height) { - clip = new Rectangle2D.Double ((double)x, (double)y, - (double)width, (double)height); - setClip(clip); + setClip(new Rectangle2D.Double ((double)x, (double)y, + (double)width, (double)height)); } public void setClip (Shape s) { + clip = s; if (s != null) { cairoNewPath (); diff --git a/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java index 86c7c37..cdd5f9c 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java @@ -54,9 +54,10 @@ public class GtkButtonPeer extends GtkComponentPeer public native void connectJObject (); public native void connectSignals (); - native void gtkSetFont(String name, int style, int size); + native void gtkSetFont (String name, int style, int size); native void gtkSetLabel(String label); native void gtkWidgetSetForeground (int red, int green, int blue); + native void gtkActivate (); public GtkButtonPeer (Button b) { @@ -87,8 +88,11 @@ public class GtkButtonPeer extends GtkComponentPeer { KeyEvent ke = (KeyEvent) e; if (!ke.isConsumed () && ke.getKeyCode () == KeyEvent.VK_SPACE) - postActionEvent (((Button)awtComponent).getActionCommand (), - ke.getModifiers ()); + { + postActionEvent (((Button) awtComponent).getActionCommand (), + ke.getModifiers ()); + gtkActivate (); + } } super.handleEvent (e); @@ -100,9 +104,4 @@ public class GtkButtonPeer extends GtkComponentPeer args.add ("label", ((Button)component).getLabel ()); } - - public void setFont (Font f) - { - gtkSetFont(f.getName(), f.getStyle(), f.getSize()); - } } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java index 2cff9cc..a465798 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java @@ -56,7 +56,7 @@ public class GtkCheckboxPeer extends GtkComponentPeer boolean state); public native void nativeSetCheckboxGroup (GtkCheckboxGroupPeer group); public native void connectSignals (); - public native void gtkSetFont (String name, int style, int size); + native void gtkSetFont (String name, int style, int size); public native void gtkSetLabel (String label); public GtkCheckboxPeer (Checkbox c) @@ -87,11 +87,6 @@ public class GtkCheckboxPeer extends GtkComponentPeer gtkSetLabel (label); } - public void setFont (Font f) - { - gtkSetFont(f.getName(), f.getStyle(), f.getSize()); - } - public void setCheckboxGroup (CheckboxGroup group) { GtkCheckboxGroupPeer gp diff --git a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java index 1a9d963..fe52ef0 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java @@ -54,12 +54,14 @@ import java.awt.GraphicsConfiguration; import java.awt.Image; import java.awt.Insets; import java.awt.ItemSelectable; +import java.awt.KeyboardFocusManager; import java.awt.Point; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.Window; import java.awt.event.FocusEvent; import java.awt.event.ItemEvent; +import java.awt.event.FocusEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.PaintEvent; @@ -91,6 +93,9 @@ public class GtkComponentPeer extends GtkGenericPeer native void gtkWidgetSetCursor (int type); native void gtkWidgetSetBackground (int red, int green, int blue); native void gtkWidgetSetForeground (int red, int green, int blue); + native void gtkWidgetRequestFocus (); + native void gtkWidgetDispatchKeyEvent (int id, long when, int mods, + int keyCode, int keyLocation); native void gtkSetFont (String name, int style, int size); native void gtkWidgetQueueDrawArea(int x, int y, int width, int height); native void addExposeFilter(); @@ -138,10 +143,10 @@ public class GtkComponentPeer extends GtkGenericPeer awtComponent.getX(), awtComponent.getY(), dims[0], dims[1]); - } + } + Rectangle bounds = awtComponent.getBounds (); setBounds (bounds.x, bounds.y, bounds.width, bounds.height); - } catch (RuntimeException ex) { ; } } @@ -222,6 +227,7 @@ public class GtkComponentPeer extends GtkGenericPeer public void handleEvent (AWTEvent event) { int id = event.getID(); + KeyEvent ke = null; switch (id) { @@ -251,6 +257,16 @@ public class GtkComponentPeer extends GtkGenericPeer } } break; + case KeyEvent.KEY_PRESSED: + ke = (KeyEvent) event; + gtkWidgetDispatchKeyEvent (ke.getID (), ke.getWhen (), ke.getModifiers (), + ke.getKeyCode (), ke.getKeyLocation ()); + break; + case KeyEvent.KEY_RELEASED: + ke = (KeyEvent) event; + gtkWidgetDispatchKeyEvent (ke.getID (), ke.getWhen (), ke.getModifiers (), + ke.getKeyCode (), ke.getKeyLocation ()); + break; } } @@ -335,7 +351,11 @@ public class GtkComponentPeer extends GtkGenericPeer new Rectangle (x, y, width, height))); } - native public void requestFocus (); + public void requestFocus () + { + gtkWidgetRequestFocus (); + postFocusEvent (FocusEvent.FOCUS_GAINED, false); + } public void reshape (int x, int y, int width, int height) { @@ -453,10 +473,28 @@ public class GtkComponentPeer extends GtkGenericPeer } protected void postKeyEvent (int id, long when, int mods, - int keyCode, char keyChar, int keyLocation) - { - q.postEvent (new KeyEvent (awtComponent, id, when, mods, - keyCode, keyChar, keyLocation)); + int keyCode, char keyChar, int keyLocation) + { + KeyEvent keyEvent = new KeyEvent (awtComponent, id, when, mods, + keyCode, keyChar, keyLocation); + + // Also post a KEY_TYPED event if keyEvent is a key press that + // doesn't represent an action or modifier key. + if (keyEvent.getID () == KeyEvent.KEY_PRESSED + && (!keyEvent.isActionKey () + && keyCode != KeyEvent.VK_SHIFT + && keyCode != KeyEvent.VK_CONTROL + && keyCode != KeyEvent.VK_ALT)) + { + synchronized (q) + { + q.postEvent (keyEvent); + q.postEvent (new KeyEvent (awtComponent, KeyEvent.KEY_TYPED, when, mods, + KeyEvent.VK_UNDEFINED, keyChar, keyLocation)); + } + } + else + q.postEvent (keyEvent); } protected void postFocusEvent (int id, boolean temporary) diff --git a/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java index 6aefba6..4febbef 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java @@ -41,7 +41,10 @@ package gnu.java.awt.peer.gtk; import java.awt.AWTEvent; import java.awt.Component; import java.awt.Dialog; +import java.awt.Graphics; import java.awt.peer.DialogPeer; +import java.awt.Rectangle; +import java.awt.event.PaintEvent; public class GtkDialogPeer extends GtkWindowPeer implements DialogPeer @@ -50,6 +53,33 @@ public class GtkDialogPeer extends GtkWindowPeer { super (dialog); } + + public Graphics getGraphics () + { + Graphics g; + if (GtkToolkit.useGraphics2D ()) + g = new GdkGraphics2D (this); + else + g = new GdkGraphics (this); + g.translate (-insets.left, -insets.top); + return g; + } + + protected void postMouseEvent(int id, long when, int mods, int x, int y, + int clickCount, boolean popupTrigger) + { + super.postMouseEvent (id, when, mods, + x + insets.left, y + insets.top, + clickCount, popupTrigger); + } + + protected void postExposeEvent (int x, int y, int width, int height) + { + q.postEvent (new PaintEvent (awtComponent, PaintEvent.PAINT, + new Rectangle (x + insets.left, + y + insets.top, + width, height))); + } void create () { diff --git a/libjava/gnu/java/awt/peer/gtk/GtkImage.java b/libjava/gnu/java/awt/peer/gtk/GtkImage.java index fa81b91..57c3d45 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkImage.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkImage.java @@ -241,7 +241,7 @@ public class GtkImage extends Image implements ImageConsumer return; } - if (scansize == width) + if (scansize == width && height == 1) { System.arraycopy (pixels, offset, pixelCache, y * this.width + x, diff --git a/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java b/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java index a5a8d09..0476c8c 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java @@ -119,6 +119,11 @@ public class GtkImagePainter implements Runnable, ImageConsumer static int[] convertPixels (int[] pixels, ColorModel model) { + if (pixels == null || model == null) + { + return null; + } + if (model.equals (ColorModel.getRGBdefault ())) return pixels; @@ -133,6 +138,11 @@ public class GtkImagePainter implements Runnable, ImageConsumer static int[] convertPixels (byte[] pixels, ColorModel model) { + if (pixels == null || model == null) + { + return null; + } + int ret[] = new int[pixels.length]; for (int i = 0; i < pixels.length; i++) @@ -178,8 +188,8 @@ public class GtkImagePainter implements Runnable, ImageConsumer setPixels (int x, int y, int width, int height, ColorModel model, byte[] pixels, int offset, int scansize) { - setPixels (x, y, width, height, model, convertPixels (pixels, model), - offset, scansize); + setPixels (x, y, width, height, ColorModel.getRGBdefault(), + convertPixels (pixels, model), offset, scansize); } public void diff --git a/libjava/gnu/java/awt/peer/gtk/GtkLabelPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkLabelPeer.java index cf39372..c28b7f5 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkLabelPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkLabelPeer.java @@ -47,7 +47,7 @@ public class GtkLabelPeer extends GtkComponentPeer implements LabelPeer { native void create (String text, float alignment); - native void gtkSetFont(String name, int style, int size); + native void gtkSetFont (String name, int style, int size); native void nativeSetAlignment (float alignment); native public void setText (String text); @@ -63,11 +63,6 @@ public class GtkLabelPeer extends GtkComponentPeer super (l); } - public void setFont (Font f) - { - gtkSetFont(f.getName(), f.getStyle(), f.getSize()); - } - public void setAlignment (int alignment) { nativeSetAlignment (getGtkAlignment (alignment)); diff --git a/libjava/gnu/java/awt/peer/gtk/GtkListPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkListPeer.java index 7517c64..9ca30c9 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkListPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkListPeer.java @@ -48,13 +48,22 @@ import java.awt.peer.ListPeer; public class GtkListPeer extends GtkComponentPeer implements ListPeer { -// native void create (ComponentPeer parent, String [] items, boolean mode); + void create () + { + List list = (List) awtComponent; + + create (list.getRows ()); + + setMultipleMode (list.isMultipleMode ()); + } - native void create (); + native void create (int rows); native void connectJObject (); native void connectSignals (); + native void gtkSetFont (String name, int style, int size); + native void gtkWidgetRequestFocus (); - native void getSize (int rows, int dims[]); + native void getSize (int rows, int visibleRows, int dims[]); public GtkListPeer (List list) { @@ -100,7 +109,8 @@ public class GtkListPeer extends GtkComponentPeer { int dims[] = new int[2]; - getSize (rows, dims); + int visibleRows = ((List) awtComponent).getRows(); + getSize (rows, visibleRows, dims); return new Dimension (dims[0], dims[1]); } @@ -108,7 +118,8 @@ public class GtkListPeer extends GtkComponentPeer { int dims[] = new int[2]; - getSize (rows, dims); + int visibleRows = ((List) awtComponent).getRows(); + getSize (rows, visibleRows, dims); return new Dimension (dims[0], dims[1]); } @@ -129,19 +140,19 @@ public class GtkListPeer extends GtkComponentPeer { if (e.getID () == MouseEvent.MOUSE_CLICKED && isEnabled ()) { - /* Only generate the ActionEvent on the second click of - a multiple click */ + // Only generate the ActionEvent on the second click of a + // multiple click. MouseEvent me = (MouseEvent) e; if (!me.isConsumed () && (me.getModifiers () & MouseEvent.BUTTON1_MASK) != 0 && me.getClickCount() == 2) { - String selectedItem = ((List)awtComponent).getSelectedItem (); + String selectedItem = ((List) awtComponent).getSelectedItem (); - /* Double-click only generates an Action event - if something is selected */ + // Double-click only generates an Action event if + // something is selected. if (selectedItem != null) - postActionEvent (((List)awtComponent).getSelectedItem (), + postActionEvent (((List) awtComponent).getSelectedItem (), me.getModifiers ()); } } @@ -151,9 +162,10 @@ public class GtkListPeer extends GtkComponentPeer KeyEvent ke = (KeyEvent) e; if (!ke.isConsumed () && ke.getKeyCode () == KeyEvent.VK_ENTER) { - String selectedItem = ((List)awtComponent).getSelectedItem (); + String selectedItem = ((List) awtComponent).getSelectedItem (); - /* Enter only generates an Action event if something is selected */ + // Enter only generates an Action event if something is + // selected. if (selectedItem != null) postActionEvent (selectedItem, ke.getModifiers ()); } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java index 63d6fa86..18e4d20 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java @@ -50,6 +50,7 @@ public class GtkTextAreaPeer extends GtkTextComponentPeer native void create (int width, int height, int scrollbarVisibility); native void gtkSetFont (String name, int style, int size); + native void gtkWidgetRequestFocus (); void create () { @@ -171,9 +172,4 @@ public class GtkTextAreaPeer extends GtkTextComponentPeer { insert (str, pos); } - - public void setFont (Font f) - { - gtkSetFont (f.getName (), f.getStyle (), f.getSize ()); - } } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java index 8ee06d6..5662336 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java @@ -154,11 +154,6 @@ public class GtkTextFieldPeer extends GtkTextComponentPeer setEchoChar (c); } - public void setFont (Font f) - { - gtkSetFont (f.getName (), f.getStyle (), f.getSize ()); - } - public void handleEvent (AWTEvent e) { if (e.getID () == KeyEvent.KEY_PRESSED) diff --git a/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java b/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java index ed1c567..c9739c3 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java @@ -428,9 +428,7 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit return q; } - protected void loadSystemColors (int[] systemColors) - { - } + protected native void loadSystemColors (int[] systemColors); public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent e) { |