mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-31 00:05:03 +08:00
bda1450543
* java/awt/peer/ButtonPeer.java: Replace with Classpath version. * java/awt/peer/CanvasPeer.java: Replace with Classpath version. * java/awt/peer/CheckboxMenuItemPeer.java: Replace with Classpath version. * java/awt/peer/CheckboxPeer.java: Replace with Classpath version. * java/awt/peer/ChoicePeer.java: Replace with Classpath version. * java/awt/peer/ComponentPeer.java: Replace with Classpath version. * java/awt/peer/ContainerPeer.java: Replace with Classpath version. * java/awt/peer/DialogPeer.java: Replace with Classpath version. * java/awt/peer/FileDialogPeer.java: Replace with Classpath version. * java/awt/peer/FontPeer.java: Replace with Classpath version. * java/awt/peer/FramePeer.java: Replace with Classpath version. * java/awt/peer/LabelPeer.java: Replace with Classpath version. * java/awt/peer/LightweightPeer.java: Replace with Classpath version. * java/awt/peer/ListPeer.java: Replace with Classpath version. * java/awt/peer/MenuBarPeer.java: Replace with Classpath version. * java/awt/peer/MenuComponentPeer.java: Replace with Classpath version. * java/awt/peer/MenuItemPeer.java: Replace with Classpath version. * java/awt/peer/MenuPeer.java: Replace with Classpath version. * java/awt/peer/PanelPeer.java: Replace with Classpath version. * java/awt/peer/PopupMenuPeer.java: Replace with Classpath version. * java/awt/peer/ScrollPanePeer.java: Replace with Classpath version. * java/awt/peer/ScrollbarPeer.java: Replace with Classpath version. * java/awt/peer/TextAreaPeer.java: Replace with Classpath version. * java/awt/peer/TextComponentPeer.java: Replace with Classpath version. * java/awt/peer/TextFieldPeer.java: Replace with Classpath version. * java/awt/peer/WindowPeer.java: Replace with Classpath version. * gnu/awt/xlib/XPanelPeer.java (insets): New method. * gnu/awt/xlib/XCanvasPeer.java (show, hide): New methods. (minimumSize, preferredSize, reshape): Likewise. * gnu/awt/xlib/XFramePeer.java (insets, enable, disable, getColorModel): New methods. * java/awt/PopupMenu.java: Merged with Classpath. * java/awt/MenuBar.java: Merged with Classpath. * java/awt/SystemColor.java: Replace with Classpath version. * java/awt/Panel.java: Merged with Classpath. * java/awt/PaintContext.java: Updated copyright. * java/awt/MenuShortcut.java: Merged with Classpath. * java/awt/MenuContainer.java: Merged with Classpath. * java/awt/Menu.java: Merged with Classpath. * java/awt/MediaEntry.java: New file from Classpath. * java/awt/MediaTracker.java: New file from Classpath. * java/awt/List.java: Merged with Classpath version. * java/awt/Insets.java: Merged with Classpath version. * java/awt/ImageMediaEntry.java: New file from Classpath. * java/awt/Image.java: Replaced with Classpath version. * java/awt/FontMetrics.java: Merged with Classpath version. * java/awt/Cursor.java (getDefaultCursor): Use DEFAULT_CURSOR constant. * java/awt/Font.java: Merged with Classpath version. * java/awt/Dialog.java: Merged with Classpath version. * java/awt/Color.java: Merged with Classpath version. * java/awt/Choice.java: Merged with Classpath version. * java/awt/CheckboxMenuItem.java: Merged with Classpath version. * java/awt/Adjustable.java: Replace with Classpath version. * java/awt/MenuItem.java (paramString): Don't include class name or brackets. Call superclass paramString. * java/awt/MenuComponent.java (toString): Call paramString. (paramString): Compute string; don't call toString. * java/awt/Label.java (paramString): Don't include class name or brackets. Call superclass paramString. * java/awt/Checkbox.java (paramString): Don't include class name or brackets. Call superclass paramString. * java/awt/Button.java (paramString): Don't include class name or brackets. Call superclass paramString. * java/awt/MenuComponent.java (getTreeLock): Now protected. From-SVN: r49099
180 lines
4.4 KiB
Java
180 lines
4.4 KiB
Java
/* Copyright (C) 2000, 2002 Free Software Foundation
|
|
|
|
This file is part of libgcj.
|
|
|
|
This software is copyrighted work licensed under the terms of the
|
|
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
|
|
details. */
|
|
|
|
package gnu.awt.xlib;
|
|
|
|
import java.awt.*;
|
|
import java.awt.peer.*;
|
|
import java.awt.image.*;
|
|
import gnu.gcj.xlib.WMSizeHints;
|
|
import gnu.gcj.xlib.WindowAttributes;
|
|
import gnu.gcj.xlib.Display;
|
|
import gnu.gcj.xlib.Visual;
|
|
import gnu.gcj.xlib.Screen;
|
|
import gnu.gcj.xlib.XConfigureEvent;
|
|
|
|
/** FIXME: a lot of the code here should be moved down to XWindowPeer. */
|
|
|
|
public class XFramePeer extends XCanvasPeer implements FramePeer
|
|
{
|
|
|
|
public XFramePeer(Frame frame)
|
|
{
|
|
super(frame);
|
|
|
|
// Set some defaults for a toplevel component:
|
|
if (frame.getFont() == null)
|
|
frame.setFont(new Font("helvetica", Font.PLAIN, 12));
|
|
|
|
if (frame.getBackground() == null)
|
|
frame.setBackground(Color.lightGray);
|
|
|
|
if (frame.getForeground() == null)
|
|
frame.setForeground(Color.black);
|
|
}
|
|
|
|
/** Find parent window for toplevel window, ie. root window of
|
|
selected screen. Bounds are not changed. */
|
|
gnu.gcj.xlib.Window locateParentWindow(Rectangle bounds)
|
|
{
|
|
Screen screen = config.getVisual().getScreen();
|
|
return screen.getRootWindow();
|
|
}
|
|
|
|
void initWindowProperties()
|
|
{
|
|
Frame frame = (Frame) component;
|
|
setResizable(frame.isResizable());
|
|
String title = frame.getTitle();
|
|
if (!title.equals("")) setTitle(title);
|
|
}
|
|
|
|
long getBasicEventMask()
|
|
{
|
|
return super.getBasicEventMask() |
|
|
WindowAttributes.MASK_STRUCTURE_NOTIFY;
|
|
}
|
|
|
|
void configureNotify(XConfigureEvent configEvent)
|
|
{
|
|
component.setBounds(configEvent.getBounds());
|
|
|
|
/* FIXME: Validation should probably not be done here. The best
|
|
strategy is probably to validate on the AWT thread in response
|
|
to an ComponentEvent. This will make it possible to coalesce
|
|
resize validations. */
|
|
component.validate();
|
|
}
|
|
|
|
/* Overridden to ignore request to set bounds if the request occurs
|
|
on the X event loop thread. It is assumed that all requests that
|
|
occur on the X event loop thread are results of XConfigureNotify
|
|
events, in which case the X window already has the desired
|
|
bounds. */
|
|
public void setBounds(int x, int y, int width, int height)
|
|
{
|
|
if (Thread.currentThread() == getXToolkit().eventLoop.eventLoopThread)
|
|
return;
|
|
|
|
super.setBounds(x, y, width, height);
|
|
}
|
|
|
|
// Implementing ContainerPeer:
|
|
|
|
static final Insets INSETS_0_PROTOTYPE = new Insets(0, 0, 0, 0);
|
|
|
|
public Insets getInsets()
|
|
{
|
|
return (Insets) INSETS_0_PROTOTYPE.clone();
|
|
}
|
|
|
|
public Insets insets ()
|
|
{
|
|
return getInsets ();
|
|
}
|
|
|
|
public void beginValidate()
|
|
{
|
|
}
|
|
|
|
public void endValidate()
|
|
{
|
|
// reassert sizing hints
|
|
Frame frame = (Frame) component;
|
|
setResizable(frame.isResizable());
|
|
}
|
|
|
|
|
|
// Implementing WindowPeer:
|
|
|
|
public void toBack()
|
|
{
|
|
throw new UnsupportedOperationException("not implemented yet");
|
|
}
|
|
|
|
public void toFront()
|
|
{
|
|
throw new UnsupportedOperationException("not implemented yet");
|
|
}
|
|
|
|
|
|
// Implementing FramePeer:
|
|
|
|
public void setIconImage(Image image)
|
|
{
|
|
throw new UnsupportedOperationException("not implemented yet");
|
|
}
|
|
|
|
public void setMenuBar(MenuBar mb)
|
|
{
|
|
throw new UnsupportedOperationException("not implemented yet");
|
|
}
|
|
|
|
|
|
public void setTitle(String title)
|
|
{
|
|
synchronized (window.getDisplay())
|
|
{
|
|
// Oh, what a nice implementation :-)
|
|
window.setProperty("WM_NAME", "STRING", title);
|
|
|
|
ensureFlush();
|
|
}
|
|
}
|
|
|
|
public void setResizable(boolean resizable)
|
|
{
|
|
Frame frame = (Frame) component;
|
|
|
|
WMSizeHints sizeHints = new WMSizeHints();
|
|
if (resizable)
|
|
{
|
|
Dimension minSize = frame.getMinimumSize();
|
|
sizeHints.setMinSize(minSize.width, minSize.height);
|
|
|
|
Dimension maxSize = frame.getMaximumSize();
|
|
|
|
if ((maxSize.width < Short.MAX_VALUE) ||
|
|
(maxSize.height < Short.MAX_VALUE))
|
|
{
|
|
maxSize.width = Math.min(maxSize.width, Short.MAX_VALUE);
|
|
maxSize.height = Math.min(maxSize.height, Short.MAX_VALUE);
|
|
sizeHints.setMaxSize(maxSize.width, maxSize.height);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// lock resizing to current bounds
|
|
Dimension size = frame.getSize();
|
|
sizeHints.setMinSize(size.width, size.height);
|
|
sizeHints.setMaxSize(size.width, size.height);
|
|
}
|
|
sizeHints.applyNormalHints(window);
|
|
}
|
|
}
|