diff --git a/Nasal/canvas/gui.nas b/Nasal/canvas/gui.nas
index e86bcca2d..a01af5e76 100644
--- a/Nasal/canvas/gui.nas
+++ b/Nasal/canvas/gui.nas
@@ -195,6 +195,7 @@ var Window = {
 #    me.onFocusIn();
     me._onStateChange();
     gui.focused_window = me;
+    setInputFocus(me);
     return me;
   },
   #
@@ -207,6 +208,7 @@ var Window = {
 #    me.onFocusOut();
     me._onStateChange();
     gui.focused_window = nil;
+    setInputFocus(nil);
     return me;
   },
   setPosition: func
@@ -475,6 +477,12 @@ var Window = {
   }
 };
 
+# Clear focus on click outside any window
+getDesktop().addEventListener("mousedown", func {
+  if( gui.focused_window != nil )
+    gui.focused_window.clearFocus();
+});
+
 # Provide old 'Dialog' for backwards compatiblity (should be removed for 3.0)
 var Dialog = {
   new: func(size, type = nil, id = nil)