summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2007-03-16 15:42:21 +1030
committerPeter Hutterer <peter@cs.unisa.edu.au>2007-03-16 15:42:21 +1030
commita1be07ff7602f80762258872d63ff6ffce775870 (patch)
tree3901287d2dfa79eb1cc26900638b63cf4f27dcc3
parent06fd74ee1a4fbccff0c815c71feaf5fe91fb6c9c (diff)
o expand dock as new keyboards are plugged in.
-rw-r--r--Changelog3
-rw-r--r--src/Manager.cpp16
-rw-r--r--src/Manager.h1
3 files changed, 20 insertions, 0 deletions
diff --git a/Changelog b/Changelog
index 89e85ef..f176d77 100644
--- a/Changelog
+++ b/Changelog
@@ -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: