summaryrefslogtreecommitdiff
path: root/gnu/java/awt/peer/gtk/GtkPanelPeer.java
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/java/awt/peer/gtk/GtkPanelPeer.java')
-rw-r--r--gnu/java/awt/peer/gtk/GtkPanelPeer.java33
1 files changed, 29 insertions, 4 deletions
diff --git a/gnu/java/awt/peer/gtk/GtkPanelPeer.java b/gnu/java/awt/peer/gtk/GtkPanelPeer.java
index fb5addeb4..88bb71569 100644
--- a/gnu/java/awt/peer/gtk/GtkPanelPeer.java
+++ b/gnu/java/awt/peer/gtk/GtkPanelPeer.java
@@ -39,8 +39,11 @@ exception statement from your version. */
package gnu.java.awt.peer.gtk;
import java.awt.AWTEvent;
+import java.awt.Graphics;
import java.awt.Panel;
+import java.awt.event.ComponentEvent;
import java.awt.event.MouseEvent;
+import java.awt.event.PaintEvent;
import java.awt.peer.PanelPeer;
public class GtkPanelPeer extends GtkContainerPeer
@@ -53,17 +56,39 @@ public class GtkPanelPeer extends GtkContainerPeer
super (p);
}
- public void handleEvent (AWTEvent event)
+ public void handleEvent(AWTEvent event)
{
int id = event.getID();
-
switch (id)
{
case MouseEvent.MOUSE_PRESSED:
- awtComponent.requestFocusInWindow ();
+ awtComponent.requestFocusInWindow();
break;
+ case PaintEvent.UPDATE:
+ case PaintEvent.PAINT:
+ {
+ try
+ {
+ Graphics g = getGraphics();
+ if (! awtComponent.isShowing() || awtComponent.getWidth() < 1
+ || awtComponent.getHeight() < 1 || g == null)
+ return;
+
+ g.setClip(((PaintEvent) event).getUpdateRect());
+
+ // Do not want to clear anything before painting.);
+ awtComponent.paint(g);
+
+ g.dispose();
+ return;
+ }
+ catch (InternalError e)
+ {
+ System.err.println(e);
+ }
+ }
}
- super.handleEvent (event);
+ super.handleEvent(event);
}
native void connectSignals ();