gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Possible patches from upstream source


From: Kazunobu Kuriyama
Subject: Re: Possible patches from upstream source
Date: Wed, 02 Jun 2004 12:45:54 +0900
User-agent: Mozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.4) Gecko/20030624 Netscape/7.1

Adam Fedor wrote:

See comments below

On Jun 1, 2004, at 12:14 AM, Alex Perez wrote:


Cheers,
Alex Perez
--- src/actions.c    Mon Aug 11 15:29:31 2003
+++ src/actions.c    Mon Aug 11 15:31:56 2003
@@ -144,6 +144,14 @@
       old_scr=scr;
     old_focused=old_scr->focused_window;

+    /*
+     * Safeguard: make sure the timestamp is monotonically increasing
+     * (very unlikely that this will be needed, still a safeguard)
+     */
+    if (timestamp <= LastFocusChange)
+        timestamp = LastFocusChange + 1;
+
+
     LastFocusChange = timestamp;

 /*
@@ -150,8 +158,8 @@
  * This is a hack, because XSetInputFocus() should have a proper
  * timestamp instead of CurrentTime but it seems that some times
  * clients will not receive focus properly that way.
+ */
     if (ignoreTimestamp)
-*/
       timestamp = CurrentTime;

     if (old_focused)


Seems like these correct aberrant X11 behavior, so they should be fine with GNUstep.

Since the global ignoreTimestamp is almost always set to zero (the
variable is set to non-zero only when processEvents() is called;
however, it immediately revers to zero before the function returns.
Thus, its value is effectively identical to 0), the local variable
timestamp would never be set to CurrentTime if the patch were applied.



--- src/event.c    Mon Aug 11 15:29:31 2003
+++ src/event.c    Mon Aug 11 15:32:06 2003
@@ -402,7 +402,6 @@
 static void
 saveTimestamp(XEvent *event)
 {
-    LastTimestamp = CurrentTime;

     switch (event->type) {
      case ButtonRelease:


Not sure. Seems harmless.

If this were applied, LastTimestamp would not be updated for the
X events that are not specified in the case branches of the SWITCH
statement.



--- src/workspace.c    Mon Aug 11 15:29:33 2003
+++ src/workspace.c    Mon Aug 11 15:33:33 2003
@@ -574,10 +574,12 @@
                               &foo, &foo, &foo, &foo, &mask)) {
         tmp = wWindowFor(win);
         }
-        if (!tmp && wPreferences.focus_mode == WKF_SLOPPY) {
-        wSetFocusTo(scr, foc);
-        } else {
-        wSetFocusTo(scr, tmp);
+        if (!tmp) {
+        if (wPreferences.focus_mode == WKF_SLOPPY) {
+            wSetFocusTo(scr, foc);
+            } else {
+            wSetFocusTo(scr, tmp);
+        }
         }


Definitely wrong!  This potentially sets focus to a NULL window.

Since wSetFocusTo() is implemented in such a way that it can handle
the case where the second argument is NULL, the conclusion doesn't
necessarily hold true.

What the patches are for?  If you don't know it, it would be better
to ignore them.

Regards,
- Kazunobu Kuriyama







reply via email to

[Prev in Thread] Current Thread [Next in Thread]