]> Pileus Git - wmpus/commitdiff
Try to improve focus speed
authorAndy Spencer <andy753421@gmail.com>
Thu, 13 Oct 2011 08:14:23 +0000 (08:14 +0000)
committerAndy Spencer <andy753421@gmail.com>
Wed, 26 Oct 2011 05:20:55 +0000 (05:20 +0000)
(this probably doesn't do anything)

sys-win32.c

index 8513bca081f71a38af95174aeb136b1bce3ac294..5d0550ab9cdafa398e1a739b86353dacb1808dbd 100644 (file)
@@ -342,16 +342,21 @@ void sys_focus(win_t *win)
        /* Windows prevents a thread from using SetForegroundInput under
         * certain circumstances and instead flashes the windows toolbar icon.
         * Attaching the thread input queues avoids this behavior */
-       DWORD oldId = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
+       HWND  fgWin = GetForegroundWindow();
+       if (fgWin == win->sys->hwnd)
+               return; // already focused
+       DWORD oldId = GetWindowThreadProcessId(fgWin, NULL);
        DWORD newId = GetCurrentThreadId();
-       AttachThreadInput(oldId, newId, TRUE);
+       if (oldId != newId)
+               AttachThreadInput(oldId, newId, TRUE);
 
        HWND next = GetWindow(win->sys->hwnd, GW_HWNDNEXT);
        SetWindowPos(win->sys->hwnd, NULL, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
        if (next)
                SetWindowPos(win->sys->hwnd, next, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
 
-       AttachThreadInput(oldId, newId, FALSE);
+       if (oldId != newId)
+               AttachThreadInput(oldId, newId, FALSE);
 }
 
 void sys_show(win_t *win, state_t state)