summaryrefslogtreecommitdiffstats
path: root/src/device-manager.cpp
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2010-04-10 05:21:31 +0000
committerJon A. Cruz <jon@joncruz.org>2010-04-10 05:21:31 +0000
commit92ec7a0a9a6a5d5de094b6481ceb0df22edcd568 (patch)
treedbf163f8088398670f0f2c0aeac01a7591ff8c0b /src/device-manager.cpp
parentGerman translation update (diff)
downloadinkscape-92ec7a0a9a6a5d5de094b6481ceb0df22edcd568.tar.gz
inkscape-92ec7a0a9a6a5d5de094b6481ceb0df22edcd568.zip
Do not emit signals when setting values to their existing state.
(bzr r9304)
Diffstat (limited to 'src/device-manager.cpp')
-rw-r--r--src/device-manager.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/device-manager.cpp b/src/device-manager.cpp
index 29e15b05a..b71cca059 100644
--- a/src/device-manager.cpp
+++ b/src/device-manager.cpp
@@ -403,10 +403,9 @@ void DeviceManagerImpl::setMode( Glib::ustring const & id, Gdk::InputMode mode )
{
std::list<Glib::RefPtr<InputDeviceImpl> >::iterator it = std::find_if(devices.begin(), devices.end(), IdMatcher(id));
if ( it != devices.end() ) {
- if (isValidDevice((*it)->getDevice())) {
+ if (isValidDevice((*it)->getDevice()) && ((*it)->getMode() != mode) ) {
bool success = gdk_device_set_mode((*it)->getDevice(), static_cast<GdkInputMode>(mode));
if (success) {
- //(*it)->setMode(mode);
signalDeviceChangedPriv.emit(*it);
} else {
g_warning("Unable to set mode on extended input device [%s]", (*it)->getId().c_str());
@@ -420,8 +419,14 @@ void DeviceManagerImpl::setAxisUse( Glib::ustring const & id, guint index, Gdk::
std::list<Glib::RefPtr<InputDeviceImpl> >::iterator it = std::find_if(devices.begin(), devices.end(), IdMatcher(id));
if ( it != devices.end() ) {
if (isValidDevice((*it)->getDevice())) {
- gdk_device_set_axis_use((*it)->getDevice(), index, static_cast<GdkAxisUse>(use));
- signalDeviceChangedPriv.emit(*it);
+ if (static_cast<gint>(index) <= (*it)->getNumAxes()) {
+ if ((*it)->getDevice()->axes[index].use != static_cast<GdkAxisUse>(use)) {
+ gdk_device_set_axis_use((*it)->getDevice(), index, static_cast<GdkAxisUse>(use));
+ signalDeviceChangedPriv.emit(*it);
+ }
+ } else {
+ g_warning("Invalid device axis number %d on extended input device [%s]", index, (*it)->getId().c_str());
+ }
}
}
}