diff options
author | Steve Northover <steve> | 2001-11-16 17:23:47 +0000 |
---|---|---|
committer | Steve Northover <steve> | 2001-11-16 17:23:47 +0000 |
commit | 5176ef41985fc0cc04b5e1b9077fd362fa9e8c95 (patch) | |
tree | e60817b184f231c0e68b040a174456afee325247 | |
parent | 99986992f311c25afe920f363c48df3e1293d461 (diff) | |
download | eclipse.platform.swt-5176ef41985fc0cc04b5e1b9077fd362fa9e8c95.tar.gz eclipse.platform.swt-5176ef41985fc0cc04b5e1b9077fd362fa9e8c95.tar.xz eclipse.platform.swt-5176ef41985fc0cc04b5e1b9077fd362fa9e8c95.zip |
*** empty log message ***
3 files changed, 20 insertions, 14 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Composite.java b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Composite.java index 52d242072e..e0880f8a49 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Composite.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Composite.java @@ -420,15 +420,17 @@ int processPaint (int callData) { XExposeEvent xEvent = new XExposeEvent ();
OS.memmove (xEvent, callData, XExposeEvent.sizeof);
int exposeCount = xEvent.count;
- if (damagedRegion == 0 && exposeCount == 0) {
+ if (exposeCount == 0) {
XAnyEvent event = new XAnyEvent ();
Display display = getDisplay ();
display.exposeCount = 0;
int checkExposeProc = display.checkExposeProc;
OS.XCheckIfEvent (xEvent.display, event, checkExposeProc, xEvent.window);
- if (display.exposeCount == 0) return super.processPaint (callData);
exposeCount = display.exposeCount;
}
+ if (exposeCount == 0 && damagedRegion == 0) {
+ return super.processPaint (callData);
+ }
if (damagedRegion == 0) damagedRegion = OS.XCreateRegion ();
OS.XtAddExposureToRegion (callData, damagedRegion);
if (exposeCount != 0) return 0;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Display.java index fad12ae3bc..4480986b3d 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Display.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Display.java @@ -91,6 +91,7 @@ public class Display extends Device { static String APP_NAME = "SWT";
byte [] displayName, appName, appClass;
Event [] eventQueue;
+ XKeyEvent keyEvent = new XKeyEvent ();
/* Default Fonts, Colors, Insets, Widths and Heights. */
int defaultFont, defaultFontList;
@@ -240,8 +241,6 @@ public class Display extends Device { String [] keys;
Object [] values;
- static final byte[] _MOTIF_DEFAULT_LOCALE = Converter.wcsToMbcs(null, "_MOTIF_DEFAULT_LOCALE");
-
/*
* TEMPORARY CODE. Install the runnable that
* gets the current display. This code will
@@ -349,10 +348,12 @@ int caretProc (int clientData, int id) { }
int checkExposeProc (int display, int event, int window) {
OS.memmove (xExposeEvent, event, XExposeEvent.sizeof);
- if (xExposeEvent.window == window) {
- if (xEvent.type == OS.Expose || xEvent.type == OS.GraphicsExpose) {
+ if (xExposeEvent.window != window) return 0;
+ switch (xExposeEvent.type) {
+ case OS.Expose:
+ case OS.GraphicsExpose:
exposeCount++;
- }
+ break;
}
return 0;
}
@@ -470,10 +471,9 @@ boolean filterEvent (XAnyEvent event) { /* Check the event and find the widget */
if (event.type != OS.KeyPress) return false;
if (!OS.IsLinux && OS.XFilterEvent(event, OS.None)) return true;
- XKeyEvent keyEvent = new XKeyEvent ();
/* Move the any event into the key event */
- OS.memmove (keyEvent, event, XAnyEvent.sizeof);
+ OS.memmove (keyEvent, event, XKeyEvent.sizeof);
if (keyEvent.keycode == 0) return false;
int xWindow = keyEvent.window;
if (xWindow == 0) return false;
@@ -483,8 +483,6 @@ boolean filterEvent (XAnyEvent event) { if (handle == 0) return false;
Widget widget = WidgetTable.get (handle);
if (widget == null) return false;
- if (!(widget instanceof Control)) return false;
- Control control = (Control) widget;
/* Get the unaffected character and keysym */
int oldState = keyEvent.state;
@@ -500,7 +498,7 @@ boolean filterEvent (XAnyEvent event) { /* Check for a mnemonic key */
if (key != 0) {
- if (control.translateMnemonic (key, keyEvent)) return true;
+ if (widget.translateMnemonic (key, keyEvent)) return true;
}
/* Check for a traversal key */
@@ -516,7 +514,7 @@ boolean filterEvent (XAnyEvent event) { case OS.XK_Right:
case OS.XK_Page_Up:
case OS.XK_Page_Down:
- if (control.translateTraversal (keysym, keyEvent)) return true;
+ if (widget.translateTraversal (keysym, keyEvent)) return true;
}
/* Answer false because the event was not processed */
@@ -1760,7 +1758,7 @@ int textWidth (String string, int fontList) { if (string.length () == 0) return 0;
String codePage = Converter.getCodePage (xDisplay, fontList);
byte [] textBuffer = Converter.wcsToMbcs (codePage, string, true);
- int xmString = OS.XmStringGenerate (textBuffer, null, OS.XmCHARSET_TEXT, _MOTIF_DEFAULT_LOCALE);
+ int xmString = OS.XmStringGenerate (textBuffer, null, OS.XmCHARSET_TEXT, null);
int width = OS.XmStringWidth (fontList, xmString);
OS.XmStringFree (xmString);
return width;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Widget.java index 22c063e000..1e5c0bfebc 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Widget.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Widget.java @@ -876,6 +876,12 @@ public String toString () { int topHandle () {
return handle;
}
+boolean translateMnemonic (int key, XKeyEvent xEvent) {
+ return false;
+}
+boolean translateTraversal (int key, XKeyEvent xEvent) {
+ return false;
+}
char wcsToMbcs (char ch) {
return wcsToMbcs (ch, null);
}
|