Add focus test helper for Viewport
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index be38b92..3b56fce 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -309,17 +309,9 @@
void Viewport::setLEDState(unsigned int state)
{
- Fl_Widget *focus;
-
vlog.debug("Got server LED state: 0x%08x", state);
- focus = Fl::grab();
- if (!focus)
- focus = Fl::focus();
- if (!focus)
- return;
-
- if (focus != this)
+ if (!hasFocus())
return;
#if defined(WIN32)
@@ -635,6 +627,17 @@
}
+bool Viewport::hasFocus()
+{
+ Fl_Widget* focus;
+
+ focus = Fl::grab();
+ if (!focus)
+ focus = Fl::focus();
+
+ return focus == this;
+}
+
#if ! (defined(WIN32) || defined(__APPLE__))
unsigned int Viewport::getModifierMask(unsigned int keysym)
{
@@ -845,17 +848,10 @@
int Viewport::handleSystemEvent(void *event, void *data)
{
Viewport *self = (Viewport *)data;
- Fl_Widget *focus;
assert(self);
- focus = Fl::grab();
- if (!focus)
- focus = Fl::focus();
- if (!focus)
- return 0;
-
- if (focus != self)
+ if (!self->hasFocus())
return 0;
assert(event);
diff --git a/vncviewer/Viewport.h b/vncviewer/Viewport.h
index 14ef4ab..170be0d 100644
--- a/vncviewer/Viewport.h
+++ b/vncviewer/Viewport.h
@@ -64,6 +64,7 @@
int handle(int event);
private:
+ bool hasFocus();
unsigned int getModifierMask(unsigned int keysym);