Release all pressed keys when we lose focus. This is how we've always done it
and it has been the most sane approach.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4369 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx
index 4c1775f..189b521 100644
--- a/vncviewer/DesktopWindow.cxx
+++ b/vncviewer/DesktopWindow.cxx
@@ -185,6 +185,7 @@
int DesktopWindow::handle(int event)
{
int buttonMask, wheelMask;
+ DownMap::const_iterator iter;
switch (event) {
case FL_PUSH:
@@ -219,6 +220,14 @@
// Yes, we would like some focus please!
return 1;
+ case FL_UNFOCUS:
+ // Release all keys that were pressed as that generally makes most
+ // sense (e.g. Alt+Tab where we only see the Alt press)
+ for (iter = downKeySym.begin();iter != downKeySym.end();++iter)
+ cc->writer()->keyEvent(iter->second, false);
+ downKeySym.clear();
+ return 1;
+
case FL_KEYDOWN:
handleKeyEvent(Fl::event_key(), Fl::event_compose_symbol(), true);
return 1;