summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Northover <steve>2001-11-16 17:23:47 +0000
committerSteve Northover <steve>2001-11-16 17:23:47 +0000
commit5176ef41985fc0cc04b5e1b9077fd362fa9e8c95 (patch)
treee60817b184f231c0e68b040a174456afee325247
parent99986992f311c25afe920f363c48df3e1293d461 (diff)
downloadeclipse.platform.swt-5176ef41985fc0cc04b5e1b9077fd362fa9e8c95.tar.gz
eclipse.platform.swt-5176ef41985fc0cc04b5e1b9077fd362fa9e8c95.tar.xz
eclipse.platform.swt-5176ef41985fc0cc04b5e1b9077fd362fa9e8c95.zip
*** empty log message ***
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Composite.java6
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Display.java22
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Widget.java6
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);
}