1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-20 12:58:08 +01:00

fixed the 'focus flicker' problem, seen with GTK2 applications

This commit is contained in:
dan
2003-08-03 00:00:11 +00:00
parent 44f636e91e
commit 7efcf57c18
3 changed files with 15 additions and 4 deletions

View File

@@ -110,6 +110,7 @@ Changes since version 0.80.2:
(Marcelo E. Magallon <marcelo.magallon@bigfoot.com>) (Marcelo E. Magallon <marcelo.magallon@bigfoot.com>)
- Do not use the disabled clip color for the clip's workspace navigation arrows - Do not use the disabled clip color for the clip's workspace navigation arrows
when the clip is collapsed (it made them look like disabled) when the clip is collapsed (it made them look like disabled)
- Fixed the 'focus flicker' problem, seen with GTK2 applications.
Changes since version 0.80.1: Changes since version 0.80.1:

View File

@@ -144,15 +144,22 @@ wSetFocusTo(WScreen *scr, WWindow *wwin)
old_scr=scr; old_scr=scr;
old_focused=old_scr->focused_window; old_focused=old_scr->focused_window;
/*
* Safeguard: make sure the timestamp is monotonically increasing
* (very unlikely that this will ever be used, still a safeguard)
*/
if (timestamp <= LastFocusChange)
timestamp = LastFocusChange + 1;
LastFocusChange = timestamp; LastFocusChange = timestamp;
/* /*
* This is a hack, because XSetInputFocus() should have a proper * This is a hack, because XSetInputFocus() should have a proper
* timestamp instead of CurrentTime but it seems that some times * timestamp instead of CurrentTime but it seems that some times
* clients will not receive focus properly that way. * clients will not receive focus properly that way.
if (ignoreTimestamp)
*/ */
timestamp = CurrentTime; if (ignoreTimestamp)
timestamp = CurrentTime;
if (old_focused) if (old_focused)
oapp = wApplicationOf(old_focused->main_window); oapp = wApplicationOf(old_focused->main_window);

View File

@@ -403,7 +403,10 @@ handleDeadProcess(void *foo)
static void static void
saveTimestamp(XEvent *event) saveTimestamp(XEvent *event)
{ {
LastTimestamp = CurrentTime; /*
* Never save CurrentTime as LastTimestamp because CurrentTime
* it's not a real timestamp (it's the 0L constant)
*/
switch (event->type) { switch (event->type) {
case ButtonRelease: case ButtonRelease:
@@ -433,7 +436,7 @@ saveTimestamp(XEvent *event)
case SelectionNotify: case SelectionNotify:
LastTimestamp = event->xselection.time; LastTimestamp = event->xselection.time;
#ifdef XDND #ifdef XDND
wXDNDProcessSelection(event); wXDNDProcessSelection(event);
#endif #endif
break; break;
} }