]> git.pld-linux.org Git - packages/qt4.git/blobdiff - qt4-kde-git.patch
- exceptions are used in some parts, rel 44
[packages/qt4.git] / qt4-kde-git.patch
index c2914ffc03e7e05247137a59ef681c632c54ab15..c6ffe9ba1b8188e9276514f30c464b5813f287ff 100644 (file)
@@ -1,9 +1,9 @@
 diff --git a/README.kde-qt b/README.kde-qt
 new file mode 100644
-index 0000000..db3feb6
+index 0000000..512f034
 --- /dev/null
 +++ b/README.kde-qt
-@@ -0,0 +1,201 @@
+@@ -0,0 +1,270 @@
 +This is a patched version of Qt.  It may include changes made by KDE
 +and Qt developers that have either not been accepted for inclusion
 +into Qt, or have been accepted for a later version of Qt than this
@@ -138,20 +138,21 @@ index 0000000..db3feb6
 +official Qt release.
 +
 +The exception to the above rule is that if the fix has been accepted
-+by Qt Software (and so will appear in the very next release of Qt),
-+then it should be simply cherry-picked from the Qt development
++by the Qt developers (and so will appear in the very next release of
++Qt), then it should be simply cherry-picked from the Qt development
 +branch. Note that you shouldn't do this for changes that have been
-+accepted into a release which is not the very next.
-+In this case, you should use the following command:
++accepted into a release which is not the very next.  In this case, you
++should use the following command:
 +
 +   git cherry-pick -x SHA1_OF_THE_FIX
 +where SHA1_OF_THE_FIX is the SHA-1 of the commit that you want to
 +introduce. Then push the change to the server.
 +
-+Before creating a patch, it is recommended to contact Qt Software
-+support via qt-bugs@trolltech.com and explain the situation. There may
-+be a solution for the problem already or a new direction that should
-+be accounted for.
++In all other cases, before creating a patch, it is recommended to
++contact the Qt developers via a new task in
++http://bugreports.qt.nokia.com and explain the situation. There may be
++a solution for the problem already or a new direction that should be
++accounted for.
 +
 +To create a patch, do the following:
 +  a) look at the listing of branches in
@@ -166,21 +167,28 @@ index 0000000..db3feb6
 +      git tag
 +
 +  c) make your changes to the Qt source code and verify that it
-+  compiles, links and works (please run the respective unit tests).
++  compiles, links and works (please run the respective unit tests from
++  tests/auto in the source tree).
 +
 +  c) commit your changes to Git, using the "git commit" command. Please
 +  see http://qt.gitorious.org/qt/pages/GitIntroductionWithQt and
 +  http://qt.gitorious.org/qt/pages/QtCodingStyle for information on
 +  how to create commits
-+  Note that you can create multiple commits.
 +
-+  e) merge the change to the main branch, for example, 4.5.1-patched:
++  Note that you are allowed to create as many commits as necessary to
++  accomplish a working change that can be easily reviewed.
++
++  e) merge the change to the patch branch, for example, 4.5.1-patched:
 +      git checkout 4.5.1-patched
 +      git merge patches/0180-window-role
 +
-+  f) push the changes you made to your branch and to the main server:
-+      git push git@gitorious.org:qt/kde-qt.git 4.5.1-patched patches/0180-window-role
-+  (Don't forget to list both branch names)
++  f) merge the patch branch to master:
++      git checkout master
++      git merge 4.5.1-patched
++
++  g) push the changes you made to your branch and to the main server:
++      git push git@gitorious.org:qt/kde-qt.git master 4.5.1-patched patches/0180-window-role
++  (Don't forget to list all 3 branch names)
 +
 +Don't forget to submit your patch to using the Qt Contribution Model,
 +along with the long description of the issue found. See
@@ -189,7 +197,7 @@ index 0000000..db3feb6
 +server.
 +
 +9. Troubleshooting: Re-configuring and re-compiling
-+==================================================
++===================================================
 +
 +For those updating the source in a directory where Qt has already
 +been compiled, you may need to run the following commands from the
@@ -199,17 +207,78 @@ index 0000000..db3feb6
 +
 +Sometimes ./configure will refuse to run.  You may need to:
 +      rm .qmake.cache
++      rm src/corelib/global/qconfig.*
 +
 +If you think you may have run "make install" on an install-less Qt
 +(srcdir == $QTDIR), run:
 +
 +      rm -rf include
 +      bin/syncqt
++
++10. Maintenance: updating kde-qt to a newer Qt version
++======================================================
++
++When a new version of Qt is released, do the following to update the
++repository (assuming Qt 4.6.1 is the release you're updating to):
++
++ a) rebase each of the individual patches against this new version.
++      for branch in patches/*; do
++        git checkout -b $branch origin/$branch
++        git rebase v4.6.1
++        resolve conflicts
++      done   # Note: pseudo-shell, don't try to run this
++
++    If a given branch is no longer valid (it's been applied to this Qt
++    version), then delete it on the server:
++      git push origin :$branch
++
++ b) create a new "patched" branch locally, starting on the release tag:
++      git checkout -b 4.6.1-patched v4.6.1
++
++ c) merge the patch branches and the README branch, one by one. There
++    should be no conflicts at this stage; if there are, it indicates
++    one patch conflicts with another.
++      git merge patches/0997-patch1
++      git merge patches/0998-patch2
++      git merge patches/0999-patch3
++      # etc.
++      git merge README
++
++ d) overwrite the master branch's contents with the new branch. If the
++    Git merge strategy "theirs" exist (it doesn't as of Git 1.6), use
++    it:
++      git checkout master
++      git merge -s theirs 4.6.1-patched
++
++    If it doesn't exist, do the equivalent by inverting the point of
++    view:
++      git checkout -b tmp 4.6.1-patched
++      git merge -s ours master
++      git checkout master
++      git merge tmp
++      git branch -d tmp
++
++    Also possible using Git plumbing:
++      git checkout master
++      git merge -s ours --no-commit 4.6.1-patched
++      rm .git/index
++      git read-tree 4.6.1-patched
++      git commit
++
++  e) push everything to kde-qt.git, including the new Qt. Note that
++     the individiual patch branches will require force, because they
++     have been rebased (that is, the new branch tip is no longer a
++     direct descendant of the previous tip).
++
++      # Push the individual patch branches with force
++      git push -f origin patches/0997-patch1 patches/0998-patch2 patches/0999-patch3 etc
++      # Push the tag, the new patched branch and master
++      git push v4.6.1 4.6.1-patched master
 diff --git a/bin/syncqt b/bin/syncqt
-index edabeca..e71d480 100755
+index c73d119..9e10576 100755
 --- a/bin/syncqt
 +++ b/bin/syncqt
-@@ -363,9 +363,13 @@ sub fixPaths {
+@@ -382,9 +382,13 @@ sub fixPaths {
          $match_dir = $tmp;
          $i = $slash;
      }
@@ -225,11 +294,11 @@ index edabeca..e71d480 100755
          for(my $i = 0; $i < $count; $i++) {
              $dots .= "../";
 diff --git a/configure b/configure
-index 4ea1ad0..b28a1fa 100755
+index 0d9df16..b88fc3e 100755
 --- a/configure
 +++ b/configure
-@@ -960,6 +960,11 @@ while [ "$#" -gt 0 ]; do
-             VAL=`echo $1 | sed 's,-D,,'`
+@@ -1058,6 +1058,11 @@ while [ "$#" -gt 0 ]; do
+             VAL=$1
          fi
          ;;
 +    -isystem)
@@ -240,7 +309,7 @@ index 4ea1ad0..b28a1fa 100755
      -I?*|-I)
          VAR="add_ipath"
          if [ "$1" = "-I" ]; then
-@@ -1930,6 +1935,9 @@ while [ "$#" -gt 0 ]; do
+@@ -2182,6 +2187,9 @@ while [ "$#" -gt 0 ]; do
      add_ipath)
          I_FLAGS="$I_FLAGS -I\"${VAL}\""
          ;;
@@ -250,25 +319,11 @@ index 4ea1ad0..b28a1fa 100755
      add_lpath)
          L_FLAGS="$L_FLAGS -L\"${VAL}\""
          ;;
-diff --git a/projects.pro b/projects.pro
-index f6c596d..79420d2 100644
---- a/projects.pro
-+++ b/projects.pro
-@@ -131,6 +131,9 @@ unix {
-    DEFAULT_QMAKESPEC ~= s,^.*mkspecs/,,g
-    mkspecs.commands += $(DEL_FILE) $(INSTALL_ROOT)$$mkspecs.path/default; $(SYMLINK) $$DEFAULT_QMAKESPEC $(INSTALL_ROOT)$$mkspecs.path/default
- }
-+win32 {
-+   mkspecs.files += $$QT_BUILD_TREE/mkspecs/default
-+}
- INSTALLS += mkspecs
- false:macx { #mac install location
 diff --git a/qmake/property.cpp b/qmake/property.cpp
-index ea4842a..ac54854 100644
+index 8bfc353..22a847a 100644
 --- a/qmake/property.cpp
 +++ b/qmake/property.cpp
-@@ -81,29 +81,32 @@ QMakeProperty::keyBase(bool version) const
+@@ -81,31 +81,34 @@ QMakeProperty::keyBase(bool version) const
  QString
  QMakeProperty::value(QString v, bool just_check)
  {
@@ -294,6 +349,9 @@ index ea4842a..ac54854 100644
      else if(v == "QT_INSTALL_PLUGINS")
 -        return QLibraryInfo::location(QLibraryInfo::PluginsPath);
 +        ret = QLibraryInfo::location(QLibraryInfo::PluginsPath);
+     else if(v == "QT_INSTALL_IMPORTS")
+-        return QLibraryInfo::location(QLibraryInfo::ImportsPath);
++        ret = QLibraryInfo::location(QLibraryInfo::ImportsPath);
      else if(v == "QT_INSTALL_TRANSLATIONS")
 -        return QLibraryInfo::location(QLibraryInfo::TranslationsPath);
 +        ret = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
@@ -310,10 +368,10 @@ index ea4842a..ac54854 100644
 +    if(!ret.isEmpty())
 +        return QDir::toNativeSeparators(ret);
 +    if(v == "QMAKE_MKSPECS")
-         return qmake_mkspec_paths().join(Option::target_mode == Option::TARG_WIN_MODE ? ";" : ":");
+         return qmake_mkspec_paths().join(Option::dirlist_sep);
      else if(v == "QMAKE_VERSION")
          return qmake_version();
-@@ -116,7 +119,7 @@ QMakeProperty::value(QString v, bool just_check)
+@@ -118,7 +121,7 @@ QMakeProperty::value(QString v, bool just_check)
      int slash = v.lastIndexOf('/');
      QVariant var = settings->value(keyBase(slash == -1) + v);
      bool ok = var.isValid();
@@ -322,411 +380,19 @@ index ea4842a..ac54854 100644
      if(!ok) {
          QString version = qmake_version();
          if(slash != -1) {
-diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h
-index ac2ad34..58d7df0 100644
---- a/src/corelib/global/qnamespace.h
-+++ b/src/corelib/global/qnamespace.h
-@@ -895,12 +895,10 @@ public:
-         Key_Dead_Horn           = 0x01001262,
-         // multimedia/internet keys - ignored by default - see QKeyEvent c'tor
--
-         Key_Back  = 0x01000061,
-         Key_Forward  = 0x01000062,
-         Key_Stop  = 0x01000063,
-         Key_Refresh  = 0x01000064,
--
-         Key_VolumeDown = 0x01000070,
-         Key_VolumeMute  = 0x01000071,
-         Key_VolumeUp = 0x01000072,
-@@ -909,7 +907,6 @@ public:
-         Key_BassDown = 0x01000075,
-         Key_TrebleUp = 0x01000076,
-         Key_TrebleDown = 0x01000077,
--
-         Key_MediaPlay  = 0x01000080,
-         Key_MediaStop  = 0x01000081,
-         Key_MediaPrevious  = 0x01000082,
-@@ -918,13 +915,11 @@ public:
- #endif
-         Key_MediaNext  = 0x01000083,
-         Key_MediaRecord = 0x01000084,
--
-         Key_HomePage  = 0x01000090,
-         Key_Favorites  = 0x01000091,
-         Key_Search  = 0x01000092,
-         Key_Standby = 0x01000093,
-         Key_OpenUrl = 0x01000094,
--
-         Key_LaunchMail  = 0x010000a0,
-         Key_LaunchMedia = 0x010000a1,
-         Key_Launch0  = 0x010000a2,
-@@ -943,6 +938,98 @@ public:
-         Key_LaunchD  = 0x010000af,
-         Key_LaunchE  = 0x010000b0,
-         Key_LaunchF  = 0x010000b1,
-+        Key_MonBrightnessUp = 0x010000b2,
-+        Key_MonBrightnessDown = 0x010000b3,
-+        Key_KeyboardLightOnOff = 0x010000b4,
-+        Key_KeyboardBrightnessUp = 0x010000b5,
-+        Key_KeyboardBrightnessDown = 0x010000b6,
-+        Key_PowerOff = 0x010000b7,
-+        Key_WakeUp = 0x010000b8,
-+        Key_Eject = 0x010000b9,
-+        Key_ScreenSaver = 0x010000ba,
-+        Key_WWW = 0x010000bb,
-+        Key_Memo = 0x010000bc,
-+        Key_LightBulb = 0x010000bd,
-+        Key_Shop = 0x010000be,
-+        Key_History = 0x010000bf,
-+        Key_AddFavorite = 0x010000c0,
-+        Key_HotLinks = 0x010000c1,
-+        Key_BrightnessAdjust = 0x010000c2,
-+        Key_Finance = 0x010000c3,
-+        Key_Community = 0x010000c4,
-+        Key_AudioRewind = 0x010000c5,
-+        Key_BackForward = 0x010000c6,
-+        Key_ApplicationLeft = 0x010000c7,
-+        Key_ApplicationRight = 0x010000c8,
-+        Key_Book = 0x010000c9,
-+        Key_CD = 0x010000ca,
-+        Key_Calculator = 0x010000cb,
-+        Key_ToDoList = 0x010000cc,
-+        Key_ClearGrab = 0x010000cd,
-+        Key_Close = 0x010000ce,
-+        Key_Copy = 0x010000cf,
-+        Key_Cut = 0x010000d0,
-+        Key_Display = 0x010000d1,
-+        Key_DOS = 0x010000d2,
-+        Key_Documents = 0x010000d3,
-+        Key_Excel = 0x010000d4,
-+        Key_Explorer = 0x010000d5,
-+        Key_Game = 0x010000d6,
-+        Key_Go = 0x010000d7,
-+        Key_iTouch = 0x010000d8,
-+        Key_LogOff = 0x010000d9,
-+        Key_Market = 0x010000da,
-+        Key_Meeting = 0x010000db,
-+        Key_MenuKB = 0x010000dc,
-+        Key_MenuPB = 0x010000dd,
-+        Key_MySites = 0x010000de,
-+        Key_News = 0x010000df,
-+        Key_OfficeHome = 0x010000e0,
-+        Key_Option = 0x010000e1,
-+        Key_Paste = 0x010000e2,
-+        Key_Phone = 0x010000e3,
-+        Key_Calendar = 0x010000e4,
-+        Key_Reply = 0x010000e5,
-+        Key_Reload = 0x010000e6,
-+        Key_RotateWindows = 0x010000e7,
-+        Key_RotationPB = 0x010000e8,
-+        Key_RotationKB = 0x010000e9,
-+        Key_Save = 0x010000ea,
-+        Key_Send = 0x010000eb,
-+        Key_Spell = 0x010000ec,
-+        Key_SplitScreen = 0x010000ed,
-+        Key_Support = 0x010000ee,
-+        Key_TaskPane = 0x010000ef,
-+        Key_Terminal = 0x010000f0,
-+        Key_Tools = 0x010000f1,
-+        Key_Travel = 0x010000f2,
-+        Key_Video = 0x010000f3,
-+        Key_Word = 0x010000f4,
-+        Key_Xfer = 0x010000f5,
-+        Key_ZoomIn = 0x010000f6,
-+        Key_ZoomOut = 0x010000f7,
-+        Key_Away = 0x010000f8,
-+        Key_Messenger = 0x010000f9,
-+        Key_WebCam = 0x010000fa,
-+        Key_MailForward = 0x010000fb,
-+        Key_Pictures = 0x010000fc,
-+        Key_Music = 0x010000fd,
-+        Key_Battery = 0x010000fe,
-+        Key_Bluetooth = 0x010000ff,
-+        Key_WLAN = 0x01000100,
-+        Key_UWB = 0x01000101,
-+        Key_AudioForward = 0x01000102,
-+        Key_AudioRepeat = 0x01000103,
-+        Key_AudioRandomPlay = 0x01000104,
-+        Key_Subtitle = 0x01000105,
-+        Key_AudioCycleTrack = 0x01000106,
-+        Key_Time = 0x01000107,
-+        Key_Hibernate = 0x01000108,
-+        Key_View = 0x01000109,
-+        Key_TopMenu = 0x0100010a,
-+        Key_PowerDown = 0x0100010b,
-+        Key_Suspend = 0x0100010c,
-+        Key_ContrastAdjust = 0x0100010d,
-         Key_MediaLast = 0x0100ffff,
-diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp
-index 87e9728..7f6dbb6 100644
---- a/src/corelib/kernel/qeventdispatcher_glib.cpp
-+++ b/src/corelib/kernel/qeventdispatcher_glib.cpp
-@@ -127,16 +127,11 @@ struct GTimerSource
-     GSource source;
-     QTimerInfoList timerList;
-     QEventLoop::ProcessEventsFlags processEventsFlags;
-+    bool runWithIdlePriority;
- };
--static gboolean timerSourcePrepare(GSource *source, gint *timeout)
-+static gboolean timerSourcePrepareHelper(GTimerSource *src, gint *timeout)
- {
--    gint dummy;
--    if (!timeout)
--        timeout = &dummy;
--
--    GTimerSource *src = reinterpret_cast<GTimerSource *>(source);
--
-     timeval tv = { 0l, 0l };
-     if (!(src->processEventsFlags & QEventLoop::X11ExcludeTimers) && src->timerList.timerWait(tv))
-         *timeout = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
-@@ -146,10 +141,8 @@ static gboolean timerSourcePrepare(GSource *source, gint *timeout)
-     return (*timeout == 0);
- }
--static gboolean timerSourceCheck(GSource *source)
-+static gboolean timerSourceCheckHelper(GTimerSource *src)
- {
--    GTimerSource *src = reinterpret_cast<GTimerSource *>(source);
--
-     if (src->timerList.isEmpty()
-         || (src->processEventsFlags & QEventLoop::X11ExcludeTimers))
-         return false;
-@@ -160,9 +153,35 @@ static gboolean timerSourceCheck(GSource *source)
-     return true;
- }
-+static gboolean timerSourcePrepare(GSource *source, gint *timeout)
-+{
-+    gint dummy;
-+    if (!timeout)
-+        timeout = &dummy;
-+
-+    GTimerSource *src = reinterpret_cast<GTimerSource *>(source);
-+    if (src->runWithIdlePriority) {
-+        if (timeout)
-+            *timeout = -1;
-+        return false;
-+    }
-+
-+    return timerSourcePrepareHelper(src, timeout);
-+}
-+
-+static gboolean timerSourceCheck(GSource *source)
-+{
-+    GTimerSource *src = reinterpret_cast<GTimerSource *>(source);
-+    if (src->runWithIdlePriority)
-+        return false;
-+    return timerSourceCheckHelper(src);
-+}
-+
- static gboolean timerSourceDispatch(GSource *source, GSourceFunc, gpointer)
- {
--    (void) reinterpret_cast<GTimerSource *>(source)->timerList.activateTimers();
-+    GTimerSource *timerSource = reinterpret_cast<GTimerSource *>(source);
-+    timerSource->runWithIdlePriority = true;
-+    (void) timerSource->timerList.activateTimers();
-     return true; // ??? don't remove, right again?
- }
-@@ -175,6 +194,53 @@ static GSourceFuncs timerSourceFuncs = {
-     NULL
- };
-+struct GIdleTimerSource
-+{
-+    GSource source;
-+    GTimerSource *timerSource;
-+};
-+
-+static gboolean idleTimerSourcePrepare(GSource *source, gint *timeout)
-+{
-+    GIdleTimerSource *idleTimerSource = reinterpret_cast<GIdleTimerSource *>(source);
-+    GTimerSource *timerSource = idleTimerSource->timerSource;
-+    if (!timerSource->runWithIdlePriority) {
-+        // Yield to the normal priority timer source
-+        if (timeout)
-+            *timeout = -1;
-+        return false;
-+    }
-+
-+    return timerSourcePrepareHelper(timerSource, timeout);
-+}
-+
-+static gboolean idleTimerSourceCheck(GSource *source)
-+{
-+    GIdleTimerSource *idleTimerSource = reinterpret_cast<GIdleTimerSource *>(source);
-+    GTimerSource *timerSource = idleTimerSource->timerSource;
-+    if (!timerSource->runWithIdlePriority) {
-+        // Yield to the normal priority timer source
-+        return false;
-+    }
-+    return timerSourceCheckHelper(timerSource);
-+}
-+
-+static gboolean idleTimerSourceDispatch(GSource *source, GSourceFunc, gpointer)
-+{
-+    GTimerSource *timerSource = reinterpret_cast<GIdleTimerSource *>(source)->timerSource;
-+    (void) timerSourceDispatch(&timerSource->source, 0, 0);
-+    return true;
-+}
-+
-+static GSourceFuncs idleTimerSourceFuncs = {
-+    idleTimerSourcePrepare,
-+    idleTimerSourceCheck,
-+    idleTimerSourceDispatch,
-+    NULL,
-+    NULL,
-+    NULL
-+};
-+
- struct GPostEventSource
- {
-     GSource source;
-@@ -235,14 +301,15 @@ QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(GMainContext *context)
-         g_main_context_ref(mainContext);
-     } else {
-         QCoreApplication *app = QCoreApplication::instance();
--      if (app && QThread::currentThread() == app->thread()) {
--          mainContext = g_main_context_default();
--          g_main_context_ref(mainContext);
--      } else {
--          mainContext = g_main_context_new();
--      }
-+        if (app && QThread::currentThread() == app->thread()) {
-+            mainContext = g_main_context_default();
-+            g_main_context_ref(mainContext);
-+        } else {
-+            mainContext = g_main_context_new();
-+        }
-     }
-+    // setup post event source
-     postEventSource = reinterpret_cast<GPostEventSource *>(g_source_new(&postEventSourceFuncs,
-                                                                         sizeof(GPostEventSource)));
-     postEventSource->serialNumber = 1;
-@@ -257,14 +324,21 @@ QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(GMainContext *context)
-     g_source_set_can_recurse(&socketNotifierSource->source, true);
-     g_source_attach(&socketNotifierSource->source, mainContext);
--    // setup timerSource
-+    // setup normal and idle timer sources
-     timerSource = reinterpret_cast<GTimerSource *>(g_source_new(&timerSourceFuncs,
-                                                                 sizeof(GTimerSource)));
-     (void) new (&timerSource->timerList) QTimerInfoList();
-     timerSource->processEventsFlags = QEventLoop::AllEvents;
-+    timerSource->runWithIdlePriority = false;
-     g_source_set_can_recurse(&timerSource->source, true);
--    g_source_set_priority(&timerSource->source, G_PRIORITY_DEFAULT_IDLE);
-     g_source_attach(&timerSource->source, mainContext);
-+
-+    idleTimerSource = reinterpret_cast<GIdleTimerSource *>(g_source_new(&idleTimerSourceFuncs,
-+                                                                        sizeof(GIdleTimerSource)));
-+    idleTimerSource->timerSource = timerSource;
-+    g_source_set_can_recurse(&idleTimerSource->source, true);
-+    g_source_set_priority(&idleTimerSource->source, G_PRIORITY_DEFAULT_IDLE);
-+    g_source_attach(&idleTimerSource->source, mainContext);
- }
- QEventDispatcherGlib::QEventDispatcherGlib(QObject *parent)
-@@ -272,12 +346,9 @@ QEventDispatcherGlib::QEventDispatcherGlib(QObject *parent)
- {
- }
--QEventDispatcherGlib::QEventDispatcherGlib(GMainContext *mainContext,
--                                         QObject *parent)
--    : QAbstractEventDispatcher(*(new QEventDispatcherGlibPrivate(mainContext)),
--                             parent)
--{
--}
-+QEventDispatcherGlib::QEventDispatcherGlib(GMainContext *mainContext, QObject *parent)
-+    : QAbstractEventDispatcher(*(new QEventDispatcherGlibPrivate(mainContext)), parent)
-+{ }
- QEventDispatcherGlib::~QEventDispatcherGlib()
- {
-@@ -289,6 +360,9 @@ QEventDispatcherGlib::~QEventDispatcherGlib()
-     g_source_destroy(&d->timerSource->source);
-     g_source_unref(&d->timerSource->source);
-     d->timerSource = 0;
-+    g_source_destroy(&d->idleTimerSource->source);
-+    g_source_unref(&d->idleTimerSource->source);
-+    d->idleTimerSource = 0;
-     // destroy socket notifier source
-     for (int i = 0; i < d->socketNotifierSource->pollfds.count(); ++i) {
-@@ -324,11 +398,16 @@ bool QEventDispatcherGlib::processEvents(QEventLoop::ProcessEventsFlags flags)
-     // tell postEventSourcePrepare() and timerSource about any new flags
-     QEventLoop::ProcessEventsFlags savedFlags = d->timerSource->processEventsFlags;
-     d->timerSource->processEventsFlags = flags;
--    
-+
-+    if (!(flags & QEventLoop::EventLoopExec)) {
-+        // force timers to be sent at normal priority
-+        d->timerSource->runWithIdlePriority = false;
-+    }
-+
-     bool result = g_main_context_iteration(d->mainContext, canWait);
-     while (!result && canWait)
-         result = g_main_context_iteration(d->mainContext, canWait);
--    
-+
-     d->timerSource->processEventsFlags = savedFlags;
-     if (canWait)
-diff --git a/src/corelib/kernel/qeventdispatcher_glib_p.h b/src/corelib/kernel/qeventdispatcher_glib_p.h
-index eb7fb75..4103aa3 100644
---- a/src/corelib/kernel/qeventdispatcher_glib_p.h
-+++ b/src/corelib/kernel/qeventdispatcher_glib_p.h
-@@ -98,6 +98,7 @@ protected:
- struct GPostEventSource;
- struct GSocketNotifierSource;
- struct GTimerSource;
-+struct GIdleTimerSource;
- class Q_CORE_EXPORT QEventDispatcherGlibPrivate : public QAbstractEventDispatcherPrivate
- {
-@@ -108,6 +109,7 @@ public:
-     GPostEventSource *postEventSource;
-     GSocketNotifierSource *socketNotifierSource;
-     GTimerSource *timerSource;
-+    GIdleTimerSource *idleTimerSource;
- };
- QT_END_NAMESPACE
-diff --git a/src/corelib/kernel/qeventdispatcher_unix.cpp b/src/corelib/kernel/qeventdispatcher_unix.cpp
-index 897bb49..903b0eb 100644
---- a/src/corelib/kernel/qeventdispatcher_unix.cpp
-+++ b/src/corelib/kernel/qeventdispatcher_unix.cpp
-@@ -423,10 +423,10 @@ bool QTimerInfoList::timerWait(timeval &tm)
-     // Find first waiting timer not already active
-     QTimerInfo *t = 0;
-     for (QTimerInfoList::const_iterator it = constBegin(); it != constEnd(); ++it) {
--      if (!(*it)->inTimerEvent) {
--          t = *it;
--          break;
--      }
-+        if (!(*it)->inTimerEvent) {
-+            t = *it;
-+            break;
-+        }
-     }
-     if (!t)
 diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
-index 1ed0332..089ddfc 100644
+index 2e2a0f4..239de2d 100644
 --- a/src/corelib/kernel/qobject.cpp
 +++ b/src/corelib/kernel/qobject.cpp
-@@ -986,8 +986,16 @@ void QObject::setObjectName(const QString &name)
- {
-     Q_D(QObject);
-     d->objectName = name;
+@@ -1101,8 +1101,18 @@
+     if (objectNameChanged) 
+         d->declarativeData->objectNameChanged(d->declarativeData, this);
++
 +#if defined(Q_WS_X11)
 +    d->checkWindowRole();
 +#endif
++
  }
  
 +#if defined(Q_WS_X11)
@@ -738,708 +404,47 @@ index 1ed0332..089ddfc 100644
  #ifdef QT3_SUPPORT
  /*! \internal
 diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h
-index 6ca4dc8..1551472 100644
+index 2574b74..9f57417 100644
 --- a/src/corelib/kernel/qobject_p.h
 +++ b/src/corelib/kernel/qobject_p.h
-@@ -83,7 +83,9 @@ extern QSignalSpyCallbackSet Q_CORE_EXPORT qt_signal_spy_callback_set;
+@@ -82,7 +82,9 @@ void Q_CORE_EXPORT qt_register_signal_spy_callbacks(const QSignalSpyCallbackSet
  
- inline QObjectData::~QObjectData() {}
+ extern QSignalSpyCallbackSet Q_CORE_EXPORT qt_signal_spy_callback_set;
  
 -enum { QObjectPrivateVersion = QT_VERSION };
 +// add 0x1000000 to mark it as qt-copy version, with possible modifications
 +// in some Q*Private class
 +enum { QObjectPrivateVersion = QT_VERSION + 0x1000000 };
  
- class Q_CORE_EXPORT QObjectPrivate : public QObjectData
+ class Q_CORE_EXPORT QAbstractDeclarativeData
  {
-@@ -144,6 +146,9 @@ public:
-     mutable quint32 connectedSignals;
-     QString objectName;
+@@ -155,6 +157,9 @@ public:
+ #ifdef QT3_SUPPORT
+     void sendPendingChildInsertedEvents();
+ #endif
 +#if defined(Q_WS_X11)
 +    virtual void checkWindowRole();
 +#endif
  
-     // Note: you must hold the signalSlotLock() before accessing the lists below or calling the functions
-     struct Connection
-diff --git a/src/dbus/qdbusinternalfilters.cpp b/src/dbus/qdbusinternalfilters.cpp
-index 828e427..8bbdd7b 100644
---- a/src/dbus/qdbusinternalfilters.cpp
-+++ b/src/dbus/qdbusinternalfilters.cpp
-@@ -274,9 +274,23 @@ QDBusMessage qDBusPropertySet(const QDBusConnectionPrivate::ObjectTreeNode &node
-             QDBusAdaptorConnector::AdaptorMap::ConstIterator it;
-             it = qLowerBound(connector->adaptors.constBegin(), connector->adaptors.constEnd(),
-                              interface_name);
--            if (it != connector->adaptors.end() && interface_name == QLatin1String(it->interface))
-+            if (it != connector->adaptors.end() && interface_name == QLatin1String(it->interface)) {
-+                if (value.userType() == qMetaTypeId<QDBusArgument>()) {
-+                    QDBusArgument valueArg = qvariant_cast<QDBusArgument>(value);
-+                    if (valueArg.currentType() != -1) {
-+                        int mid = it->adaptor->metaObject()->property(it->adaptor->metaObject()->indexOfProperty(property_name)).userType();
-+                        void *null = 0;
-+                        QVariant valueStore(mid, null);
-+                        QDBusMetaType::demarshall(valueArg, mid, valueStore.data());
-+
-+                        if (it->adaptor->setProperty(property_name, valueStore))
-+                            return msg.createReply();
-+                    }
-+                }
-+
-                 if (it->adaptor->setProperty(property_name, value))
-                     return msg.createReply();
-+            }
-         }
-     }
-diff --git a/src/gui/image/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp
-index 50088df..c1bc794 100644
---- a/src/gui/image/qnativeimage.cpp
-+++ b/src/gui/image/qnativeimage.cpp
-@@ -144,7 +144,7 @@ QImage::Format QNativeImage::systemFormat()
- #elif defined(Q_WS_X11) && !defined(QT_NO_MITSHM)
- QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /* isTextBuffer */, QWidget *widget)
--    : xshmimg(0), xshmpm(0)
-+    : xshmimg(0)
- {
-     if (!X11->use_mitshm) {
-         image = QImage(width, height, format);
-@@ -195,11 +195,6 @@ QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /*
-             shmctl(xshminfo.shmid, IPC_RMID, 0);
-         return;
-     }
--    xshmpm = XShmCreatePixmap(X11->display, DefaultRootWindow(X11->display), xshmimg->data,
--                              &xshminfo, width, height, dd);
--    if (!xshmpm) {
--        qWarning() << "QNativeImage: Unable to create shared Pixmap.";
--    }
- }
-@@ -208,10 +203,6 @@ QNativeImage::~QNativeImage()
-     if (!xshmimg)
-         return;
--    if (xshmpm) {
--        XFreePixmap(X11->display, xshmpm);
--        xshmpm = 0;
--    }
-     XShmDetach(X11->display, &xshminfo);
-     xshmimg->data = 0;
-     XDestroyImage(xshmimg);
-diff --git a/src/gui/image/qnativeimage_p.h b/src/gui/image/qnativeimage_p.h
-index 0f5dc8b..cd3cc3b 100644
---- a/src/gui/image/qnativeimage_p.h
-+++ b/src/gui/image/qnativeimage_p.h
-@@ -90,7 +90,6 @@ public:
- #elif defined(Q_WS_X11) && !defined(QT_NO_MITSHM)
-     XImage *xshmimg;
--    Pixmap xshmpm;
-     XShmSegmentInfo xshminfo;
- #elif defined(Q_WS_MAC)
-diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
-index a69ab6a..93f4fd8 100644
---- a/src/gui/itemviews/qtreeview.cpp
-+++ b/src/gui/itemviews/qtreeview.cpp
-@@ -3577,7 +3577,7 @@ QList<QPair<int, int> > QTreeViewPrivate::columnRanges(const QModelIndex &topInd
-     current.first = -2; // -1 is not enough because -1+1 = 0
-     current.second = -2;
-     foreach (int logicalColumn, logicalIndexes) {
--        if (current.second + 1 != logicalColumn) {
-+        if (current.second + 1 != logicalColumn && !header->isSectionHidden(current.second + 1)) {
-             if (current.first != -2) {
-                 //let's save the current one
-                 ret += current;
-diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
-index 343c71b..45e2b49 100644
---- a/src/gui/kernel/qapplication_x11.cpp
-+++ b/src/gui/kernel/qapplication_x11.cpp
-@@ -1959,7 +1959,7 @@ void qt_init(QApplicationPrivate *priv, int,
-             bool local = displayName.isEmpty() || displayName.lastIndexOf(QLatin1Char(':')) == 0;
-             if (local && (qgetenv("QT_X11_NO_MITSHM").toInt() == 0)) {
-                 Visual *defaultVisual = DefaultVisual(X11->display, DefaultScreen(X11->display));
--                X11->use_mitshm = mitshm_pixmaps && ((defaultVisual->red_mask == 0xff0000
-+                X11->use_mitshm = ((defaultVisual->red_mask == 0xff0000
-                                                       || defaultVisual->red_mask == 0xf800)
-                                                      && (defaultVisual->green_mask == 0xff00
-                                                          || defaultVisual->green_mask == 0x7e0)
-diff --git a/src/gui/kernel/qkeymapper_x11.cpp b/src/gui/kernel/qkeymapper_x11.cpp
-index 8daa881..37d12c2 100644
---- a/src/gui/kernel/qkeymapper_x11.cpp
-+++ b/src/gui/kernel/qkeymapper_x11.cpp
-@@ -714,47 +714,144 @@ extern bool qt_sm_blockUserInput;
- #define XK_KP_Delete            0xFF9F
- #endif
--// the next lines are taken from XFree > 4.0 (X11/XF86keysyms.h), defining some special
-+// the next lines are taken on 10/2009 from X.org (X11/XF86keysym.h), defining some special
- // multimedia keys. They are included here as not every system has them.
--#define XF86XK_Standby          0x1008FF10
--#define XF86XK_AudioLowerVolume 0x1008FF11
--#define XF86XK_AudioMute        0x1008FF12
--#define XF86XK_AudioRaiseVolume 0x1008FF13
--#define XF86XK_AudioPlay        0x1008FF14
--#define XF86XK_AudioStop        0x1008FF15
--#define XF86XK_AudioPrev        0x1008FF16
--#define XF86XK_AudioNext        0x1008FF17
--#define XF86XK_HomePage         0x1008FF18
--#define XF86XK_Calculator       0x1008FF1D
--#define XF86XK_Mail             0x1008FF19
--#define XF86XK_Start            0x1008FF1A
--#define XF86XK_Search           0x1008FF1B
--#define XF86XK_AudioRecord      0x1008FF1C
--#define XF86XK_Back             0x1008FF26
--#define XF86XK_Forward          0x1008FF27
--#define XF86XK_Stop             0x1008FF28
--#define XF86XK_Refresh          0x1008FF29
--#define XF86XK_Favorites        0x1008FF30
--#define XF86XK_AudioPause       0x1008FF31
--#define XF86XK_AudioMedia       0x1008FF32
--#define XF86XK_MyComputer       0x1008FF33
--#define XF86XK_OpenURL          0x1008FF38
--#define XF86XK_Launch0          0x1008FF40
--#define XF86XK_Launch1          0x1008FF41
--#define XF86XK_Launch2          0x1008FF42
--#define XF86XK_Launch3          0x1008FF43
--#define XF86XK_Launch4          0x1008FF44
--#define XF86XK_Launch5          0x1008FF45
--#define XF86XK_Launch6          0x1008FF46
--#define XF86XK_Launch7          0x1008FF47
--#define XF86XK_Launch8          0x1008FF48
--#define XF86XK_Launch9          0x1008FF49
--#define XF86XK_LaunchA          0x1008FF4A
--#define XF86XK_LaunchB          0x1008FF4B
--#define XF86XK_LaunchC          0x1008FF4C
--#define XF86XK_LaunchD          0x1008FF4D
--#define XF86XK_LaunchE          0x1008FF4E
--#define XF86XK_LaunchF          0x1008FF4F
-+#define XF86XK_MonBrightnessUp     0x1008FF02
-+#define XF86XK_MonBrightnessDown   0x1008FF03
-+#define XF86XK_KbdLightOnOff       0x1008FF04
-+#define XF86XK_KbdBrightnessUp     0x1008FF05
-+#define XF86XK_KbdBrightnessDown   0x1008FF06
-+#define XF86XK_Standby             0x1008FF10
-+#define XF86XK_AudioLowerVolume          0x1008FF11
-+#define XF86XK_AudioMute           0x1008FF12
-+#define XF86XK_AudioRaiseVolume    0x1008FF13
-+#define XF86XK_AudioPlay           0x1008FF14
-+#define XF86XK_AudioStop           0x1008FF15
-+#define XF86XK_AudioPrev           0x1008FF16
-+#define XF86XK_AudioNext           0x1008FF17
-+#define XF86XK_HomePage            0x1008FF18
-+#define XF86XK_Mail                0x1008FF19
-+#define XF86XK_Start               0x1008FF1A
-+#define XF86XK_Search              0x1008FF1B
-+#define XF86XK_AudioRecord         0x1008FF1C
-+#define XF86XK_Calculator          0x1008FF1D
-+#define XF86XK_Memo                0x1008FF1E
-+#define XF86XK_ToDoList            0x1008FF1F
-+#define XF86XK_Calendar            0x1008FF20
-+#define XF86XK_PowerDown           0x1008FF21
-+#define XF86XK_ContrastAdjust      0x1008FF22
-+#define XF86XK_Back                0x1008FF26
-+#define XF86XK_Forward             0x1008FF27
-+#define XF86XK_Stop                0x1008FF28
-+#define XF86XK_Refresh             0x1008FF29
-+#define XF86XK_PowerOff            0x1008FF2A
-+#define XF86XK_WakeUp              0x1008FF2B
-+#define XF86XK_Eject               0x1008FF2C
-+#define XF86XK_ScreenSaver         0x1008FF2D
-+#define XF86XK_WWW                 0x1008FF2E
-+#define XF86XK_Sleep               0x1008FF2F
-+#define XF86XK_Favorites           0x1008FF30
-+#define XF86XK_AudioPause          0x1008FF31
-+#define XF86XK_AudioMedia          0x1008FF32
-+#define XF86XK_MyComputer          0x1008FF33
-+#define XF86XK_LightBulb           0x1008FF35
-+#define XF86XK_Shop                0x1008FF36
-+#define XF86XK_History             0x1008FF37
-+#define XF86XK_OpenURL             0x1008FF38
-+#define XF86XK_AddFavorite         0x1008FF39
-+#define XF86XK_HotLinks            0x1008FF3A
-+#define XF86XK_BrightnessAdjust    0x1008FF3B
-+#define XF86XK_Finance             0x1008FF3C
-+#define XF86XK_Community           0x1008FF3D
-+#define XF86XK_AudioRewind         0x1008FF3E
-+#define XF86XK_BackForward         0x1008FF3F
-+#define XF86XK_Launch0             0x1008FF40
-+#define XF86XK_Launch1             0x1008FF41
-+#define XF86XK_Launch2             0x1008FF42
-+#define XF86XK_Launch3             0x1008FF43
-+#define XF86XK_Launch4             0x1008FF44
-+#define XF86XK_Launch5             0x1008FF45
-+#define XF86XK_Launch6             0x1008FF46
-+#define XF86XK_Launch7             0x1008FF47
-+#define XF86XK_Launch8             0x1008FF48
-+#define XF86XK_Launch9             0x1008FF49
-+#define XF86XK_LaunchA             0x1008FF4A
-+#define XF86XK_LaunchB             0x1008FF4B
-+#define XF86XK_LaunchC             0x1008FF4C
-+#define XF86XK_LaunchD             0x1008FF4D
-+#define XF86XK_LaunchE             0x1008FF4E
-+#define XF86XK_LaunchF             0x1008FF4F
-+#define XF86XK_ApplicationLeft     0x1008FF50
-+#define XF86XK_ApplicationRight    0x1008FF51
-+#define XF86XK_Book                0x1008FF52
-+#define XF86XK_CD                  0x1008FF53
-+#define XF86XK_Calculater          0x1008FF54
-+#define XF86XK_Clear               0x1008FF55
-+#define XF86XK_ClearGrab           0x1008FE21
-+#define XF86XK_Close               0x1008FF56
-+#define XF86XK_Copy                0x1008FF57
-+#define XF86XK_Cut                 0x1008FF58
-+#define XF86XK_Display             0x1008FF59
-+#define XF86XK_DOS                 0x1008FF5A
-+#define XF86XK_Documents           0x1008FF5B
-+#define XF86XK_Excel               0x1008FF5C
-+#define XF86XK_Explorer            0x1008FF5D
-+#define XF86XK_Game                0x1008FF5E
-+#define XF86XK_Go                  0x1008FF5F
-+#define XF86XK_iTouch              0x1008FF60
-+#define XF86XK_LogOff              0x1008FF61
-+#define XF86XK_Market              0x1008FF62
-+#define XF86XK_Meeting             0x1008FF63
-+#define XF86XK_MenuKB              0x1008FF65
-+#define XF86XK_MenuPB              0x1008FF66
-+#define XF86XK_MySites             0x1008FF67
-+#define XF86XK_News                0x1008FF69
-+#define XF86XK_OfficeHome          0x1008FF6A
-+#define XF86XK_Option              0x1008FF6C
-+#define XF86XK_Paste               0x1008FF6D
-+#define XF86XK_Phone               0x1008FF6E
-+#define XF86XK_Reply               0x1008FF72
-+#define XF86XK_Reload              0x1008FF73
-+#define XF86XK_RotateWindows       0x1008FF74
-+#define XF86XK_RotationPB          0x1008FF75
-+#define XF86XK_RotationKB          0x1008FF76
-+#define XF86XK_Save                0x1008FF77
-+#define XF86XK_Send                0x1008FF7B
-+#define XF86XK_Spell               0x1008FF7C
-+#define XF86XK_SplitScreen         0x1008FF7D
-+#define XF86XK_Support             0x1008FF7E
-+#define XF86XK_TaskPane            0x1008FF7F
-+#define XF86XK_Terminal            0x1008FF80
-+#define XF86XK_Tools               0x1008FF81
-+#define XF86XK_Travel              0x1008FF82
-+#define XF86XK_Video               0x1008FF87
-+#define XF86XK_Word                0x1008FF89
-+#define XF86XK_Xfer                0x1008FF8A
-+#define XF86XK_ZoomIn              0x1008FF8B
-+#define XF86XK_ZoomOut             0x1008FF8C
-+#define XF86XK_Away                0x1008FF8D
-+#define XF86XK_Messenger           0x1008FF8E
-+#define XF86XK_WebCam              0x1008FF8F
-+#define XF86XK_MailForward         0x1008FF90
-+#define XF86XK_Pictures            0x1008FF91
-+#define XF86XK_Music               0x1008FF92
-+#define XF86XK_Battery             0x1008FF93
-+#define XF86XK_Bluetooth           0x1008FF94
-+#define XF86XK_WLAN                0x1008FF95
-+#define XF86XK_UWB                 0x1008FF96
-+#define XF86XK_AudioForward        0x1008FF97
-+#define XF86XK_AudioRepeat         0x1008FF98
-+#define XF86XK_AudioRandomPlay     0x1008FF99
-+#define XF86XK_Subtitle            0x1008FF9A
-+#define XF86XK_AudioCycleTrack     0x1008FF9B
-+#define XF86XK_Time                0x1008FF9F
-+#define XF86XK_Select              0x1008FFA0
-+#define XF86XK_View                0x1008FFA1
-+#define XF86XK_TopMenu             0x1008FFA2
-+#define XF86XK_Suspend             0x1008FFA7
-+#define XF86XK_Hibernate           0x1008FFA8
-+
-+
- // end of XF86keysyms.h
- // Special keys used by Qtopia, mapped into the X11 private keypad range.
-@@ -942,10 +1039,8 @@ static const unsigned int KeyTbl[] = {
-     XK_dead_hook,               Qt::Key_Dead_Hook,
-     XK_dead_horn,               Qt::Key_Dead_Horn,
--    // Special multimedia keys
--    // currently only tested with MS internet keyboard
--
--    // browsing keys
-+    // Special keys from X.org - This include multimedia keys,
-+      // wireless/bluetooth/uwb keys, special launcher keys, etc.
-     XF86XK_Back,                Qt::Key_Back,
-     XF86XK_Forward,             Qt::Key_Forward,
-     XF86XK_Stop,                Qt::Key_Stop,
-@@ -955,8 +1050,6 @@ static const unsigned int KeyTbl[] = {
-     XF86XK_OpenURL,             Qt::Key_OpenUrl,
-     XF86XK_HomePage,            Qt::Key_HomePage,
-     XF86XK_Search,              Qt::Key_Search,
--
--    // media keys
-     XF86XK_AudioLowerVolume,    Qt::Key_VolumeDown,
-     XF86XK_AudioMute,           Qt::Key_VolumeMute,
-     XF86XK_AudioRaiseVolume,    Qt::Key_VolumeUp,
-@@ -965,13 +1058,106 @@ static const unsigned int KeyTbl[] = {
-     XF86XK_AudioPrev,           Qt::Key_MediaPrevious,
-     XF86XK_AudioNext,           Qt::Key_MediaNext,
-     XF86XK_AudioRecord,         Qt::Key_MediaRecord,
--
--    // launch keys
-     XF86XK_Mail,                Qt::Key_LaunchMail,
-     XF86XK_MyComputer,          Qt::Key_Launch0,
--    XF86XK_Calculator,          Qt::Key_Launch1,
-+    XF86XK_Calculator,          Qt::Key_Calculator,
-+    XF86XK_Memo,                Qt::Key_Memo,
-+    XF86XK_ToDoList,            Qt::Key_ToDoList,
-+    XF86XK_Calendar,            Qt::Key_Calendar,
-+    XF86XK_PowerDown,           Qt::Key_PowerDown,
-+    XF86XK_ContrastAdjust,      Qt::Key_ContrastAdjust,
-     XF86XK_Standby,             Qt::Key_Standby,
--
-+    XF86XK_MonBrightnessUp,     Qt::Key_MonBrightnessUp,
-+    XF86XK_MonBrightnessDown,   Qt::Key_MonBrightnessDown,
-+    XF86XK_KbdLightOnOff,       Qt::Key_KeyboardLightOnOff,
-+    XF86XK_KbdBrightnessUp,     Qt::Key_KeyboardBrightnessUp,
-+    XF86XK_KbdBrightnessDown,   Qt::Key_KeyboardBrightnessDown,
-+    XF86XK_PowerOff,            Qt::Key_PowerOff,
-+    XF86XK_WakeUp,              Qt::Key_WakeUp,
-+    XF86XK_Eject,               Qt::Key_Eject,
-+    XF86XK_ScreenSaver,         Qt::Key_ScreenSaver,
-+    XF86XK_WWW,                 Qt::Key_WWW,
-+    XF86XK_Sleep,               Qt::Key_Sleep,
-+    XF86XK_LightBulb,           Qt::Key_LightBulb,
-+    XF86XK_Shop,                Qt::Key_Shop,
-+    XF86XK_History,             Qt::Key_History,
-+    XF86XK_AddFavorite,         Qt::Key_AddFavorite,
-+    XF86XK_HotLinks,            Qt::Key_HotLinks,
-+    XF86XK_BrightnessAdjust,    Qt::Key_BrightnessAdjust,
-+    XF86XK_Finance,             Qt::Key_Finance,
-+    XF86XK_Community,           Qt::Key_Community,
-+    XF86XK_AudioRewind,         Qt::Key_AudioRewind,
-+    XF86XK_BackForward,         Qt::Key_BackForward,
-+    XF86XK_ApplicationLeft,     Qt::Key_ApplicationLeft,
-+    XF86XK_ApplicationRight,    Qt::Key_ApplicationRight,
-+    XF86XK_Book,                Qt::Key_Book,
-+    XF86XK_CD,                  Qt::Key_CD,
-+    XF86XK_Calculater,          Qt::Key_Calculator,
-+    XF86XK_Clear,               Qt::Key_Clear,
-+    XF86XK_ClearGrab,           Qt::Key_ClearGrab,
-+    XF86XK_Close,               Qt::Key_Close,
-+    XF86XK_Copy,                Qt::Key_Copy,
-+    XF86XK_Cut,                 Qt::Key_Cut,
-+    XF86XK_Display,             Qt::Key_Display,
-+    XF86XK_DOS,                 Qt::Key_DOS,
-+    XF86XK_Documents,           Qt::Key_Documents,
-+    XF86XK_Excel,               Qt::Key_Excel,
-+    XF86XK_Explorer,            Qt::Key_Explorer,
-+    XF86XK_Game,                Qt::Key_Game,
-+    XF86XK_Go,                  Qt::Key_Go,
-+    XF86XK_iTouch,              Qt::Key_iTouch,
-+    XF86XK_LogOff,              Qt::Key_LogOff,
-+    XF86XK_Market,              Qt::Key_Market,
-+    XF86XK_Meeting,             Qt::Key_Meeting,
-+    XF86XK_MenuKB,              Qt::Key_MenuKB,
-+    XF86XK_MenuPB,              Qt::Key_MenuPB,
-+    XF86XK_MySites,             Qt::Key_MySites,
-+    XF86XK_News,                Qt::Key_News,
-+    XF86XK_OfficeHome,          Qt::Key_OfficeHome,
-+    XF86XK_Option,              Qt::Key_Option,
-+    XF86XK_Paste,               Qt::Key_Paste,
-+    XF86XK_Phone,               Qt::Key_Phone,
-+    XF86XK_Reply,               Qt::Key_Reply,
-+    XF86XK_Reload,              Qt::Key_Reload,
-+    XF86XK_RotateWindows,       Qt::Key_RotateWindows,
-+    XF86XK_RotationPB,          Qt::Key_RotationPB,
-+    XF86XK_RotationKB,          Qt::Key_RotationKB,
-+    XF86XK_Save,                Qt::Key_Save,
-+    XF86XK_Send,                Qt::Key_Send,
-+    XF86XK_Spell,               Qt::Key_Spell,
-+    XF86XK_SplitScreen,         Qt::Key_SplitScreen,
-+    XF86XK_Support,             Qt::Key_Support,
-+    XF86XK_TaskPane,            Qt::Key_TaskPane,
-+    XF86XK_Terminal,            Qt::Key_Terminal,
-+    XF86XK_Tools,               Qt::Key_Tools,
-+    XF86XK_Travel,              Qt::Key_Travel,
-+    XF86XK_Video,               Qt::Key_Video,
-+    XF86XK_Word,                Qt::Key_Word,
-+    XF86XK_Xfer,                Qt::Key_Xfer,
-+    XF86XK_ZoomIn,              Qt::Key_ZoomIn,
-+    XF86XK_ZoomOut,             Qt::Key_ZoomOut,
-+    XF86XK_Away,                Qt::Key_Away,
-+    XF86XK_Messenger,           Qt::Key_Messenger,
-+    XF86XK_WebCam,              Qt::Key_WebCam,
-+    XF86XK_MailForward,         Qt::Key_MailForward,
-+    XF86XK_Pictures,            Qt::Key_Pictures,
-+    XF86XK_Music,               Qt::Key_Music,
-+    XF86XK_Battery,             Qt::Key_Battery,
-+    XF86XK_Bluetooth,           Qt::Key_Bluetooth,
-+    XF86XK_WLAN,                Qt::Key_WLAN,
-+    XF86XK_UWB,                 Qt::Key_UWB,
-+    XF86XK_AudioForward,        Qt::Key_AudioForward,
-+    XF86XK_AudioRepeat,         Qt::Key_AudioRepeat,
-+    XF86XK_AudioRandomPlay,     Qt::Key_AudioRandomPlay,
-+    XF86XK_Subtitle,            Qt::Key_Subtitle,
-+    XF86XK_AudioCycleTrack,     Qt::Key_AudioCycleTrack,
-+    XF86XK_Time,                Qt::Key_Time,
-+    XF86XK_Select,              Qt::Key_Select,
-+    XF86XK_View,                Qt::Key_View,
-+    XF86XK_TopMenu,             Qt::Key_TopMenu,
-+    XF86XK_Bluetooth,           Qt::Key_Bluetooth,
-+    XF86XK_Suspend,             Qt::Key_Suspend,
-+    XF86XK_Hibernate,           Qt::Key_Hibernate,
-     XF86XK_Launch0,             Qt::Key_Launch2,
-     XF86XK_Launch1,             Qt::Key_Launch3,
-     XF86XK_Launch2,             Qt::Key_Launch4,
-diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
-index 03de530..97591a4 100644
---- a/src/gui/kernel/qkeysequence.cpp
-+++ b/src/gui/kernel/qkeysequence.cpp
-@@ -396,47 +396,139 @@ static const struct {
-     { Qt::Key_Menu,         QT_TRANSLATE_NOOP("QShortcut", "Menu") },
-     { Qt::Key_Help,         QT_TRANSLATE_NOOP("QShortcut", "Help") },
--    // Multimedia keys
--    { Qt::Key_Back,         QT_TRANSLATE_NOOP("QShortcut", "Back") },
--    { Qt::Key_Forward,      QT_TRANSLATE_NOOP("QShortcut", "Forward") },
--    { Qt::Key_Stop,         QT_TRANSLATE_NOOP("QShortcut", "Stop") },
--    { Qt::Key_Refresh,      QT_TRANSLATE_NOOP("QShortcut", "Refresh") },
--    { Qt::Key_VolumeDown,   QT_TRANSLATE_NOOP("QShortcut", "Volume Down") },
--    { Qt::Key_VolumeMute,   QT_TRANSLATE_NOOP("QShortcut", "Volume Mute") },
--    { Qt::Key_VolumeUp,     QT_TRANSLATE_NOOP("QShortcut", "Volume Up") },
--    { Qt::Key_BassBoost,    QT_TRANSLATE_NOOP("QShortcut", "Bass Boost") },
--    { Qt::Key_BassUp,       QT_TRANSLATE_NOOP("QShortcut", "Bass Up") },
--    { Qt::Key_BassDown,     QT_TRANSLATE_NOOP("QShortcut", "Bass Down") },
--    { Qt::Key_TrebleUp,     QT_TRANSLATE_NOOP("QShortcut", "Treble Up") },
--    { Qt::Key_TrebleDown,   QT_TRANSLATE_NOOP("QShortcut", "Treble Down") },
--    { Qt::Key_MediaPlay,    QT_TRANSLATE_NOOP("QShortcut", "Media Play") },
--    { Qt::Key_MediaStop,    QT_TRANSLATE_NOOP("QShortcut", "Media Stop") },
--    { Qt::Key_MediaPrevious,QT_TRANSLATE_NOOP("QShortcut", "Media Previous") },
--    { Qt::Key_MediaNext,    QT_TRANSLATE_NOOP("QShortcut", "Media Next") },
--    { Qt::Key_MediaRecord,  QT_TRANSLATE_NOOP("QShortcut", "Media Record") },
--    { Qt::Key_HomePage,     QT_TRANSLATE_NOOP("QShortcut", "Home Page") },
--    { Qt::Key_Favorites,    QT_TRANSLATE_NOOP("QShortcut", "Favorites") },
--    { Qt::Key_Search,       QT_TRANSLATE_NOOP("QShortcut", "Search") },
--    { Qt::Key_Standby,      QT_TRANSLATE_NOOP("QShortcut", "Standby") },
--    { Qt::Key_OpenUrl,      QT_TRANSLATE_NOOP("QShortcut", "Open URL") },
--    { Qt::Key_LaunchMail,   QT_TRANSLATE_NOOP("QShortcut", "Launch Mail") },
--    { Qt::Key_LaunchMedia,  QT_TRANSLATE_NOOP("QShortcut", "Launch Media") },
--    { Qt::Key_Launch0,      QT_TRANSLATE_NOOP("QShortcut", "Launch (0)") },
--    { Qt::Key_Launch1,      QT_TRANSLATE_NOOP("QShortcut", "Launch (1)") },
--    { Qt::Key_Launch2,      QT_TRANSLATE_NOOP("QShortcut", "Launch (2)") },
--    { Qt::Key_Launch3,      QT_TRANSLATE_NOOP("QShortcut", "Launch (3)") },
--    { Qt::Key_Launch4,      QT_TRANSLATE_NOOP("QShortcut", "Launch (4)") },
--    { Qt::Key_Launch5,      QT_TRANSLATE_NOOP("QShortcut", "Launch (5)") },
--    { Qt::Key_Launch6,      QT_TRANSLATE_NOOP("QShortcut", "Launch (6)") },
--    { Qt::Key_Launch7,      QT_TRANSLATE_NOOP("QShortcut", "Launch (7)") },
--    { Qt::Key_Launch8,      QT_TRANSLATE_NOOP("QShortcut", "Launch (8)") },
--    { Qt::Key_Launch9,      QT_TRANSLATE_NOOP("QShortcut", "Launch (9)") },
--    { Qt::Key_LaunchA,      QT_TRANSLATE_NOOP("QShortcut", "Launch (A)") },
--    { Qt::Key_LaunchB,      QT_TRANSLATE_NOOP("QShortcut", "Launch (B)") },
--    { Qt::Key_LaunchC,      QT_TRANSLATE_NOOP("QShortcut", "Launch (C)") },
--    { Qt::Key_LaunchD,      QT_TRANSLATE_NOOP("QShortcut", "Launch (D)") },
--    { Qt::Key_LaunchE,      QT_TRANSLATE_NOOP("QShortcut", "Launch (E)") },
--    { Qt::Key_LaunchF,      QT_TRANSLATE_NOOP("QShortcut", "Launch (F)") },
-+    // Special keys
-+    // Includes multimedia, launcher, lan keys ( bluetooth, wireless )
-+    // window navigation
-+    { Qt::Key_Back,                       QT_TRANSLATE_NOOP("QShortcut", "Back") },
-+    { Qt::Key_Forward,                    QT_TRANSLATE_NOOP("QShortcut", "Forward") },
-+    { Qt::Key_Stop,                       QT_TRANSLATE_NOOP("QShortcut", "Stop") },
-+    { Qt::Key_Refresh,                    QT_TRANSLATE_NOOP("QShortcut", "Refresh") },
-+    { Qt::Key_VolumeDown,                 QT_TRANSLATE_NOOP("QShortcut", "Volume Down") },
-+    { Qt::Key_VolumeMute,                 QT_TRANSLATE_NOOP("QShortcut", "Volume Mute") },
-+    { Qt::Key_VolumeUp,                   QT_TRANSLATE_NOOP("QShortcut", "Volume Up") },
-+    { Qt::Key_BassBoost,                  QT_TRANSLATE_NOOP("QShortcut", "Bass Boost") },
-+    { Qt::Key_BassUp,                     QT_TRANSLATE_NOOP("QShortcut", "Bass Up") },
-+    { Qt::Key_BassDown,                   QT_TRANSLATE_NOOP("QShortcut", "Bass Down") },
-+    { Qt::Key_TrebleUp,                   QT_TRANSLATE_NOOP("QShortcut", "Treble Up") },
-+    { Qt::Key_TrebleDown,                 QT_TRANSLATE_NOOP("QShortcut", "Treble Down") },
-+    { Qt::Key_MediaPlay,                  QT_TRANSLATE_NOOP("QShortcut", "Media Play") },
-+    { Qt::Key_MediaStop,                  QT_TRANSLATE_NOOP("QShortcut", "Media Stop") },
-+    { Qt::Key_MediaPrevious,              QT_TRANSLATE_NOOP("QShortcut", "Media Previous") },
-+    { Qt::Key_MediaNext,                  QT_TRANSLATE_NOOP("QShortcut", "Media Next") },
-+    { Qt::Key_MediaRecord,                QT_TRANSLATE_NOOP("QShortcut", "Media Record") },
-+    { Qt::Key_HomePage,                   QT_TRANSLATE_NOOP("QShortcut", "Home Page") },
-+    { Qt::Key_Favorites,                  QT_TRANSLATE_NOOP("QShortcut", "Favorites") },
-+    { Qt::Key_Search,                     QT_TRANSLATE_NOOP("QShortcut", "Search") },
-+    { Qt::Key_Standby,                    QT_TRANSLATE_NOOP("QShortcut", "Standby") },
-+    { Qt::Key_OpenUrl,                    QT_TRANSLATE_NOOP("QShortcut", "Open URL") },
-+    { Qt::Key_LaunchMail,                 QT_TRANSLATE_NOOP("QShortcut", "Launch Mail") },
-+    { Qt::Key_LaunchMedia,                QT_TRANSLATE_NOOP("QShortcut", "Launch Media") },
-+    { Qt::Key_Launch0,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (0)") },
-+    { Qt::Key_Launch1,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (1)") },
-+    { Qt::Key_Launch2,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (2)") },
-+    { Qt::Key_Launch3,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (3)") },
-+    { Qt::Key_Launch4,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (4)") },
-+    { Qt::Key_Launch5,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (5)") },
-+    { Qt::Key_Launch6,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (6)") },
-+    { Qt::Key_Launch7,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (7)") },
-+    { Qt::Key_Launch8,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (8)") },
-+    { Qt::Key_Launch9,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (9)") },
-+    { Qt::Key_LaunchA,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (A)") },
-+    { Qt::Key_LaunchB,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (B)") },
-+    { Qt::Key_LaunchC,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (C)") },
-+    { Qt::Key_LaunchD,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (D)") },
-+    { Qt::Key_LaunchE,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (E)") },
-+    { Qt::Key_LaunchF,                    QT_TRANSLATE_NOOP("QShortcut", "Launch (F)") },
-+    { Qt::Key_MonBrightnessUp,            QT_TRANSLATE_NOOP("QShortcut", "Monitor Brightness Up") },
-+    { Qt::Key_MonBrightnessDown,          QT_TRANSLATE_NOOP("QShortcut", "Monitor Brightness Down") },
-+    { Qt::Key_KeyboardLightOnOff,         QT_TRANSLATE_NOOP("QShortcut", "Keyboard Light On/Off") },
-+    { Qt::Key_KeyboardBrightnessUp,       QT_TRANSLATE_NOOP("QShortcut", "Keyboard Brightness Up") },
-+    { Qt::Key_KeyboardBrightnessDown,     QT_TRANSLATE_NOOP("QShortcut", "Keyboard Brightness Down") },
-+    { Qt::Key_PowerOff,                   QT_TRANSLATE_NOOP("QShortcut", "Power Off") },
-+    { Qt::Key_WakeUp,                     QT_TRANSLATE_NOOP("QShortcut", "Wake Up") },
-+    { Qt::Key_Eject,                      QT_TRANSLATE_NOOP("QShortcut", "Eject") },
-+    { Qt::Key_ScreenSaver,                QT_TRANSLATE_NOOP("QShortcut", "Screensaver") },
-+    { Qt::Key_WWW,                        QT_TRANSLATE_NOOP("QShortcut", "WWW") },
-+    { Qt::Key_Sleep,                      QT_TRANSLATE_NOOP("QShortcut", "Sleep") },
-+    { Qt::Key_LightBulb,                  QT_TRANSLATE_NOOP("QShortcut", "LightBulb") },
-+    { Qt::Key_Shop,                       QT_TRANSLATE_NOOP("QShortcut", "Shop") },
-+    { Qt::Key_History,                    QT_TRANSLATE_NOOP("QShortcut", "History") },
-+    { Qt::Key_AddFavorite,                QT_TRANSLATE_NOOP("QShortcut", "Add Favorite") },
-+    { Qt::Key_HotLinks,                   QT_TRANSLATE_NOOP("QShortcut", "Hot Links") },
-+    { Qt::Key_BrightnessAdjust,           QT_TRANSLATE_NOOP("QShortcut", "Adjust Brightness") },
-+    { Qt::Key_Finance,                    QT_TRANSLATE_NOOP("QShortcut", "Finance") },
-+    { Qt::Key_Community,                  QT_TRANSLATE_NOOP("QShortcut", "Community") },
-+    { Qt::Key_AudioRewind,                QT_TRANSLATE_NOOP("QShortcut", "Audio Rewind") },
-+    { Qt::Key_BackForward,                QT_TRANSLATE_NOOP("QShortcut", "Back Forward") },
-+    { Qt::Key_ApplicationLeft,            QT_TRANSLATE_NOOP("QShortcut", "Application Left") },
-+    { Qt::Key_ApplicationRight,           QT_TRANSLATE_NOOP("QShortcut", "Application Right") },
-+    { Qt::Key_Book,                       QT_TRANSLATE_NOOP("QShortcut", "Book") },
-+    { Qt::Key_CD,                         QT_TRANSLATE_NOOP("QShortcut", "CD") },
-+    { Qt::Key_Calculator,                 QT_TRANSLATE_NOOP("QShortcut", "Calculator") },
-+    { Qt::Key_Clear,                      QT_TRANSLATE_NOOP("QShortcut", "Clear") },
-+    { Qt::Key_ClearGrab,                  QT_TRANSLATE_NOOP("QShortcut", "Clear Grab") },
-+    { Qt::Key_Close,                      QT_TRANSLATE_NOOP("QShortcut", "Close") },
-+    { Qt::Key_Copy,                       QT_TRANSLATE_NOOP("QShortcut", "Copy") },
-+    { Qt::Key_Cut,                        QT_TRANSLATE_NOOP("QShortcut", "Cut") },
-+    { Qt::Key_Display,                    QT_TRANSLATE_NOOP("QShortcut", "Display") },
-+    { Qt::Key_DOS,                        QT_TRANSLATE_NOOP("QShortcut", "DOS") },
-+    { Qt::Key_Documents,                  QT_TRANSLATE_NOOP("QShortcut", "Documents") },
-+    { Qt::Key_Excel,                      QT_TRANSLATE_NOOP("QShortcut", "Spreadsheet") },
-+    { Qt::Key_Explorer,                   QT_TRANSLATE_NOOP("QShortcut", "Browser") },
-+    { Qt::Key_Game,                       QT_TRANSLATE_NOOP("QShortcut", "Game") },
-+    { Qt::Key_Go,                         QT_TRANSLATE_NOOP("QShortcut", "Go") },
-+    { Qt::Key_iTouch,                     QT_TRANSLATE_NOOP("QShortcut", "iTouch") },
-+    { Qt::Key_LogOff,                     QT_TRANSLATE_NOOP("QShortcut", "Logoff") },
-+    { Qt::Key_Market,                     QT_TRANSLATE_NOOP("QShortcut", "Market") },
-+    { Qt::Key_Meeting,                    QT_TRANSLATE_NOOP("QShortcut", "Meeting") },
-+    { Qt::Key_MenuKB,                     QT_TRANSLATE_NOOP("QShortcut", "Keyboard Menu") },
-+    { Qt::Key_MenuPB,                     QT_TRANSLATE_NOOP("QShortcut", "Menu PB") },
-+    { Qt::Key_MySites,                    QT_TRANSLATE_NOOP("QShortcut", "My Sites") },
-+    { Qt::Key_News,                       QT_TRANSLATE_NOOP("QShortcut", "News") },
-+    { Qt::Key_OfficeHome,                 QT_TRANSLATE_NOOP("QShortcut", "Home Office") },
-+    { Qt::Key_Option,                     QT_TRANSLATE_NOOP("QShortcut", "Option") },
-+    { Qt::Key_Paste,                      QT_TRANSLATE_NOOP("QShortcut", "Paste") },
-+    { Qt::Key_Phone,                      QT_TRANSLATE_NOOP("QShortcut", "Phone") },
-+    { Qt::Key_Reply,                      QT_TRANSLATE_NOOP("QShortcut", "Reply") },
-+    { Qt::Key_Reload,                     QT_TRANSLATE_NOOP("QShortcut", "Reload") },
-+    { Qt::Key_RotateWindows,              QT_TRANSLATE_NOOP("QShortcut", "Rotate Windows") },
-+    { Qt::Key_RotationPB,                 QT_TRANSLATE_NOOP("QShortcut", "Rotation PB") },
-+    { Qt::Key_RotationKB,                 QT_TRANSLATE_NOOP("QShortcut", "Rotation KB") },
-+    { Qt::Key_Save,                       QT_TRANSLATE_NOOP("QShortcut", "Save") },
-+    { Qt::Key_Send,                       QT_TRANSLATE_NOOP("QShortcut", "Send") },
-+    { Qt::Key_Spell,                      QT_TRANSLATE_NOOP("QShortcut", "Spellchecker") },
-+    { Qt::Key_SplitScreen,                QT_TRANSLATE_NOOP("QShortcut", "Split Screen") },
-+    { Qt::Key_Support,                    QT_TRANSLATE_NOOP("QShortcut", "Support") },
-+    { Qt::Key_TaskPane,                   QT_TRANSLATE_NOOP("QShortcut", "Task Panel") },
-+    { Qt::Key_Terminal,                   QT_TRANSLATE_NOOP("QShortcut", "Terminal") },
-+    { Qt::Key_Tools,                      QT_TRANSLATE_NOOP("QShortcut", "Tools") },
-+    { Qt::Key_Travel,                     QT_TRANSLATE_NOOP("QShortcut", "Travel") },
-+    { Qt::Key_Video,                      QT_TRANSLATE_NOOP("QShortcut", "Video") },
-+    { Qt::Key_Word,                       QT_TRANSLATE_NOOP("QShortcut", "Word Processor") },
-+    { Qt::Key_Xfer,                       QT_TRANSLATE_NOOP("QShortcut", "XFer") },
-+    { Qt::Key_ZoomIn,                     QT_TRANSLATE_NOOP("QShortcut", "Zoom In") },
-+    { Qt::Key_ZoomOut,                    QT_TRANSLATE_NOOP("QShortcut", "Zoom Out") },
-+    { Qt::Key_Away,                       QT_TRANSLATE_NOOP("QShortcut", "Away") },
-+    { Qt::Key_Messenger,                  QT_TRANSLATE_NOOP("QShortcut", "Messenger") },
-+    { Qt::Key_WebCam,                     QT_TRANSLATE_NOOP("QShortcut", "WebCam") },
-+    { Qt::Key_MailForward,                QT_TRANSLATE_NOOP("QShortcut", "Mail Forward") },
-+    { Qt::Key_Pictures,                   QT_TRANSLATE_NOOP("QShortcut", "Pictures") },
-+    { Qt::Key_Music,                      QT_TRANSLATE_NOOP("QShortcut", "Music") },
-+    { Qt::Key_Battery,                    QT_TRANSLATE_NOOP("QShortcut", "Battery") },
-+    { Qt::Key_Bluetooth,                  QT_TRANSLATE_NOOP("QShortcut", "Bluetooth") },
-+    { Qt::Key_WLAN,                       QT_TRANSLATE_NOOP("QShortcut", "Wireless") },
-+    { Qt::Key_UWB,                        QT_TRANSLATE_NOOP("QShortcut", "Ultra Wide Band") },
-+    { Qt::Key_AudioForward,               QT_TRANSLATE_NOOP("QShortcut", "Audio Forward") },
-+    { Qt::Key_AudioRepeat,                QT_TRANSLATE_NOOP("QShortcut", "Audio Repeat") },
-+    { Qt::Key_AudioRandomPlay,            QT_TRANSLATE_NOOP("QShortcut", "Audio Random Play") },
-+    { Qt::Key_Subtitle,                   QT_TRANSLATE_NOOP("QShortcut", "Subtitle") },
-+    { Qt::Key_AudioCycleTrack,            QT_TRANSLATE_NOOP("QShortcut", "Audio Cycle Track") },
-+    { Qt::Key_Time,                       QT_TRANSLATE_NOOP("QShortcut", "Time") },
-+    { Qt::Key_Select,                     QT_TRANSLATE_NOOP("QShortcut", "Select") },
-+    { Qt::Key_View,                       QT_TRANSLATE_NOOP("QShortcut", "View") },
-+    { Qt::Key_TopMenu,                    QT_TRANSLATE_NOOP("QShortcut", "Top Menu") },
-+    { Qt::Key_Suspend,                    QT_TRANSLATE_NOOP("QShortcut", "Suspend") },
-+    { Qt::Key_Hibernate,                  QT_TRANSLATE_NOOP("QShortcut", "Hibernate") },
-     // --------------------------------------------------------------
-     // More consistent namings
-@@ -991,10 +1083,10 @@ int QKeySequencePrivate::decodeString(const QString &str, QKeySequence::Sequence
-     QList<QModifKeyName> modifs;
-     if (nativeText) {
--        modifs << QModifKeyName(Qt::CTRL, QShortcut::tr("Ctrl").toLower().append(QLatin1Char('+')))
--               << QModifKeyName(Qt::SHIFT, QShortcut::tr("Shift").toLower().append(QLatin1Char('+')))
--               << QModifKeyName(Qt::ALT, QShortcut::tr("Alt").toLower().append(QLatin1Char('+')))
--               << QModifKeyName(Qt::META, QShortcut::tr("Meta").toLower().append(QLatin1Char('+')));
-+        modifs << QModifKeyName(Qt::CTRL, QShortcut::tr("Ctrl", "Ctrl key, used for shortcuts").toLower().append(QLatin1Char('+')))
-+               << QModifKeyName(Qt::SHIFT, QShortcut::tr("Shift", "Shift key, used for shortcuts").toLower().append(QLatin1Char('+')))
-+               << QModifKeyName(Qt::ALT, QShortcut::tr("Alt", "Alt key, used for shortcuts").toLower().append(QLatin1Char('+')))
-+               << QModifKeyName(Qt::META, QShortcut::tr("Meta", "Meta key, used for shortcuts").toLower().append(QLatin1Char('+')));
-     }
-     modifs += *gmodifs; // Test non-translated ones last
-@@ -1086,7 +1178,7 @@ QString QKeySequence::encodeString(int key)
- static inline void addKey(QString &str, const QString &theKey, QKeySequence::SequenceFormat format)
- {
-     if (!str.isEmpty())
--        str += (format == QKeySequence::NativeText) ? QShortcut::tr("+")
-+        str += (format == QKeySequence::NativeText) ? QShortcut::tr("+", "Symbol used to concatenate keys in shortcuts")
-                                                     : QString::fromLatin1("+");
-     str += theKey;
- }
-@@ -1111,13 +1203,13 @@ QString QKeySequencePrivate::encodeString(int key, QKeySequence::SequenceFormat
-     {
-         // On other systems the order is Meta, Control, Alt, Shift
-         if ((key & Qt::META) == Qt::META)
--            s = nativeText ? QShortcut::tr("Meta") : QString::fromLatin1("Meta");
-+            s = nativeText ? QShortcut::tr("Meta", "Meta key, used for shortcuts") : QString::fromLatin1("Meta");
-         if ((key & Qt::CTRL) == Qt::CTRL)
--            addKey(s, nativeText ? QShortcut::tr("Ctrl") : QString::fromLatin1("Ctrl"), format);
-+            addKey(s, nativeText ? QShortcut::tr("Ctrl", "Ctrl key, used for shortcuts") : QString::fromLatin1("Ctrl"), format);
-         if ((key & Qt::ALT) == Qt::ALT)
--            addKey(s, nativeText ? QShortcut::tr("Alt") : QString::fromLatin1("Alt"), format);
-+            addKey(s, nativeText ? QShortcut::tr("Alt", "Alt key, used for shortcuts") : QString::fromLatin1("Alt"), format);
-         if ((key & Qt::SHIFT) == Qt::SHIFT)
--            addKey(s, nativeText ? QShortcut::tr("Shift") : QString::fromLatin1("Shift"), format);
-+            addKey(s, nativeText ? QShortcut::tr("Shift", "Shift key, used for shortcuts") : QString::fromLatin1("Shift"), format);
-     }
-@@ -1132,7 +1224,7 @@ QString QKeySequencePrivate::encodeString(int key, QKeySequence::SequenceFormat
-             p += QChar((key-0x10000)%400+0xdc00);
-         }
-     } else if (key >= Qt::Key_F1 && key <= Qt::Key_F35) {
--            p = nativeText ? QShortcut::tr("F%1").arg(key - Qt::Key_F1 + 1)
-+            p = nativeText ? QShortcut::tr("F%1", "Fx key, used for shortcuts").arg(key - Qt::Key_F1 + 1)
-                            : QString::fromLatin1("F%1").arg(key - Qt::Key_F1 + 1);
-     } else if (key) {
-         int i=0;
+     static inline Sender *setCurrentSender(QObject *receiver,
+                                     Sender *sender);
 diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h
-index 145d7bb..db943fc 100644
+index 9662a9e..3160911 100644
 --- a/src/gui/kernel/qwidget_p.h
 +++ b/src/gui/kernel/qwidget_p.h
-@@ -360,6 +360,7 @@ public:
+@@ -757,6 +757,7 @@ public:
+     static QWidget *keyboardGrabber;
  
- #if defined(Q_WS_X11)
      void setWindowRole();
 +    virtual void checkWindowRole();
      void sendStartupMessage(const char *message) const;
      void setNetWmWindowTypes();
      void x11UpdateIsOpaque();
 diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp
-index 4cc255d..927d739 100644
+index 09abb7b..5f43fee 100644
 --- a/src/gui/kernel/qwidget_x11.cpp
 +++ b/src/gui/kernel/qwidget_x11.cpp
-@@ -719,6 +719,11 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
+@@ -762,6 +762,11 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
          Q_ASSERT(id);
          XChangeWindowAttributes(dpy, id, CWOverrideRedirect | CWSaveUnder,
                                  &wsa);
@@ -1451,7 +456,7 @@ index 4cc255d..927d739 100644
      } else if (topLevel && !desktop) {        // top-level widget
          if (!X11->wm_client_leader)
              create_wm_client_leader();
-@@ -769,32 +774,40 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
+@@ -815,32 +820,40 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
          // set EWMH window types
          setNetWmWindowTypes();
  
@@ -1504,7 +509,7 @@ index 4cc255d..927d739 100644
      }
  
      if (initializeWindow && q->internalWinId()) {
-@@ -2765,6 +2778,17 @@ void QWidgetPrivate::setWindowRole()
+@@ -2943,6 +2956,17 @@ void QWidgetPrivate::setWindowRole()
                      (unsigned char *)windowRole.constData(), windowRole.length());
  }
  
@@ -1522,48 +527,11 @@ index 4cc255d..927d739 100644
  Q_GLOBAL_STATIC(QX11PaintEngine, qt_widget_paintengine)
  QPaintEngine *QWidget::paintEngine() const
  {
-diff --git a/src/gui/painting/qwindowsurface_raster.cpp b/src/gui/painting/qwindowsurface_raster.cpp
-index e077d0d..424e525 100644
---- a/src/gui/painting/qwindowsurface_raster.cpp
-+++ b/src/gui/painting/qwindowsurface_raster.cpp
-@@ -220,9 +220,16 @@ void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoi
-     QRect br = rgn.boundingRect().translated(offset);
- #ifndef QT_NO_MITSHM
--    if (d_ptr->image->xshmpm) {
--        XCopyArea(X11->display, d_ptr->image->xshmpm, widget->handle(), d_ptr->gc,
--                  br.x(), br.y(), br.width(), br.height(), wbr.x(), wbr.y());
-+    if (d_ptr->image->xshmimg && (br.width() * br.height() > 65536)) {
-+        const QImage &src = d->image->image;
-+        br = br.intersected(src.rect());
-+        // Hack to make sure we satisify the PutImage() constraints in the X server,
-+        // since the doShmPutImage() route currently forces a migration to system ram.
-+        wbr.setX(wbr.x() - br.x());
-+        br.setX(0);
-+        br.setWidth(src.width());
-+        XShmPutImage(X11->display, widget->handle(), d_ptr->gc, d_ptr->image->xshmimg,
-+                     br.x(), br.y(), wbr.x(), wbr.y(), br.width(), br.height(), False);
-         XSync(X11->display, False);
-     } else
- #endif
-diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp
-index 7793b80..5e5c7cf 100644
---- a/src/gui/widgets/qmenu.cpp
-+++ b/src/gui/widgets/qmenu.cpp
-@@ -280,7 +280,7 @@ void QMenuPrivate::calcActionRects(QMap<QAction*, QRect> &actionRects, QList<QAc
-         if (!sz.isEmpty()) {
--            max_column_width = qMax(max_column_width, sz.width());
-+            max_column_width = qMax(q->minimumWidth(), qMax(max_column_width, sz.width()));
-             //wrapping
-             if (!scroll &&
-                y+sz.height()+vmargin > dh - (q->style()->pixelMetric(QStyle::PM_MenuDesktopFrameWidth, 0, q) * 2)) {
 diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp
-index 8a87b75..0fbc116 100644
+index 954478d..7c9099d 100644
 --- a/src/gui/widgets/qtabbar.cpp
 +++ b/src/gui/widgets/qtabbar.cpp
-@@ -675,8 +675,8 @@ void QTabBarPrivate::refresh()
+@@ -723,8 +723,8 @@ void QTabBarPrivate::refresh()
          layoutTabs();
          makeVisible(currentIndex);
          q->update();
@@ -1574,7 +542,7 @@ index 8a87b75..0fbc116 100644
  
  /*!
 diff --git a/src/tools/moc/main.cpp b/src/tools/moc/main.cpp
-index d1cb82c..54537e5 100644
+index 81cdd93..f8b9a50 100644
 --- a/src/tools/moc/main.cpp
 +++ b/src/tools/moc/main.cpp
 @@ -94,7 +94,13 @@ static QByteArray combinePath(const char *infile, const char *outfile)
This page took 0.070009 seconds and 4 git commands to generate.