Hello community, here is the log from the commit of package kglobalaccel for openSUSE:Factory checked in at 2015-11-24 22:23:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kglobalaccel (Old) and /work/SRC/openSUSE:Factory/.kglobalaccel.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kglobalaccel" Changes: -------- --- /work/SRC/openSUSE:Factory/kglobalaccel/kglobalaccel.changes 2015-10-19 22:24:36.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.kglobalaccel.new/kglobalaccel.changes 2015-11-24 22:23:28.000000000 +0100 @@ -1,0 +2,10 @@ +Sun Nov 8 17:00:17 UTC 2015 - [email protected] + +- Update to 5.16.0 (boo#955067) + * Do not XOR Shift for KP_Enter (kde#128982) + * Grab all keys for a symbol (kde#351198) + * Do not fetch keysyms twice for every keypress + * For more details please see: + https://www.kde.org/announcements/kde-frameworks-5.16.0.php + +------------------------------------------------------------------- @@ -21 +31 @@ - * Debug output has been ported to categorized output, for less + * Dekde#output has been ported to categorized output, for less Old: ---- kglobalaccel-5.15.0.tar.xz New: ---- kglobalaccel-5.16.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kglobalaccel.spec ++++++ --- /var/tmp/diff_new_pack.4K23ZN/_old 2015-11-24 22:23:28.000000000 +0100 +++ /var/tmp/diff_new_pack.4K23ZN/_new 2015-11-24 22:23:28.000000000 +0100 @@ -18,9 +18,9 @@ %bcond_without lang %define lname libKF5GlobalAccel5 -%define _tar_path 5.15 +%define _tar_path 5.16 Name: kglobalaccel -Version: 5.15.0 +Version: 5.16.0 Release: 0 %define kf5_version %{version} BuildRequires: cmake >= 2.8.12 ++++++ kglobalaccel-5.15.0.tar.xz -> kglobalaccel-5.16.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kglobalaccel-5.15.0/CMakeLists.txt new/kglobalaccel-5.16.0/CMakeLists.txt --- old/kglobalaccel-5.15.0/CMakeLists.txt 2015-10-05 10:05:31.000000000 +0200 +++ new/kglobalaccel-5.16.0/CMakeLists.txt 2015-11-08 13:23:03.000000000 +0100 @@ -4,7 +4,7 @@ # ECM setup include(FeatureSummary) -find_package(ECM 5.15.0 NO_MODULE) +find_package(ECM 5.16.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -18,8 +18,8 @@ include(ECMPoQmTools) -set(KF5_VERSION "5.15.0") # handled by release scripts -set(KF5_DEP_VERSION "5.15.0") # handled by release scripts +set(KF5_VERSION "5.16.0") # handled by release scripts +set(KF5_DEP_VERSION "5.16.0") # handled by release scripts ecm_setup_version(${KF5_VERSION} VARIABLE_PREFIX KGLOBALACCEL VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kglobalaccel_version.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kglobalaccel-5.15.0/po/ca@valencia/kglobalaccel5_qt.po new/kglobalaccel-5.16.0/po/ca@valencia/kglobalaccel5_qt.po --- old/kglobalaccel-5.15.0/po/ca@valencia/kglobalaccel5_qt.po 2015-10-05 10:05:31.000000000 +0200 +++ new/kglobalaccel-5.16.0/po/ca@valencia/kglobalaccel5_qt.po 2015-11-08 13:23:03.000000000 +0100 @@ -1,28 +1,27 @@ -# Translation of kglobalaccel5.po to Catalan -# Copyright (C) 1998-2014 This_file_is_part_of_KDE +# Translation of kglobalaccel5_qt.po to Catalan (Valencian) +# Copyright (C) 2014-2015 This_file_is_part_of_KDE # This file is distributed under the license LGPL version 2.1 or # version 3 or later versions approved by the membership of KDE e.V. # -# Sebastià Pla i Sanz <[email protected]>, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006. -# Antoni Bella Pérez <[email protected]>, 2003, 2006, 2011, 2012, 2013. +# Sebastià Pla i Sanz <[email protected]>, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007. +# Antoni Bella Pérez <[email protected]>, 2003, 2006, 2011, 2012, 2013, 2014. # Albert Astals Cid <[email protected]>, 2004, 2005, 2007. -# Sebastia Pla Sanz <[email protected]>, 2006, 2007. -# Josep Ma. Ferrer <[email protected]>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014. +# Josep Ma. Ferrer <[email protected]>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015. # Robert Millan <[email protected]>, 2009. # Orestes Mas <[email protected]>, 2010. msgid "" msgstr "" -"Project-Id-Version: kglobalaccel5\n" +"Project-Id-Version: kglobalaccel5_qt\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2014-03-23 01:50+0000\n" -"PO-Revision-Date: 2014-03-30 12:32+0200\n" +"PO-Revision-Date: 2015-05-07 15:24+0200\n" "Last-Translator: Josep Ma. Ferrer <[email protected]>\n" "Language-Team: Catalan <[email protected]>\n" "Language: ca@valencia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.4\n" +"X-Generator: Lokalize 1.5\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Accelerator-Marker: &\n" "X-Qt-Contexts: true\n" @@ -60,7 +59,7 @@ #, qt-format msgctxt "KGlobalAccel|" msgid "In context '%1' for action '%2'\n" -msgstr "En el context «%1» per l'acció «%2»\n" +msgstr "En el context «%1» per a l'acció «%2»\n" #: kglobalaccel.cpp:578 #, qt-format @@ -80,9 +79,9 @@ #: runtime/main.cpp:61 runtime/main.cpp:63 msgctxt "QObject|" msgid "KDE Global Shortcuts Service" -msgstr "" +msgstr "Servei de dreceres globals del KDE" #: runtime/main.cpp:66 runtime/main.cpp:67 msgctxt "QObject|" msgid "Maintainer" -msgstr "" +msgstr "Mantenidor" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kglobalaccel-5.15.0/po/el/kglobalaccel5_qt.po new/kglobalaccel-5.16.0/po/el/kglobalaccel5_qt.po --- old/kglobalaccel-5.15.0/po/el/kglobalaccel5_qt.po 2015-10-05 10:05:31.000000000 +0200 +++ new/kglobalaccel-5.16.0/po/el/kglobalaccel5_qt.po 2015-11-08 13:23:03.000000000 +0100 @@ -15,56 +15,47 @@ # Dimitrios Glentadakis <[email protected]>, 2010, 2011, 2012, 2013, 2014. # nikos, 2011. # Stelios <[email protected]>, 2012, 2013. +# Dimitris Kardarakos <[email protected]>, 2015. msgid "" msgstr "" "Project-Id-Version: kdelibs4\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2014-03-23 01:50+0000\n" -"PO-Revision-Date: 2014-01-04 09:52+0100\n" -"Last-Translator: Dimitrios Glentadakis <[email protected]>\n" +"PO-Revision-Date: 2015-11-04 15:46+0200\n" +"Last-Translator: Dimitris Kardarakos <[email protected]>\n" "Language-Team: Greek <[email protected]>\n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.5\n" +"X-Generator: Lokalize 2.0\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Qt-Contexts: true\n" #: kglobalaccel.cpp:535 -#, fuzzy -#| msgid "Conflict with Global Shortcut" msgctxt "KGlobalAccel|" msgid "Conflict with Global Shortcut" msgstr "Σύγκρουση με καθολική συντόμευση" #: kglobalaccel.cpp:536 -#, fuzzy, qt-format -#| msgid "" -#| "The '%1' key combination has already been allocated to the global action " -#| "\"%2\" in %3.\n" -#| "Do you want to reassign it from that action to the current one?" +#, qt-format msgctxt "KGlobalAccel|" msgid "" "The '%1' key combination has already been allocated to the global action " "\"%2\" in %3.\n" "Do you want to reassign it from that action to the current one?" msgstr "" -"Ο συνδυασμός πλήκτρων '%1' έχει ήδη δεσμευθεί για την καθολική ενέργεια " -"\"%2\" στο %3.\n" -"Επιθυμείτε την ανάθεση από την ενέργεια αυτή στην τρέχουσα;" +"Ο συνδυασμός πλήκτρων '%1' έχει ήδη ανατεθεί στην καθολική ενέργεια \"%2\" " +"στο %3.\n" +"Επιθυμείτε νέα ανάθεση από την ενέργεια αυτή στην τρέχουσα;" #: kglobalaccel.cpp:545 kglobalaccel.cpp:589 -#, fuzzy -#| msgid "Reassign" msgctxt "KGlobalAccel|" msgid "Reassign" -msgstr "Επανάθεση" +msgstr "Ανάθεση ξανά" #: kglobalaccel.cpp:567 -#, fuzzy, qt-format -#| msgid "" -#| "The '%1' key combination is registered by application %2 for action %3:" +#, qt-format msgctxt "KGlobalAccel|" msgid "The '%1' key combination is registered by application %2 for action %3:" msgstr "" @@ -72,17 +63,13 @@ "ενέργεια %3:" #: kglobalaccel.cpp:574 -#, fuzzy, qt-format -#| msgid "In context '%1' for action '%2'\n" +#, qt-format msgctxt "KGlobalAccel|" msgid "In context '%1' for action '%2'\n" -msgstr "Στο περιεχόμενο '%1' για την ενέργεια '%2'\n" +msgstr "Στο πλαίσιο '%1' για την ενέργεια '%2'\n" #: kglobalaccel.cpp:578 -#, fuzzy, qt-format -#| msgid "" -#| "The '%1' key combination is registered by application %2.\n" -#| "%3" +#, qt-format msgctxt "KGlobalAccel|" msgid "" "The '%1' key combination is registered by application %2.\n" @@ -92,20 +79,16 @@ " %3" #: kglobalaccel.cpp:584 -#, fuzzy -#| msgid "Conflict With Registered Global Shortcut" msgctxt "KGlobalAccel|" msgid "Conflict With Registered Global Shortcut" -msgstr "Σύγκρουση με καθολική συντόμευση" +msgstr "Σύγκρουση με καταχωρημένη καθολική συντόμευση" #: runtime/main.cpp:61 runtime/main.cpp:63 msgctxt "QObject|" msgid "KDE Global Shortcuts Service" -msgstr "" +msgstr "Υπηρεσία καθολικών συντομεύσεων του KDE" #: runtime/main.cpp:66 runtime/main.cpp:67 -#, fuzzy -#| msgid "Maintainer" msgctxt "QObject|" msgid "Maintainer" msgstr "Συντηρητής" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kglobalaccel-5.15.0/po/gd/kglobalaccel5_qt.po new/kglobalaccel-5.16.0/po/gd/kglobalaccel5_qt.po --- old/kglobalaccel-5.15.0/po/gd/kglobalaccel5_qt.po 2015-10-05 10:05:31.000000000 +0200 +++ new/kglobalaccel-5.16.0/po/gd/kglobalaccel5_qt.po 2015-11-08 13:23:03.000000000 +0100 @@ -1,8 +1,10 @@ -# GunChleoc <[email protected]>, 2014. +# GunChleoc <[email protected]>, 2014, 2015. msgid "" msgstr "" -"PO-Revision-Date: 2014-12-09 12:40+0100\n" -"Last-Translator: GunChleoc <[email protected]>\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-11-04 15:12+0000\n" +"Last-Translator: Michael Bauer <[email protected]>\n" "Language-Team: Fòram na Gàidhlig\n" "Language: gd\n" "MIME-Version: 1.0\n" @@ -10,7 +12,7 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : " "(n > 2 && n < 20) ? 2 : 3;\n" -"X-Generator: Virtaal 0.7.1\n" +"X-Generator: Poedit 1.8.4\n" "X-Qt-Contexts: true\n" #: kglobalaccel.cpp:535 @@ -67,9 +69,9 @@ #: runtime/main.cpp:61 runtime/main.cpp:63 msgctxt "QObject|" msgid "KDE Global Shortcuts Service" -msgstr "" +msgstr "Seirbheis nan ath-ghoiridean uile-choitcheann KDE" #: runtime/main.cpp:66 runtime/main.cpp:67 msgctxt "QObject|" msgid "Maintainer" -msgstr "" +msgstr "Neach-glèidhidh" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kglobalaccel-5.15.0/po/ko/kglobalaccel5_qt.po new/kglobalaccel-5.16.0/po/ko/kglobalaccel5_qt.po --- old/kglobalaccel-5.15.0/po/ko/kglobalaccel5_qt.po 2015-10-05 10:05:31.000000000 +0200 +++ new/kglobalaccel-5.16.0/po/ko/kglobalaccel5_qt.po 2015-11-08 13:23:03.000000000 +0100 @@ -60,7 +60,7 @@ "The '%1' key combination is registered by application %2.\n" "%3" msgstr "" -"'%1' 키 조합은 프로그램 %2이(가) 등록하였습니다.\n" +"'%1' 키 조합은 프로그램 %2이(가) 등록했습니다.\n" "%3" #: kglobalaccel.cpp:584 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kglobalaccel-5.15.0/src/CMakeLists.txt new/kglobalaccel-5.16.0/src/CMakeLists.txt --- old/kglobalaccel-5.15.0/src/CMakeLists.txt 2015-10-05 10:05:31.000000000 +0200 +++ new/kglobalaccel-5.16.0/src/CMakeLists.txt 2015-11-08 13:23:03.000000000 +0100 @@ -1,13 +1,11 @@ configure_file(config-kglobalaccel.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kglobalaccel.h ) -ecm_create_qm_loader(kglobalaccel_QM_LOADER kglobalaccel5_qt) - set(kglobalaccel_SRCS kglobalaccel.cpp kglobalshortcutinfo.cpp kglobalshortcutinfo_dbus.cpp - ${kglobalaccel_QM_LOADER} ) +ecm_create_qm_loader(kglobalaccel_SRCS kglobalaccel5_qt) set(kglobalaccel_xml ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.KGlobalAccel.xml) set_source_files_properties(${kglobalaccel_xml} PROPERTIES INCLUDE "kglobalshortcutinfo_p.h") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kglobalaccel-5.15.0/src/runtime/CMakeLists.txt new/kglobalaccel-5.16.0/src/runtime/CMakeLists.txt --- old/kglobalaccel-5.15.0/src/runtime/CMakeLists.txt 2015-10-05 10:05:31.000000000 +0200 +++ new/kglobalaccel-5.16.0/src/runtime/CMakeLists.txt 2015-11-08 13:23:03.000000000 +0100 @@ -1,12 +1,10 @@ remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY) remove_definitions(-DQT_NO_CAST_FROM_ASCII) -ecm_create_qm_loader(kglobalaccel_QM_LOADER kglobalaccel5_qt) - ############################################################################### ### KDED Global Accel Daemon -set(kglobalaccel_SRCS +set(kglobalaccelprivate_SRCS kglobalacceld.cpp kglobalaccel_interface.cpp component.cpp @@ -14,11 +12,12 @@ globalshortcut.cpp globalshortcutsregistry.cpp globalshortcutcontext.cpp - ${kglobalaccel_QM_LOADER}) +) +ecm_create_qm_loader(kglobalaccelprivate_SRCS kglobalaccel5_qt) configure_file(config-kglobalaccel.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kglobalaccel.h ) -add_library(KF5GlobalAccelPrivate ${kglobalaccel_SRCS}) +add_library(KF5GlobalAccelPrivate ${kglobalaccelprivate_SRCS}) generate_export_header(KF5GlobalAccelPrivate BASE_NAME KF5GlobalAccelPrivate) add_library(KF5::GlobalAccelPrivate ALIAS KF5GlobalAccelPrivate) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kglobalaccel-5.15.0/src/runtime/kglobalaccel.desktop new/kglobalaccel-5.16.0/src/runtime/kglobalaccel.desktop --- old/kglobalaccel-5.15.0/src/runtime/kglobalaccel.desktop 2015-10-05 10:05:31.000000000 +0200 +++ new/kglobalaccel-5.16.0/src/runtime/kglobalaccel.desktop 2015-11-08 13:23:03.000000000 +0100 @@ -30,6 +30,7 @@ Name[fr]=Serveur général de raccourcis KDED Name[fy]=KDED globale fluchtoets tsjinnner Name[ga]=Freastalaí Aicearraí Comhchoiteanna KDED +Name[gd]=Frithealaiche nan ath-ghoiridean uile-choitcheann KDED Name[gl]=Servidor de atallos de teclado globais de KDED Name[gu]=KDED વૈશ્વીક ટૂંકાણો સર્વર Name[he]=שרת קיצורי מקשים גלובליים KDED diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kglobalaccel-5.15.0/src/runtime/plugins/xcb/kglobalaccel_x11.cpp new/kglobalaccel-5.16.0/src/runtime/plugins/xcb/kglobalaccel_x11.cpp --- old/kglobalaccel-5.15.0/src/runtime/plugins/xcb/kglobalaccel_x11.cpp 2015-10-05 10:05:31.000000000 +0200 +++ new/kglobalaccel-5.16.0/src/runtime/plugins/xcb/kglobalaccel_x11.cpp 2015-11-08 13:23:03.000000000 +0100 @@ -113,70 +113,75 @@ if (!keyCodes) { return false; } - xcb_keycode_t keyCodeX = keyCodes[0]; - free(keyCodes); - - // Check if shift needs to be added to the grab since KKeySequenceWidget - // can remove shift for some keys. (all the %&* and such) - if( !(keyQt & Qt::SHIFT) && - !KKeyServer::isShiftAsModifierAllowed( keyQt ) && - keySymX != xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, 0) && - keySymX == xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, 1) ) - { - qCDebug(KGLOBALACCELD) << "adding shift to the grab"; - keyModX |= KKeyServer::modXShift(); - } - - keyModX &= g_keyModMaskXAccel; // Get rid of any non-relevant bits in mod - - if( !keyCodeX ) { - qCDebug(KGLOBALACCELD) << "keyQt (0x" << hex << keyQt << ") was resolved to x11 keycode 0"; - return false; - } - - // We'll have to grab 8 key modifier combinations in order to cover all - // combinations of CapsLock, NumLock, ScrollLock. - // Does anyone with more X-savvy know how to set a mask on QX11Info::appRootWindow so that - // the irrelevant bits are always ignored and we can just make one XGrabKey - // call per accelerator? -- ellis -#ifndef NDEBUG - QString sDebug = QString("\tcode: 0x%1 state: 0x%2 | ").arg(keyCodeX,0,16).arg(keyModX,0,16); -#endif - uint keyModMaskX = ~g_keyModMaskXOnOrOff; - QVector<xcb_void_cookie_t> cookies; - for( uint irrelevantBitsMask = 0; irrelevantBitsMask <= 0xff; irrelevantBitsMask++ ) { - if( (irrelevantBitsMask & keyModMaskX) == 0 ) { -#ifndef NDEBUG - sDebug += QString("0x%3, ").arg(irrelevantBitsMask, 0, 16); -#endif - if( grab ) - cookies << xcb_grab_key_checked(QX11Info::connection(), true, - QX11Info::appRootWindow(), keyModX | irrelevantBitsMask, - keyCodeX, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_SYNC); - else - cookies << xcb_ungrab_key_checked(QX11Info::connection(), keyCodeX, - QX11Info::appRootWindow(), keyModX | irrelevantBitsMask); - } - } + int i = 0; + bool success = !grab; + while (keyCodes[i] != XCB_NO_SYMBOL) { + xcb_keycode_t keyCodeX = keyCodes[i++]; + + // Check if shift needs to be added to the grab since KKeySequenceWidget + // can remove shift for some keys. (all the %&* and such) + if( !(keyQt & Qt::SHIFT) && + !KKeyServer::isShiftAsModifierAllowed( keyQt ) && + keySymX != xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, 0) && + keySymX == xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, 1) ) + { + qCDebug(KGLOBALACCELD) << "adding shift to the grab"; + keyModX |= KKeyServer::modXShift(); + } + + keyModX &= g_keyModMaskXAccel; // Get rid of any non-relevant bits in mod + + if( !keyCodeX ) { + qCDebug(KGLOBALACCELD) << "keyQt (0x" << hex << keyQt << ") was resolved to x11 keycode 0"; + continue; + } + + // We'll have to grab 8 key modifier combinations in order to cover all + // combinations of CapsLock, NumLock, ScrollLock. + // Does anyone with more X-savvy know how to set a mask on QX11Info::appRootWindow so that + // the irrelevant bits are always ignored and we can just make one XGrabKey + // call per accelerator? -- ellis + #ifndef NDEBUG + QString sDebug = QString("\tcode: 0x%1 state: 0x%2 | ").arg(keyCodeX,0,16).arg(keyModX,0,16); + #endif + uint keyModMaskX = ~g_keyModMaskXOnOrOff; + QVector<xcb_void_cookie_t> cookies; + for( uint irrelevantBitsMask = 0; irrelevantBitsMask <= 0xff; irrelevantBitsMask++ ) { + if( (irrelevantBitsMask & keyModMaskX) == 0 ) { + #ifndef NDEBUG + sDebug += QString("0x%3, ").arg(irrelevantBitsMask, 0, 16); + #endif + if( grab ) + cookies << xcb_grab_key_checked(QX11Info::connection(), true, + QX11Info::appRootWindow(), keyModX | irrelevantBitsMask, + keyCodeX, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_SYNC); + else + cookies << xcb_ungrab_key_checked(QX11Info::connection(), keyCodeX, + QX11Info::appRootWindow(), keyModX | irrelevantBitsMask); + } + } - bool failed = false; - if( grab ) { - for (int i = 0; i < cookies.size(); ++i) { - QScopedPointer<xcb_generic_error_t, QScopedPointerPodDeleter> error(xcb_request_check(QX11Info::connection(), cookies.at(i))); - if (!error.isNull()) { - failed = true; + bool failed = false; + if( grab ) { + for (int i = 0; i < cookies.size(); ++i) { + QScopedPointer<xcb_generic_error_t, QScopedPointerPodDeleter> error(xcb_request_check(QX11Info::connection(), cookies.at(i))); + if (!error.isNull()) { + failed = true; + } + } + if( failed ) { + qCDebug(KGLOBALACCELD) << "grab failed!\n"; + for( uint m = 0; m <= 0xff; m++ ) { + if(( m & keyModMaskX ) == 0 ) + xcb_ungrab_key(QX11Info::connection(), keyCodeX, QX11Info::appRootWindow(), keyModX | m); } + } else { + success = true; } - if( failed ) { - qCDebug(KGLOBALACCELD) << "grab failed!\n"; - for( uint m = 0; m <= 0xff; m++ ) { - if(( m & keyModMaskX ) == 0 ) - xcb_ungrab_key(QX11Info::connection(), keyCodeX, QX11Info::appRootWindow(), keyModX | m); - } - } - } - - return !failed; + } + } + free(keyCodes); + return success; } bool KGlobalAccelImpl::nativeEventFilter(const QByteArray &eventType, void *message, long *) @@ -246,10 +251,9 @@ // If numlock is active and a keypad key is pressed, XOR the SHIFT state. // e.g., KP_4 => Shift+KP_Left, and Shift+KP_4 => KP_Left. if (pEvent->state & KKeyServer::modXNumLock()) { - xcb_keysym_t sym = xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, 0); // If this is a keypad key, - if( sym >= XK_KP_Space && sym <= XK_KP_9 ) { - switch( sym ) { + if( keySymX >= XK_KP_Space && keySymX <= XK_KP_9 ) { + switch( keySymX ) { // Leave the following keys unaltered // FIXME: The proper solution is to see which keysyms don't change when shifted. @@ -257,6 +261,7 @@ case XK_KP_Add: case XK_KP_Subtract: case XK_KP_Divide: + case XK_KP_Enter: break; default: @@ -270,10 +275,15 @@ KKeyServer::symXToKeyQt(keySymX, &keyCodeQt); KKeyServer::modXToQt(keyModX, &keyModQt); - if( keyModQt & Qt::SHIFT && !KKeyServer::isShiftAsModifierAllowed( keyCodeQt ) ) { + if ((keyModQt & Qt::SHIFT) && !KKeyServer::isShiftAsModifierAllowed( keyCodeQt ) ) { #ifdef KDEDGLOBALACCEL_TRACE qCDebug(KGLOBALACCELD) << "removing shift modifier"; #endif + if (keyCodeQt != Qt::Key_Tab) { // KKeySequenceWidget does not map shift+tab to backtab + static const int FirstLevelShift = 1; + keySymX = xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, FirstLevelShift); + KKeyServer::symXToKeyQt(keySymX, &keyCodeQt); + } keyModQt &= ~Qt::SHIFT; }
