summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorpatthoyts <patthoyts@users.sourceforge.net>2008-11-23 21:58:24 (GMT)
committerpatthoyts <patthoyts@users.sourceforge.net>2008-11-23 21:58:24 (GMT)
commit5eff66ecd844065a708ad18238f114174ef9ffe1 (patch)
tree4ca0f6008e131429c87d3d92fa685222f04a00d5 /generic
parent972c1858b2265633c051f38792c0761763f5a870 (diff)
downloadtk-5eff66ecd844065a708ad18238f114174ef9ffe1.zip
tk-5eff66ecd844065a708ad18238f114174ef9ffe1.tar.gz
tk-5eff66ecd844065a708ad18238f114174ef9ffe1.tar.bz2
[Bug 1389270] event generate silently ignored focus events. These can now be generated.
Diffstat (limited to 'generic')
-rw-r--r--generic/tkBind.c6
-rw-r--r--generic/tkFocus.c14
-rw-r--r--generic/tkGrab.c8
-rw-r--r--generic/tkInt.h10
4 files changed, 21 insertions, 17 deletions
diff --git a/generic/tkBind.c b/generic/tkBind.c
index 42186c0..ed2a6ae 100644
--- a/generic/tkBind.c
+++ b/generic/tkBind.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkBind.c,v 1.48 2008/11/08 19:04:05 dkf Exp $
+ * RCS: @(#) $Id: tkBind.c,v 1.49 2008/11/23 21:58:24 patthoyts Exp $
*/
#include "tkInt.h"
@@ -3388,6 +3388,10 @@ HandleEventGenerate(
event.xkey.y_root = -1;
}
+ if (event.xany.type == FocusIn || event.xany.type == FocusOut) {
+ event.xany.send_event = GENERATED_FOCUS_EVENT_MAGIC;
+ }
+
/*
* Process the remaining arguments to fill in additional fields of the
* event.
diff --git a/generic/tkFocus.c b/generic/tkFocus.c
index bce8191..cbe8cda 100644
--- a/generic/tkFocus.c
+++ b/generic/tkFocus.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkFocus.c,v 1.19 2008/11/08 18:44:39 dkf Exp $
+ * RCS: @(#) $Id: tkFocus.c,v 1.20 2008/11/23 21:58:24 patthoyts Exp $
*/
#include "tkInt.h"
@@ -70,14 +70,6 @@ typedef struct TkDisplayFocusInfo {
} DisplayFocusInfo;
/*
- * The following magic value is stored in the "send_event" field of FocusIn
- * and FocusOut events that are generated in this file. This allows us to
- * separate "real" events coming from the server from those that we generated.
- */
-
-#define GENERATED_EVENT_MAGIC ((Bool) 0x547321ac)
-
-/*
* Debugging support...
*/
@@ -290,7 +282,7 @@ TkFocusFilterEvent(
* pass the event through to Tk bindings.
*/
- if (eventPtr->xfocus.send_event == GENERATED_EVENT_MAGIC) {
+ if (eventPtr->xfocus.send_event == GENERATED_FOCUS_EVENT_MAGIC) {
eventPtr->xfocus.send_event = 0;
return 1;
}
@@ -908,7 +900,7 @@ GenerateFocusEvents(
}
event.xfocus.serial = LastKnownRequestProcessed(winPtr->display);
- event.xfocus.send_event = GENERATED_EVENT_MAGIC;
+ event.xfocus.send_event = GENERATED_FOCUS_EVENT_MAGIC;
event.xfocus.display = winPtr->display;
event.xfocus.mode = NotifyNormal;
TkInOutEvents(&event, sourcePtr, destPtr, FocusOut, FocusIn,
diff --git a/generic/tkGrab.c b/generic/tkGrab.c
index d07c197..8bf0e89 100644
--- a/generic/tkGrab.c
+++ b/generic/tkGrab.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkGrab.c,v 1.16 2008/10/17 23:18:37 nijtmans Exp $
+ * RCS: @(#) $Id: tkGrab.c,v 1.17 2008/11/23 21:58:24 patthoyts Exp $
*/
#include "tkInt.h"
@@ -132,7 +132,7 @@ typedef struct NewGrabWinEvent {
* we generated.
*/
-#define GENERATED_EVENT_MAGIC ((Bool) 0x147321ac)
+#define GENERATED_GRAB_EVENT_MAGIC ((Bool) 0x147321ac)
/*
* Mask that selects any of the state bits corresponding to buttons, plus
@@ -722,7 +722,7 @@ TkPointerEvent(
* serverWinPtr.
*/
- if (eventPtr->xcrossing.send_event != GENERATED_EVENT_MAGIC) {
+ if (eventPtr->xcrossing.send_event != GENERATED_GRAB_EVENT_MAGIC) {
if ((eventPtr->type == LeaveNotify) &&
(winPtr->flags & TK_TOP_HIERARCHY)) {
dispPtr->serverWinPtr = NULL;
@@ -1151,7 +1151,7 @@ MovePointer2(
}
event.xcrossing.serial = LastKnownRequestProcessed(winPtr->display);
- event.xcrossing.send_event = GENERATED_EVENT_MAGIC;
+ event.xcrossing.send_event = GENERATED_GRAB_EVENT_MAGIC;
event.xcrossing.display = winPtr->display;
event.xcrossing.root = RootWindow(winPtr->display, winPtr->screenNum);
event.xcrossing.time = TkCurrentTime(winPtr->dispPtr);
diff --git a/generic/tkInt.h b/generic/tkInt.h
index 3a1094f..2b4705c 100644
--- a/generic/tkInt.h
+++ b/generic/tkInt.h
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: $Id: tkInt.h,v 1.94 2008/11/22 22:28:52 das Exp $
+ * RCS: $Id: tkInt.h,v 1.95 2008/11/23 21:58:24 patthoyts Exp $
*/
#ifndef _TKINT
@@ -970,6 +970,14 @@ MODULE_SCOPE Tcl_HashTable tkPredefBitmapTable;
#endif
/*
+ * The following magic value is stored in the "send_event" field of FocusIn
+ * and FocusOut events. This allows us to separate "real" events coming from
+ * the server from those that we generated.
+ */
+
+#define GENERATED_FOCUS_EVENT_MAGIC ((Bool) 0x547321ac)
+
+/*
* Exported internals.
*/