openbsd-ports/x11/windowmaker/patches/patch-src_actions_c
dcoppa 8e4836198e Fix the "periodic focus bug" described at:
c91bb1ba13

From upstream git via Bryan Linton (bl AT shoshoni DOT info)
2012-03-17 17:32:28 +00:00

39 lines
1.2 KiB
Plaintext

$OpenBSD: patch-src_actions_c,v 1.3 2012/03/17 17:32:28 dcoppa Exp $
This is a backport from WindowMaker cvs which fixes the
"periodic focus bug" described at:
http://repo.or.cz/w/wmaker-crm.git/commitdiff/c91bb1ba1360006c568db37438779e525868cf17
--- src/actions.c.orig Fri Mar 16 17:10:27 2012
+++ src/actions.c Fri Mar 16 17:11:57 2012
@@ -78,6 +78,15 @@ static struct {
#define SHADE_STEPS shadePars[(int)wPreferences.shade_speed].steps
#define SHADE_DELAY shadePars[(int)wPreferences.shade_speed].delay
+static int
+compareTimes(Time t1, Time t2)
+{
+ Time diff;
+ if (t1 == t2)
+ return 0;
+ diff = t1 - t2;
+ return (diff < 60000) ? 1 : -1;
+}
/*
*----------------------------------------------------------------------
@@ -99,11 +108,11 @@ wSetFocusTo(WScreen *scr, WWindow *wwin)
WWindow *old_focused;
WWindow *focused=scr->focused_window;
- int timestamp=LastTimestamp;
+ Time timestamp=LastTimestamp;
WApplication *oapp=NULL, *napp=NULL;
int wasfocused;
- if (scr->flags.ignore_focus_events || LastFocusChange > timestamp)
+ if (scr->flags.ignore_focus_events || compareTimes(LastFocusChange, timestamp) > 0)
return;
if (!old_scr)