diff options
author | Peter Hutterer <peter@cs.unisa.edu.au> | 2007-03-16 15:42:21 +1030 |
---|---|---|
committer | Peter Hutterer <peter@cs.unisa.edu.au> | 2007-03-16 15:42:21 +1030 |
commit | a1be07ff7602f80762258872d63ff6ffce775870 (patch) | |
tree | 3901287d2dfa79eb1cc26900638b63cf4f27dcc3 | |
parent | 06fd74ee1a4fbccff0c815c71feaf5fe91fb6c9c (diff) |
o expand dock as new keyboards are plugged in.
-rw-r--r-- | Changelog | 3 | ||||
-rw-r--r-- | src/Manager.cpp | 16 | ||||
-rw-r--r-- | src/Manager.h | 1 |
3 files changed, 20 insertions, 0 deletions
@@ -1,3 +1,6 @@ +16.03.2007 +o expand dock as new keyboards are plugged in. + 15.03.2007 + add gitignore file. o change icons, use transparent background. diff --git a/src/Manager.cpp b/src/Manager.cpp index 4096e9a..45b04ee 100644 --- a/src/Manager.cpp +++ b/src/Manager.cpp @@ -763,13 +763,17 @@ void Manager::handlePresenceNotify(XDevicePresenceNotifyEvent* ev) ERR("%s\n", e->message.c_str()); } } + } + if (!idToKeyboardDevice(current->id)) + { if (current->use & IsXExtensionKeyboard) { try { KeyboardDevice *k = new KeyboardDevice(current, x11, this); keyboards.push_back(k); + dock->appendKeyboard(k); } catch (DeviceError* e) { ERR("%s\n", e->message.c_str()); @@ -799,6 +803,18 @@ PointerDevice* Manager::idToPointerDevice(int id) return NULL; } +KeyboardDevice* Manager::idToKeyboardDevice(int id) +{ + vector<KeyboardDevice*>::const_iterator it = keyboards.begin(); + while(it != keyboards.end()) + { + if ((*it)->getID() == id) + return *it; + it++; + } + return NULL; +} + /** * @return The list of pointers registered at the manager. diff --git a/src/Manager.h b/src/Manager.h index 31cdd6e..b0288e8 100644 --- a/src/Manager.h +++ b/src/Manager.h @@ -61,6 +61,7 @@ class Manager bool hasShapeExtension(); PointerDevice* idToPointerDevice(int id); + KeyboardDevice* idToKeyboardDevice(int id); void setButtonPressMask(Window win); private: |