diff options
-rw-r--r-- | vncviewer/Viewport.cxx | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx index d643fa37..9c6dd202 100644 --- a/vncviewer/Viewport.cxx +++ b/vncviewer/Viewport.cxx @@ -107,6 +107,12 @@ Viewport::Viewport(int w, int h, const rfb::PixelFormat& /*serverPF*/, CConn* cc // We need to intercept keyboard events early Fl::add_system_handler(handleSystemEvent, this); + // FIXME: We should only disable this whilst we have keyboard focus, + // but we also need to keep it disabled when we lose focus to + // any layout selector so it can properly filter out the + // layouts we don't support + Fl::disable_im(); + frameBuffer = new PlatformPixelBuffer(w, h); assert(frameBuffer); cc->setFramebuffer(frameBuffer); @@ -150,6 +156,7 @@ Viewport::~Viewport() } delete keyboard; + Fl::enable_im(); // FLTK automatically deletes all child widgets, so we shouldn't touch // them ourselves here @@ -479,8 +486,6 @@ int Viewport::handle(int event) return 1; case FL_FOCUS: - Fl::disable_im(); - flushPendingClipboard(); // We may have gotten our lock keys out of sync with the server @@ -499,8 +504,6 @@ int Viewport::handle(int event) case FL_UNFOCUS: // We won't get more key events, so reset our knowledge about keys resetKeyboard(); - - Fl::enable_im(); return 1; case FL_KEYDOWN: |