From 4101233f143cd6cd906b4c695a7a9fab174e3564 Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Oct 10 2009 20:14:41 +0000 Subject: sync w/devel branch (for 4.5.3) --- diff --git a/.cvsignore b/.cvsignore index 4c7bf95..870ad62 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,11 +1,10 @@ hi128-app-qt4-logo.png hi48-app-qt4-logo.png gstreamer-logo.svg -qt-x11-opensource-src-4.5.2.tar.bz2 -qt-copy-patches-20090626svn.tar.bz2 hi128-phonon-gstreamer.png hi16-phonon-gstreamer.png hi22-phonon-gstreamer.png hi32-phonon-gstreamer.png hi48-phonon-gstreamer.png hi64-phonon-gstreamer.png +qt-x11-opensource-src-4.5.3.tar.gz diff --git a/0001-This-patch-uses-object-name-as-a-fallback-for-window.patch b/0001-This-patch-uses-object-name-as-a-fallback-for-window.patch new file mode 100644 index 0000000..189e565 --- /dev/null +++ b/0001-This-patch-uses-object-name-as-a-fallback-for-window.patch @@ -0,0 +1,117 @@ +From b48e2091871516496cf0b133249fbf5326a55831 Mon Sep 17 00:00:00 2001 +From: Lubos Lunak +Date: Sat, 23 Feb 2008 16:44:52 +0100 +Subject: [PATCH 01/18] This patch uses object name as a fallback for window role if no window + role is set explicitly using setWindowRole(). Since Qt3 always used + the object name as the window role and most Qt3/KDE3 code is ported to + call setObjectName(), + +this makes the window role set in many cases (which KWin uses for window identifying). + +NOTE: It is suggested to apply patch #0209 as well when this patch is used. + +qt-bugs@ issue : 167704 +Trolltech task ID : 168283 (status: "fixed" for Qt 4.4.0, but effectively refused) +--- + src/corelib/kernel/qobject.cpp | 8 ++++++++ + src/corelib/kernel/qobject_p.h | 3 +++ + src/gui/kernel/qwidget_p.h | 1 + + src/gui/kernel/qwidget_x11.cpp | 27 +++++++++++++++++++++------ + 4 files changed, 33 insertions(+), 6 deletions(-) + +diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp +index 6487194..ef0369e 100644 +--- a/src/corelib/kernel/qobject.cpp ++++ b/src/corelib/kernel/qobject.cpp +@@ -993,8 +993,16 @@ void QObject::setObjectName(const QString &name) + { + Q_D(QObject); + d->objectName = name; ++#if defined(Q_WS_X11) ++ d->checkWindowRole(); ++#endif + } + ++#if defined(Q_WS_X11) ++void QObjectPrivate::checkWindowRole() ++{ ++} ++#endif + + #ifdef QT3_SUPPORT + /*! \internal +diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h +index 0bcccba..6ab9e10 100644 +--- a/src/corelib/kernel/qobject_p.h ++++ b/src/corelib/kernel/qobject_p.h +@@ -144,6 +144,9 @@ public: + mutable quint32 connectedSignals; + + QString objectName; ++#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/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h +index 774e390..176d6fa 100644 +--- a/src/gui/kernel/qwidget_p.h ++++ b/src/gui/kernel/qwidget_p.h +@@ -358,6 +358,7 @@ public: + + #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 79ee8c9..b56849c 100644 +--- a/src/gui/kernel/qwidget_x11.cpp ++++ b/src/gui/kernel/qwidget_x11.cpp +@@ -778,13 +778,17 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO + data.fstrut_dirty = 1; + + // declare the widget's window role ++ QByteArray windowRole; + if (QTLWExtra *topData = maybeTopData()) { +- if (!topData->role.isEmpty()) { +- QByteArray windowRole = topData->role.toUtf8(); +- XChangeProperty(dpy, id, +- ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace, +- (unsigned char *)windowRole.constData(), windowRole.length()); +- } ++ if (!topData->role.isEmpty()) ++ windowRole = topData->role.toUtf8(); ++ } ++ if (windowRole.isEmpty()) // use object name as a fallback ++ windowRole = objectName.toUtf8(); ++ if (!windowRole.isEmpty()) { ++ XChangeProperty(dpy, id, ++ ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace, ++ (unsigned char *)windowRole.constData(), windowRole.length()); + } + + // set client leader property +@@ -2768,6 +2772,17 @@ void QWidgetPrivate::setWindowRole() + (unsigned char *)windowRole.constData(), windowRole.length()); + } + ++void QWidgetPrivate::checkWindowRole() ++{ ++ Q_Q(QWidget); ++ if( !q->windowRole().isEmpty() || !q->internalWinId()) ++ return; ++ QByteArray windowRole = objectName.toUtf8(); // use as a fallback ++ XChangeProperty(X11->display, q->internalWinId(), ++ ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace, ++ (unsigned char *)windowRole.constData(), windowRole.length()); ++} ++ + Q_GLOBAL_STATIC(QX11PaintEngine, qt_widget_paintengine) + QPaintEngine *QWidget::paintEngine() const + { +-- +1.6.2.5 + diff --git a/0002-This-patch-makes-override-redirect-windows-popup-me.patch b/0002-This-patch-makes-override-redirect-windows-popup-me.patch new file mode 100644 index 0000000..a33e083 --- /dev/null +++ b/0002-This-patch-makes-override-redirect-windows-popup-me.patch @@ -0,0 +1,67 @@ +From 339e220e29ff39b86705438b4be6f90e5618d27b Mon Sep 17 00:00:00 2001 +From: Lubos Lunak +Date: Tue, 2 Oct 2007 16:08:32 +0200 +Subject: [PATCH 02/18] This patch makes override-redirect windows (popup menu, dropdown menu, + tooltip, combobox, etc.) also have more window properties like WM_CLASS, + so they can be used when compositing. + +qt-bugs@ issue : none +bugs.kde.org number : none +--- + src/gui/kernel/qwidget_x11.cpp | 21 +++++++++++++++------ + 1 files changed, 15 insertions(+), 6 deletions(-) + +diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp +index 79ee8c9..a74a849 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 + Q_ASSERT(id); + XChangeWindowAttributes(dpy, id, CWOverrideRedirect | CWSaveUnder, + &wsa); ++ XClassHint class_hint; ++ QByteArray appName = qAppName().toLatin1(); ++ class_hint.res_name = appName.data(); // application name ++ class_hint.res_class = const_cast(QX11Info::appClass()); // application class ++ XSetWMProperties(dpy, id, 0, 0, 0, 0, 0, 0, &class_hint); + } else if (topLevel && !desktop) { // top-level widget + if (!X11->wm_client_leader) + create_wm_client_leader(); +@@ -769,13 +774,21 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO + // set EWMH window types + setNetWmWindowTypes(); + ++ // when we create a toplevel widget, the frame strut should be dirty ++ data.fstrut_dirty = 1; ++ ++ } else { ++ // non-toplevel widgets don't have a frame, so no need to ++ // update the strut ++ data.fstrut_dirty = 0; ++ } ++ ++ if (initializeWindow && (popup || (topLevel && !desktop))) { // properties set on all toplevel windows + // set _NET_WM_PID + long curr_pid = getpid(); + XChangeProperty(dpy, id, ATOM(_NET_WM_PID), XA_CARDINAL, 32, PropModeReplace, + (unsigned char *) &curr_pid, 1); + +- // when we create a toplevel widget, the frame strut should be dirty +- data.fstrut_dirty = 1; + + // declare the widget's window role + if (QTLWExtra *topData = maybeTopData()) { +@@ -791,10 +804,6 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO + XChangeProperty(dpy, id, ATOM(WM_CLIENT_LEADER), + XA_WINDOW, 32, PropModeReplace, + (unsigned char *)&X11->wm_client_leader, 1); +- } else { +- // non-toplevel widgets don't have a frame, so no need to +- // update the strut +- data.fstrut_dirty = 0; + } + + if (initializeWindow && q->internalWinId()) { +-- +1.6.2.5 + diff --git a/0003-This-patch-changes-QObjectPrivateVersion-thus-preve.patch b/0003-This-patch-changes-QObjectPrivateVersion-thus-preve.patch new file mode 100644 index 0000000..d40ce77 --- /dev/null +++ b/0003-This-patch-changes-QObjectPrivateVersion-thus-preve.patch @@ -0,0 +1,37 @@ +From 68eaa07de69e873b89d4aba341c6ed1ca81f6819 Mon Sep 17 00:00:00 2001 +From: Lubos Lunak +Date: Wed, 30 Jan 2008 14:24:01 +0100 +Subject: [PATCH 03/18] This patch changes QObjectPrivateVersion, thus preventing mixing + parts of upstream Qt and qt-copy. In general it is a bad idea to mix + e.g. libQtCore from one build and libQtGui from another one, and other + qt-copy patches could make changes in Qt internal structures that could + cause problems when mixed with upstream Qt. + +This patch does not make qt-copy binary incompatible with upstream Qt. +It only further enforces using the same sources for the whole Qt build. + +qt-bugs@ issue : none +Trolltech task ID : none +bugs.kde.org number : none +--- + src/corelib/kernel/qobject_p.h | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h +index 0bcccba..88192fd 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; + + inline QObjectData::~QObjectData() {} + +-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 + { +-- +1.6.2.5 + diff --git a/0004-This-patch-adds-support-for-using-isystem-to-allow.patch b/0004-This-patch-adds-support-for-using-isystem-to-allow.patch new file mode 100644 index 0000000..daa15fd --- /dev/null +++ b/0004-This-patch-adds-support-for-using-isystem-to-allow.patch @@ -0,0 +1,56 @@ +From 86fc0d43cdcf3232ae0e4e6f4f28cf8f1a45ede5 Mon Sep 17 00:00:00 2001 +From: Benjamin Reed +Date: Tue, 19 Feb 2008 17:37:37 +0100 +Subject: [PATCH 04/18] This patch adds support for using -isystem to allow putting an include + directory at the end of the compiler's header search path. + +I don't have the exact output anymore (I've since patched Qt's configure) but +essentially, since I have pcre.h in /opt/kde4-deps/include, it was +conflicting with Qt's (modified) pcre.h in the WebKit bits, since +-I /opt/kde4-deps/include ends up in CXXFLAGS in the generated makefiles, it +comes *before* the specific locations in INCPATH on the compile line, and you +end up with a conflict with the system-installed pcre.h. + +Presumably, if your pcre.h is in /usr/include as on most Linux systems, you +wouldn't notice this issue since /usr/include's already in your include path +and people likely don't pass -I /usr/include to configure. I suspect that on +any platform with a regular, system-installed pcre.h (or clucene headers), +adding -I /usr/include would exhibit this bug, just as a custom-installed +pcre/clucene in another root would. + +qt-bugs@ issue : 199610 +Trolltech task ID : +bugs.kde.org number : +--- + configure | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +diff --git a/configure b/configure +index 2c108ad..610a201 100755 +--- a/configure ++++ b/configure +@@ -927,6 +927,11 @@ while [ "$#" -gt 0 ]; do + VAL=`echo $1 | sed 's,-D,,'` + fi + ;; ++ -isystem) ++ VAR="add_isystempath" ++ shift ++ VAL="$1" ++ ;; + -I?*|-I) + VAR="add_ipath" + if [ "$1" = "-I" ]; then +@@ -1890,6 +1895,9 @@ while [ "$#" -gt 0 ]; do + add_ipath) + I_FLAGS="$I_FLAGS -I\"${VAL}\"" + ;; ++ add_isystempath) ++ I_FLAGS="$I_FLAGS -isystem \"${VAL}\"" ++ ;; + add_lpath) + L_FLAGS="$L_FLAGS -L\"${VAL}\"" + ;; +-- +1.6.2.5 + diff --git a/0005-When-tabs-are-inserted-or-removed-in-a-QTabBar.patch b/0005-When-tabs-are-inserted-or-removed-in-a-QTabBar.patch new file mode 100644 index 0000000..e383e94 --- /dev/null +++ b/0005-When-tabs-are-inserted-or-removed-in-a-QTabBar.patch @@ -0,0 +1,47 @@ +From 733d1afd03908d695aa8a6518f453b9ff0e5b8a2 Mon Sep 17 00:00:00 2001 +From: Robert Knight +Date: Sun, 20 Apr 2008 16:28:31 +0200 +Subject: [PATCH 05/18] When tabs are inserted or removed in a QTabBar, + QTabBarPrivate::refresh() is called to update the layout. If the + tabbar widget is hidden, this just sets a boolean variable + (layoutDirty) and returns, so the parent widget's layout is not + notified about the possible geometry change. + +Prior to Qt 4.4 this was not a problem because the geometry was +recalculated in QTabBar::sizeHint() if the layoutDirty variable was +set. In Qt 4.4 however the layout caches size hint information in +QWidgetItemV2. Since the cache information is not invalidated, the +layout may end up using out-of-date size hint information to compute +the widget size. + +If the QTabBar is empty when QTabBar::sizeHint() is called, it will +return a size with a height of 0, which will be kept in the cache and +so the tab bar will never be shown. + +This patch fixes the problem by calling updateGeometry() whenever the +tab bar's layout is refreshed. + +qt-bugs@ issue : 208185 +Trolltech task ID : 208349 +bugs.kde.org number : 159014 +--- + src/gui/widgets/qtabbar.cpp | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp +index 419d456..41107a0 100644 +--- a/src/gui/widgets/qtabbar.cpp ++++ b/src/gui/widgets/qtabbar.cpp +@@ -678,8 +678,8 @@ void QTabBarPrivate::refresh() + layoutTabs(); + makeVisible(currentIndex); + q->update(); +- q->updateGeometry(); + } ++ q->updateGeometry(); + } + + /*! +-- +1.6.2.5 + diff --git a/0006-Fix-configure.exe-to-do-an-out-of-source-build-on-wi.patch b/0006-Fix-configure.exe-to-do-an-out-of-source-build-on-wi.patch new file mode 100644 index 0000000..384f027 --- /dev/null +++ b/0006-Fix-configure.exe-to-do-an-out-of-source-build-on-wi.patch @@ -0,0 +1,67 @@ +From 8e28e0603a900e1b18ebfd14c4f87b16dabf4cf6 Mon Sep 17 00:00:00 2001 +From: Christian Ehrlicher +Date: Fri, 19 Sep 2008 17:41:26 +0200 +Subject: [PATCH 06/18] Fix configure.exe to do an out-of-source build on windows + +qt-bugs@ issue : N227213 +Trolltech task ID : none yet +--- + bin/syncqt | 6 +++++- + projects.pro | 3 +++ + src/tools/moc/main.cpp | 6 ++++++ + 3 files changed, 14 insertions(+), 1 deletions(-) + +diff --git a/bin/syncqt b/bin/syncqt +index 7a9f1d3..b5a8e1c 100755 +--- a/bin/syncqt ++++ b/bin/syncqt +@@ -365,9 +365,13 @@ sub fixPaths { + $match_dir = $tmp; + $i = $slash; + } ++ my $cnt_ofs = 0; ++ if($match_dir =~ /^[a-zA-Z]:$/) { ++ $cnt_ofs = 1; ++ } + if($match_dir) { + my $after = substr($dir, length($match_dir)); +- my $count = ($after =~ tr,/,,); ++ my $count = ($after =~ tr,/,,) - $cnt_ofs; + my $dots = ""; + for(my $i = 0; $i < $count; $i++) { + $dots .= "../"; +diff --git a/projects.pro b/projects.pro +index 2596c0a..3ba0688 100644 +--- a/projects.pro ++++ b/projects.pro +@@ -127,6 +127,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/src/tools/moc/main.cpp b/src/tools/moc/main.cpp +index d519b09..7979836 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) + inSplitted.prepend(QLatin1String("..")); + } + inSplitted.append(inFileInfo.fileName()); ++#ifdef Q_WS_WIN ++ const QString rel = inSplitted.join(QLatin1String("/")); ++ const QString abs = inFileInfo.absoluteFilePath(); ++ return QFile::encodeName(rel.length() < abs.length() ? rel : abs); ++#else + return QFile::encodeName(inSplitted.join(QLatin1String("/"))); ++#endif + } + + +-- +1.6.2.5 + diff --git a/0007-When-using-qmake-outside-qt-src-tree-it-sometimes-g.patch b/0007-When-using-qmake-outside-qt-src-tree-it-sometimes-g.patch new file mode 100644 index 0000000..cd66e4c --- /dev/null +++ b/0007-When-using-qmake-outside-qt-src-tree-it-sometimes-g.patch @@ -0,0 +1,73 @@ +From 0afcf33127c6ccbe5dfaae4f4c5e02f28dc10ae1 Mon Sep 17 00:00:00 2001 +From: Christian Ehrlicher +Date: Thu, 8 May 2008 21:25:49 +0200 +Subject: [PATCH 07/18] When using qmake outside qt src tree, it sometimes generates wrong + paths (wrong path separator) + +qt-bugs@ issue : none +Trolltech task ID : 214661 +--- + qmake/property.cpp | 29 ++++++++++++++++------------- + 1 files changed, 16 insertions(+), 13 deletions(-) + +diff --git a/qmake/property.cpp b/qmake/property.cpp +index 8ba89f9..dd78349 100644 +--- a/qmake/property.cpp ++++ b/qmake/property.cpp +@@ -81,29 +81,32 @@ QMakeProperty::keyBase(bool version) const + QString + QMakeProperty::value(QString v, bool just_check) + { ++ QString ret; + if(v == "QT_INSTALL_PREFIX") +- return QLibraryInfo::location(QLibraryInfo::PrefixPath); ++ ret = QLibraryInfo::location(QLibraryInfo::PrefixPath); + else if(v == "QT_INSTALL_DATA") +- return QLibraryInfo::location(QLibraryInfo::DataPath); ++ ret = QLibraryInfo::location(QLibraryInfo::DataPath); + else if(v == "QT_INSTALL_DOCS") +- return QLibraryInfo::location(QLibraryInfo::DocumentationPath); ++ ret = QLibraryInfo::location(QLibraryInfo::DocumentationPath); + else if(v == "QT_INSTALL_HEADERS") +- return QLibraryInfo::location(QLibraryInfo::HeadersPath); ++ ret = QLibraryInfo::location(QLibraryInfo::HeadersPath); + else if(v == "QT_INSTALL_LIBS") +- return QLibraryInfo::location(QLibraryInfo::LibrariesPath); ++ ret = QLibraryInfo::location(QLibraryInfo::LibrariesPath); + else if(v == "QT_INSTALL_BINS") +- return QLibraryInfo::location(QLibraryInfo::BinariesPath); ++ ret = QLibraryInfo::location(QLibraryInfo::BinariesPath); + else if(v == "QT_INSTALL_PLUGINS") +- return QLibraryInfo::location(QLibraryInfo::PluginsPath); ++ ret = QLibraryInfo::location(QLibraryInfo::PluginsPath); + else if(v == "QT_INSTALL_TRANSLATIONS") +- return QLibraryInfo::location(QLibraryInfo::TranslationsPath); ++ ret = QLibraryInfo::location(QLibraryInfo::TranslationsPath); + else if(v == "QT_INSTALL_CONFIGURATION") +- return QLibraryInfo::location(QLibraryInfo::SettingsPath); ++ ret = QLibraryInfo::location(QLibraryInfo::SettingsPath); + else if(v == "QT_INSTALL_EXAMPLES") +- return QLibraryInfo::location(QLibraryInfo::ExamplesPath); ++ ret = QLibraryInfo::location(QLibraryInfo::ExamplesPath); + else if(v == "QT_INSTALL_DEMOS") +- return QLibraryInfo::location(QLibraryInfo::DemosPath); +- else if(v == "QMAKE_MKSPECS") ++ ret = QLibraryInfo::location(QLibraryInfo::DemosPath); ++ if(!ret.isEmpty()) ++ return QDir::toNativeSeparators(ret); ++ if(v == "QMAKE_MKSPECS") + return qmake_mkspec_paths().join(Option::target_mode == Option::TARG_WIN_MODE ? ";" : ":"); + else if(v == "QMAKE_VERSION") + return qmake_version(); +@@ -116,7 +119,7 @@ QMakeProperty::value(QString v, bool just_check) + int slash = v.lastIndexOf('/'); + QVariant var = settings->value(keyBase(slash == -1) + v); + bool ok = var.isValid(); +- QString ret = var.toString(); ++ ret = var.toString(); + if(!ok) { + QString version = qmake_version(); + if(slash != -1) { +-- +1.6.2.5 + diff --git a/0008-In-a-treeview-with-columns-like-this.patch b/0008-In-a-treeview-with-columns-like-this.patch new file mode 100644 index 0000000..af6ffae --- /dev/null +++ b/0008-In-a-treeview-with-columns-like-this.patch @@ -0,0 +1,52 @@ +From 1ec9dd029abaa0f00798535fdb1722154b1c63f6 Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Rafael=20Fern=C3=A1ndez=20L=C3=B3pez?= +Date: Sun, 26 Oct 2008 10:40:51 +0100 +Subject: [PATCH 08/18] In a treeview with columns like this: + +Column 1 | Column 2 | ... | Column k | ... | Column n + +When selecting with rubberband (by clicking on the blank part of the viewport) while Column k is +hidden, you get double items on the selection model, when asking for selection(). This is becase +ranges are incorrectly calculated when there are hidden columns. A way to reproduce: + +Column 1 | Column 2 | Column 4 (Column 3 is hidden) + item + item + item + x <- press button here and move it up to select items (on this same column) + +If you do like this: + +Column 1 | Column 2 | Column 4 (Column 3 is hidden) + item + item + item + x <- press button here and move it up + +you won't be able to reproduce, since you need the hidden column to be between the one you click and +the last one. The reason is that columnRanges returns two ranges when there is supposed to return 1 +range (even when there are hidden columns). + +qt-bugs@ issue : N232819 +Trolltech task ID : 232831 +bugs.kde.org number : 171436 +--- + src/gui/itemviews/qtreeview.cpp | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp +index ed6ad03..dc147f2 100644 +--- a/src/gui/itemviews/qtreeview.cpp ++++ b/src/gui/itemviews/qtreeview.cpp +@@ -3575,7 +3575,7 @@ QList > 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; +-- +1.6.2.5 + diff --git a/0009-This-patch-fixes-deserialization-of-values-with-cust.patch b/0009-This-patch-fixes-deserialization-of-values-with-cust.patch new file mode 100644 index 0000000..083a1fc --- /dev/null +++ b/0009-This-patch-fixes-deserialization-of-values-with-cust.patch @@ -0,0 +1,54 @@ +From b274bbaf4768dcfdfcf95ceda08b6402ffedb80d Mon Sep 17 00:00:00 2001 +From: George Goldberg +Date: Tue, 28 Apr 2009 17:08:07 +0200 +Subject: [PATCH 09/18] This patch fixes deserialization of values with custom types when setting + properties on dbus adaptors. It is needed, in particular by telepathy/Qt + programs and libraries. The bug was reported to Nokia on 2009-01-07 along + with the patch supplied here. The summary of the issue from the Qt + Software task tracker follows: + +When calling the setter for a DBus property, if that property has a custom type +(e.g. a struct with dbus type (uss)), QtDBus fails to demarshall the +QDBusArgument before attempting to set the property on the adaptor. The result +is that it attempts to call adaptor->setProperty() with a QDBusArgument of type +"uss" instead of with the type of the custom struct. + +qt-bugs@ issue : N240326 +Qt Software task ID : 240608 +bugs.kde.org number : none +--- + src/dbus/qdbusinternalfilters.cpp | 16 +++++++++++++++- + 1 files changed, 15 insertions(+), 1 deletions(-) + +diff --git a/src/dbus/qdbusinternalfilters.cpp b/src/dbus/qdbusinternalfilters.cpp +index c71f2f4..d261d01 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 valueArg = qvariant_cast(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(); ++ } + } + } + +-- +1.6.2.5 + diff --git a/0010-Import-README.qt-copy-from-the-original-qt-copy.patch b/0010-Import-README.qt-copy-from-the-original-qt-copy.patch new file mode 100644 index 0000000..758a4dc --- /dev/null +++ b/0010-Import-README.qt-copy-from-the-original-qt-copy.patch @@ -0,0 +1,207 @@ +From 9a3fe8fc4912bf82b791c4131f553c18140ca838 Mon Sep 17 00:00:00 2001 +From: Thiago Macieira +Date: Sun, 21 Jun 2009 13:17:13 -0300 +Subject: [PATCH 10/18] Import README.qt-copy from the original qt-copy + +--- + README.kde-qt | 188 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 188 insertions(+), 0 deletions(-) + create mode 100644 README.kde-qt + +diff --git a/README.kde-qt b/README.kde-qt +new file mode 100644 +index 0000000..f605a0b +--- /dev/null ++++ b/README.kde-qt +@@ -0,0 +1,188 @@ ++This is a copy of Qt version 4.5.1. It may include ++modifications which are necessary for KDE; these are listed in the ++patches directory. ++ ++1. Qt-copy patches ++================== ++ ++You may also consider running the apply_patches script before configuring qt-copy, ++which will apply all not yet applied patches from the patches/ directory that ++are considered safe (they mostly include optimizations and features that don't ++add new API). Note that most of those patches haven't been accepted ++by Qt Software yet. and therefore they'll make your qt-copy differ from official ++Qt version. ++ ++2. Configuring Qt ++================= ++ ++The recommended compile line is: ++ ++--default-config-begin-- ++./configure -qt-gif -debug -fast -no-exceptions -no-separate-debug-info \ ++ -system-libpng -system-libjpeg -system-zlib \ ++ -dbus -webkit -no-phonon -plugin-sql-mysql \ ++ -nomake examples -nomake demos -prefix ++--default-config-end-- ++ ++It contains "-debug", which greatly improves the use for backtraces (but ++also needs a lot more disk space and makes things slower). To build in ++release mode, replace it with "-release". ++ ++It also contains "-no-separate-debug-info", which disables separate .debug ++files. Instead, the debug information will be built into the libraries. ++This option is needed when you install Qt. ++If you don't install Qt, it can be useful to disable this option, ++thus having separate debug symbol files. With separate debug files, you can ++just move those debug files to another directory to remove Qt debug symbols. ++Moving the files back will enable Qt debug symbols again. ++This is useful if you rarely need to step into Qt functions during debugging, ++because GDB loads much faster and uses less memory without Qt debug symbols. ++In the rare case you need to step into Qt code, you can temporarily enable ++debug symbols again by moving the debug files back. You can even load the Qt ++debug symbols from within GDB on demand, using the "symbol-file" command. ++ ++It also contains the "-no-exceptions" argument, which disables C++ ++exception support. Disabling exception support may improve memory ++consumption if GCC is being used. However, that also disables the ++QtXmlPatterns module since that requires exception support. If you ++plan on using that module, remove the option. ++ ++If you are planning to compile Qt using an Icecream cluster you have to ++pass the option -no-pch (no precompiled headers) to configure to make ++distributed compilation work. ++ ++3. Compiling Qt ++=============== ++ ++To compile Qt on a Unix platform, run: ++ ++ export MAKEFLAGS=-j2 ++ make ++ make install ++ ++If your computer has more than one core or processor, you may consider ++increasing the "2" above. If you've got a compile farm available, you ++should adjust the -j argument to match the number of slots in that ++farm. ++ ++4. Modifying & rebuilding Qt ++============================ ++ ++If you make modifications to the Qt source code, you don't need to ++build everything again. Simply go to the directory containing the ++Makefile closest to the files you changed and run "make" again. ++ ++For example, if you modified src/corelib/io/qiodevice.cpp, do: ++ ++ cd src/corelib ++ make ++ ++Do not commit your modifications to qt-copy as such. If you have a fix ++that benefit others, see the "Creating Qt-copy patches" section below. ++ ++5. Building Qt examples and demos ++================================= ++ ++The "-nomake examples -nomake demos" arguments to the configure script ++mean that those two sections will not be configured for ++building. Which is unneeded for usage of the library. If you want to ++compile the examples or demos later; just enter either directory and ++type: ++ ++ qmake ++ make ++ ++6. Building Qt documentation (only applies to Snapshot versions of Qt) ++============================ ++ ++To build and install the documentation, run: ++ ++ make docs ++ ./config.status ++ make install ++ ++It is necessary to do this once only, even if you rebuild Qt later. ++ ++7. Using Qt uninstalled ++======================= ++ ++To use without having to install it, configure it as follows: ++ ++ ./configure -prefix $PWD ++ make sub-src ++ make sub-tools ++ ++Attention: DO NOT run ++ ++ make install ++ ++If you do, Qt will overwrite your include/ directory with its ++installation. ++ ++8. Creating Qt-copy patches ++=========================== ++ ++If you have fixed a bug in Qt or modified it in any way that may ++benefit others, please share your change in the form of a patch. Do ++not commit your changes directly to the qt-copy module because they ++may be lost in a future update if they have not been added to the ++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 next release of Qt), then ++it can be applied directly to qt-copy. In this case, the patch ++should still be placed in patches/ as usual, but it should have a ++header line ++ Applied: yes ++ ++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. ++ ++To create a patch, do the following: ++ a) make sure your Qt sources are clean of other changes. Run: ++ svn revert -R . ++ b) make your changes to the Qt source code and verify that it ++ compiles, links and works. ++ c) open the patches/README file and get the next patch number ++ (you must read and understand the README file; if you don't, ask for ++ help from other KDE developers) ++ d) create the patch with: ++ svn diff > patches/NNNN-short-description-of-your-patch.diff ++ where NNNN is the next available number. ++ e) open the file you've just created and add the header to it. The ++ header should be the template in patches/README followed by a longer ++ description of your patch. ++ ++Don't forget to submit your patch to qt-bugs@trolltech.com along with ++the long description of the issue found, if you haven't already. ++Qt Software does not monitor the patches/ directory, so qt-copy ++patches do not get automatically applied to Qt official releases. ++ ++When you receive the issue number and task tracker numbers, update the ++patch file. ++ ++9. Known issues with current Qt code ++==================================== ++ ++In case you have strange issues with non-resizing windows and similar, use ++ export QT_USE_NATIVE_WINDOWS=1 ++before starting KDE. ++ ++10. 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 ++top directory of your Qt sources: ++ ++ find . -name '*.moc' | xargs rm ++ ++Sometimes ./configure will refuse to run. You may need to: ++ rm .qmake.cache ++ ++If you think you may have run "make install" on an install-less Qt ++(srcdir == $QTDIR), run: ++ ++ svn revert -R include +-- +1.6.2.5 + diff --git a/0011-Update-this-file-to-reflect-the-workflow-with-Git-a.patch b/0011-Update-this-file-to-reflect-the-workflow-with-Git-a.patch new file mode 100644 index 0000000..870c9ab --- /dev/null +++ b/0011-Update-this-file-to-reflect-the-workflow-with-Git-a.patch @@ -0,0 +1,257 @@ +From 39b24a10e4dee27357b9760b735c2ab98b132963 Mon Sep 17 00:00:00 2001 +From: Thiago Macieira +Date: Sun, 21 Jun 2009 13:46:54 -0300 +Subject: [PATCH 11/18] Update this file to reflect the workflow with Git, as well as use Git commands + +--- + README.kde-qt | 163 +++++++++++++++++++++++++++++++-------------------------- + 1 files changed, 88 insertions(+), 75 deletions(-) + +diff --git a/README.kde-qt b/README.kde-qt +index f605a0b..db3feb6 100644 +--- a/README.kde-qt ++++ b/README.kde-qt +@@ -1,27 +1,20 @@ +-This is a copy of Qt version 4.5.1. It may include +-modifications which are necessary for KDE; these are listed in the +-patches directory. ++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 ++one. + +-1. Qt-copy patches +-================== +- +-You may also consider running the apply_patches script before configuring qt-copy, +-which will apply all not yet applied patches from the patches/ directory that +-are considered safe (they mostly include optimizations and features that don't +-add new API). Note that most of those patches haven't been accepted +-by Qt Software yet. and therefore they'll make your qt-copy differ from official +-Qt version. +- +-2. Configuring Qt ++1. Configuring Qt + ================= + + The recommended compile line is: + + --default-config-begin-- +-./configure -qt-gif -debug -fast -no-exceptions -no-separate-debug-info \ +- -system-libpng -system-libjpeg -system-zlib \ +- -dbus -webkit -no-phonon -plugin-sql-mysql \ +- -nomake examples -nomake demos -prefix ++ ++ ./configure -qt-gif -debug -fast -no-separate-debug-info \ ++ -system-libpng -system-libjpeg -system-zlib \ ++ -dbus -webkit -plugin-sql-mysql \ ++ -nomake examples -nomake demos -prefix ++ + --default-config-end-- + + It contains "-debug", which greatly improves the use for backtraces (but +@@ -31,6 +24,7 @@ release mode, replace it with "-release". + It also contains "-no-separate-debug-info", which disables separate .debug + files. Instead, the debug information will be built into the libraries. + This option is needed when you install Qt. ++ + If you don't install Qt, it can be useful to disable this option, + thus having separate debug symbol files. With separate debug files, you can + just move those debug files to another directory to remove Qt debug symbols. +@@ -41,17 +35,11 @@ In the rare case you need to step into Qt code, you can temporarily enable + debug symbols again by moving the debug files back. You can even load the Qt + debug symbols from within GDB on demand, using the "symbol-file" command. + +-It also contains the "-no-exceptions" argument, which disables C++ +-exception support. Disabling exception support may improve memory +-consumption if GCC is being used. However, that also disables the +-QtXmlPatterns module since that requires exception support. If you +-plan on using that module, remove the option. +- + If you are planning to compile Qt using an Icecream cluster you have to + pass the option -no-pch (no precompiled headers) to configure to make + distributed compilation work. + +-3. Compiling Qt ++2. Compiling Qt + =============== + + To compile Qt on a Unix platform, run: +@@ -65,34 +53,49 @@ increasing the "2" above. If you've got a compile farm available, you + should adjust the -j argument to match the number of slots in that + farm. + +-4. Modifying & rebuilding Qt ++3. Modifying & rebuilding Qt + ============================ + + If you make modifications to the Qt source code, you don't need to + build everything again. Simply go to the directory containing the + Makefile closest to the files you changed and run "make" again. + +-For example, if you modified src/corelib/io/qiodevice.cpp, do: ++For example, if you've modified src/corelib/io/qiodevice.cpp, do: + + cd src/corelib + make + +-Do not commit your modifications to qt-copy as such. If you have a fix +-that benefit others, see the "Creating Qt-copy patches" section below. ++If you make a change that is not temporary, you should create a Git ++commit out of it. However, you shouldn't push those changes to ++kde-qt.git. If you have a fix that benefit others, see the "Creating ++kde-qt.git modifications" section below. + +-5. Building Qt examples and demos ++4. Building Qt examples and demos + ================================= + + The "-nomake examples -nomake demos" arguments to the configure script +-mean that those two sections will not be configured for +-building. Which is unneeded for usage of the library. If you want to +-compile the examples or demos later; just enter either directory and +-type: ++mean that those two sections will not be configured for building, ++which is unneeded for usage of the library. If you want to compile ++the examples or demos later, just enter either directory and type: + + qmake + make + +-6. Building Qt documentation (only applies to Snapshot versions of Qt) ++5. Build Qt tests ++================= ++ ++(Official information: http://qt.gitorious.org/qt/pages/QtAutotestsEnvironment) ++ ++In order to run Qt tests, you must have a "developer build" of Qt. For ++that, you need to reconfigure Qt and add the "-developer-build" ++option. That option is technically equivalent to the options: ++ ++ -debug -prefix $PWD -DQT_BUILD_INTERNAL ++ ++To run a test, go to its source dir in tests/auto/testname. Type ++"make" to build it, then run it (either ./tst_testname, or "make install"). ++ ++6. Building Qt documentation + ============================ + + To build and install the documentation, run: +@@ -119,21 +122,25 @@ Attention: DO NOT run + If you do, Qt will overwrite your include/ directory with its + installation. + +-8. Creating Qt-copy patches +-=========================== ++8. Creating kde-qt.git modifications ++==================================== + + If you have fixed a bug in Qt or modified it in any way that may + benefit others, please share your change in the form of a patch. Do +-not commit your changes directly to the qt-copy module because they ++not commit your changes directly to the main branch because they + may be lost in a future update if they have not been added to the + 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 next release of Qt), then +-it can be applied directly to qt-copy. In this case, the patch +-should still be placed in patches/ as usual, but it should have a +-header line +- Applied: yes ++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 ++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: ++ ++ 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 +@@ -141,37 +148,42 @@ be a solution for the problem already or a new direction that should + be accounted for. + + To create a patch, do the following: +- a) make sure your Qt sources are clean of other changes. Run: +- svn revert -R . +- b) make your changes to the Qt source code and verify that it +- compiles, links and works. +- c) open the patches/README file and get the next patch number +- (you must read and understand the README file; if you don't, ask for +- help from other KDE developers) +- d) create the patch with: +- svn diff > patches/NNNN-short-description-of-your-patch.diff +- where NNNN is the next available number. +- e) open the file you've just created and add the header to it. The +- header should be the template in patches/README followed by a longer +- description of your patch. +- +-Don't forget to submit your patch to qt-bugs@trolltech.com along with +-the long description of the issue found, if you haven't already. +-Qt Software does not monitor the patches/ directory, so qt-copy +-patches do not get automatically applied to Qt official releases. +- +-When you receive the issue number and task tracker numbers, update the +-patch file. +- +-9. Known issues with current Qt code +-==================================== +- +-In case you have strange issues with non-resizing windows and similar, use +- export QT_USE_NATIVE_WINDOWS=1 +-before starting KDE. +- +-10. Troubleshooting: Re-configuring and re-compiling +-=================================================== ++ a) look at the listing of branches in ++ http://qt.gitorious.org/+kde-developers/qt/kde-qt/commits/HEAD and ++ select the next number. ++ ++ b) create a new branch out of a clean, released version of Qt, (for ++ example, 4.5.1), using the number above and a brief description of ++ your fix. For example: ++ git checkout -b patches/0180-window-role v4.5.1 ++ You can see the available released versions of Qt with: ++ 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). ++ ++ 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: ++ 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) ++ ++Don't forget to submit your patch to using the Qt Contribution Model, ++along with the long description of the issue found. See ++http://qt.gitorious.org/qt/pages/QtContributionGuidelines for ++information how. You can submit the branch you've just sent to the ++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 +@@ -185,4 +197,5 @@ Sometimes ./configure will refuse to run. You may need to: + If you think you may have run "make install" on an install-less Qt + (srcdir == $QTDIR), run: + +- svn revert -R include ++ rm -rf include ++ bin/syncqt +-- +1.6.2.5 + diff --git a/0015-Make-QMenu-respect-the-minimum-width-set.patch b/0015-Make-QMenu-respect-the-minimum-width-set.patch new file mode 100644 index 0000000..609a9bd --- /dev/null +++ b/0015-Make-QMenu-respect-the-minimum-width-set.patch @@ -0,0 +1,31 @@ +From 01f26d0756839fbe783c637ca7dec5b7987f7e14 Mon Sep 17 00:00:00 2001 +From: Aaron Seigo +Date: Mon, 27 Jul 2009 21:46:22 -0600 +Subject: [PATCH 15/18] Make QMenu respect the minimum width set + +If one sets a minimum width on a QMenu and that size is larger than the +smallest size needed by the large menu item, it ignores the minimum +width and just uses the largest menu item size. + +This results in ugly painting artifacts. This currently affects +(at least) the tasks widget in Plasma in KDE4. +--- + src/gui/widgets/qmenu.cpp | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp +index 9fbbb04..5d62ea6 100644 +--- a/src/gui/widgets/qmenu.cpp ++++ b/src/gui/widgets/qmenu.cpp +@@ -280,7 +280,7 @@ void QMenuPrivate::calcActionRects(QMap &actionRects, QListminimumWidth(), qMax(max_column_width, sz.width())); + //wrapping + if (!scroll && + y+sz.height()+vmargin > dh - (q->style()->pixelMetric(QStyle::PM_MenuDesktopFrameWidth, 0, q) * 2)) { +-- +1.6.2.5 + diff --git a/0016-Fill-gap-of-X.org-XFree-multimedia-special-launcher.patch b/0016-Fill-gap-of-X.org-XFree-multimedia-special-launcher.patch new file mode 100644 index 0000000..604cbd7 --- /dev/null +++ b/0016-Fill-gap-of-X.org-XFree-multimedia-special-launcher.patch @@ -0,0 +1,660 @@ +From 1a94cd7b132497f70a2b97ec2b58f6e2b1c5076a Mon Sep 17 00:00:00 2001 +From: Helio Chissini de Castro +Date: Fri, 10 Jul 2009 16:00:13 -0300 +Subject: [PATCH 16/18] Fill gap of X.org/XFree multimedia/special/launcher keys + Qt up to 4.5.x is missing whole setup of multimedia keys already defined by X + +--- + src/corelib/global/qnamespace.h | 97 ++++++++++++- + src/gui/kernel/qkeymapper_x11.cpp | 286 ++++++++++++++++++++++++++++++------- + src/gui/kernel/qkeysequence.cpp | 174 +++++++++++++++++------ + 3 files changed, 461 insertions(+), 96 deletions(-) + +diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h +index 3edbca7..ddf27a8 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/gui/kernel/qkeymapper_x11.cpp b/src/gui/kernel/qkeymapper_x11.cpp +index 98ed61c..f55b491 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 894f663..665c058 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 +-- +1.6.2.5 + diff --git a/0017-Add-context-to-tr-calls-in-QShortcut.patch b/0017-Add-context-to-tr-calls-in-QShortcut.patch new file mode 100644 index 0000000..82f68e4 --- /dev/null +++ b/0017-Add-context-to-tr-calls-in-QShortcut.patch @@ -0,0 +1,70 @@ +From 9eb3560cfd5cd0bc9c7bf79f2c27657ee07b8f95 Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid +Date: Sat, 8 Aug 2009 14:40:25 +0200 +Subject: [PATCH 17/18] Add context to tr calls in QShortcut + +Some languages have special rules for using "+" to concatenate strings and +for example it needs to be Ctrl + Shift instead of Ctrl+Shift, adding +context to these strings helps creating a more correct translation +--- + src/gui/kernel/qkeysequence.cpp | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp +index 894f663..c17f253 100644 +--- a/src/gui/kernel/qkeysequence.cpp ++++ b/src/gui/kernel/qkeysequence.cpp +@@ -991,10 +991,10 @@ int QKeySequencePrivate::decodeString(const QString &str, QKeySequence::Sequence + + QList 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 +1086,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 +1111,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 +1132,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; +-- +1.6.2.5 + diff --git a/0274-shm-native-image-fix.patch b/0274-shm-native-image-fix.patch new file mode 100644 index 0000000..03247a4 --- /dev/null +++ b/0274-shm-native-image-fix.patch @@ -0,0 +1,88 @@ +diff -up qt-x11-opensource-src-4.5.3/src/gui/image/qnativeimage.cpp.me qt-x11-opensource-src-4.5.3/src/gui/image/qnativeimage.cpp +--- qt-x11-opensource-src-4.5.3/src/gui/image/qnativeimage.cpp.me 2009-10-02 18:26:02.000000000 +0200 ++++ qt-x11-opensource-src-4.5.3/src/gui/image/qnativeimage.cpp 2009-10-02 18:27:13.000000000 +0200 +@@ -144,7 +144,7 @@ QImage::Format QNativeImage::systemForma + #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, in + 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 -up qt-x11-opensource-src-4.5.3/src/gui/image/qnativeimage_p.h.me qt-x11-opensource-src-4.5.3/src/gui/image/qnativeimage_p.h +--- qt-x11-opensource-src-4.5.3/src/gui/image/qnativeimage_p.h.me 2009-10-02 18:33:38.000000000 +0200 ++++ qt-x11-opensource-src-4.5.3/src/gui/image/qnativeimage_p.h 2009-10-02 18:34:01.000000000 +0200 +@@ -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 -up qt-x11-opensource-src-4.5.3/src/gui/kernel/qapplication_x11.cpp.me qt-x11-opensource-src-4.5.3/src/gui/kernel/qapplication_x11.cpp +--- qt-x11-opensource-src-4.5.3/src/gui/kernel/qapplication_x11.cpp.me 2009-10-02 18:27:55.000000000 +0200 ++++ qt-x11-opensource-src-4.5.3/src/gui/kernel/qapplication_x11.cpp 2009-10-02 18:33:30.000000000 +0200 +@@ -1959,12 +1959,9 @@ void qt_init(QApplicationPrivate *priv, + 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 +- || defaultVisual->red_mask == 0xf800) +- && (defaultVisual->green_mask == 0xff00 +- || defaultVisual->green_mask == 0x7e0) +- && (defaultVisual->blue_mask == 0xff +- || defaultVisual->blue_mask == 0x1f)); ++ X11->use_mitshm = (defaultVisual->red_mask == 0xff0000 || defaultVisual->red_mask == 0xf800) ++ && (defaultVisual->green_mask == 0xff00 || defaultVisual->green_mask == 0x7e0) ++ && (defaultVisual->blue_mask == 0xff || defaultVisual->blue_mask == 0x1f); + } + } + #endif // QT_NO_MITSHM +diff -up qt-x11-opensource-src-4.5.3/src/gui/painting/qwindowsurface_raster.cpp.me qt-x11-opensource-src-4.5.3/src/gui/painting/qwindowsurface_raster.cpp +--- qt-x11-opensource-src-4.5.3/src/gui/painting/qwindowsurface_raster.cpp.me 2009-10-02 18:34:18.000000000 +0200 ++++ qt-x11-opensource-src-4.5.3/src/gui/painting/qwindowsurface_raster.cpp 2009-10-02 18:35:54.000000000 +0200 +@@ -220,9 +220,16 @@ void QRasterWindowSurface::flush(QWidget + + 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/kde-qt-patches-20090820git.patch b/kde-qt-patches-20090820git.patch deleted file mode 100644 index f77ce18..0000000 --- a/kde-qt-patches-20090820git.patch +++ /dev/null @@ -1,2042 +0,0 @@ -commit b48e2091871516496cf0b133249fbf5326a55831 -Author: Lubos Lunak -Date: Sat Feb 23 16:44:52 2008 +0100 - - This patch uses object name as a fallback for window role if no window - role is set explicitly using setWindowRole(). Since Qt3 always used - the object name as the window role and most Qt3/KDE3 code is ported to - call setObjectName(), - - this makes the window role set in many cases (which KWin uses for window identifying). - - NOTE: It is suggested to apply patch #0209 as well when this patch is used. - - qt-bugs@ issue : 167704 - Trolltech task ID : 168283 (status: "fixed" for Qt 4.4.0, but effectively refused) - -diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp -index 6487194..ef0369e 100644 ---- a/src/corelib/kernel/qobject.cpp -+++ b/src/corelib/kernel/qobject.cpp -@@ -993,8 +993,16 @@ void QObject::setObjectName(const QString &name) - { - Q_D(QObject); - d->objectName = name; -+#if defined(Q_WS_X11) -+ d->checkWindowRole(); -+#endif - } - -+#if defined(Q_WS_X11) -+void QObjectPrivate::checkWindowRole() -+{ -+} -+#endif - - #ifdef QT3_SUPPORT - /*! \internal -diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h -index 0bcccba..6ab9e10 100644 ---- a/src/corelib/kernel/qobject_p.h -+++ b/src/corelib/kernel/qobject_p.h -@@ -144,6 +144,9 @@ public: - mutable quint32 connectedSignals; - - QString objectName; -+#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/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h -index 774e390..176d6fa 100644 ---- a/src/gui/kernel/qwidget_p.h -+++ b/src/gui/kernel/qwidget_p.h -@@ -358,6 +358,7 @@ public: - - #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 79ee8c9..b56849c 100644 ---- a/src/gui/kernel/qwidget_x11.cpp -+++ b/src/gui/kernel/qwidget_x11.cpp -@@ -778,13 +778,17 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO - data.fstrut_dirty = 1; - - // declare the widget's window role -+ QByteArray windowRole; - if (QTLWExtra *topData = maybeTopData()) { -- if (!topData->role.isEmpty()) { -- QByteArray windowRole = topData->role.toUtf8(); -- XChangeProperty(dpy, id, -- ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace, -- (unsigned char *)windowRole.constData(), windowRole.length()); -- } -+ if (!topData->role.isEmpty()) -+ windowRole = topData->role.toUtf8(); -+ } -+ if (windowRole.isEmpty()) // use object name as a fallback -+ windowRole = objectName.toUtf8(); -+ if (!windowRole.isEmpty()) { -+ XChangeProperty(dpy, id, -+ ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace, -+ (unsigned char *)windowRole.constData(), windowRole.length()); - } - - // set client leader property -@@ -2768,6 +2772,17 @@ void QWidgetPrivate::setWindowRole() - (unsigned char *)windowRole.constData(), windowRole.length()); - } - -+void QWidgetPrivate::checkWindowRole() -+{ -+ Q_Q(QWidget); -+ if( !q->windowRole().isEmpty() || !q->internalWinId()) -+ return; -+ QByteArray windowRole = objectName.toUtf8(); // use as a fallback -+ XChangeProperty(X11->display, q->internalWinId(), -+ ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace, -+ (unsigned char *)windowRole.constData(), windowRole.length()); -+} -+ - Q_GLOBAL_STATIC(QX11PaintEngine, qt_widget_paintengine) - QPaintEngine *QWidget::paintEngine() const - { - -commit 339e220e29ff39b86705438b4be6f90e5618d27b -Author: Lubos Lunak -Date: Tue Oct 2 16:08:32 2007 +0200 - - This patch makes override-redirect windows (popup menu, dropdown menu, - tooltip, combobox, etc.) also have more window properties like WM_CLASS, - so they can be used when compositing. - - qt-bugs@ issue : none - bugs.kde.org number : none - -diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp -index 79ee8c9..a74a849 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 - Q_ASSERT(id); - XChangeWindowAttributes(dpy, id, CWOverrideRedirect | CWSaveUnder, - &wsa); -+ XClassHint class_hint; -+ QByteArray appName = qAppName().toLatin1(); -+ class_hint.res_name = appName.data(); // application name -+ class_hint.res_class = const_cast(QX11Info::appClass()); // application class -+ XSetWMProperties(dpy, id, 0, 0, 0, 0, 0, 0, &class_hint); - } else if (topLevel && !desktop) { // top-level widget - if (!X11->wm_client_leader) - create_wm_client_leader(); -@@ -769,13 +774,21 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO - // set EWMH window types - setNetWmWindowTypes(); - -+ // when we create a toplevel widget, the frame strut should be dirty -+ data.fstrut_dirty = 1; -+ -+ } else { -+ // non-toplevel widgets don't have a frame, so no need to -+ // update the strut -+ data.fstrut_dirty = 0; -+ } -+ -+ if (initializeWindow && (popup || (topLevel && !desktop))) { // properties set on all toplevel windows - // set _NET_WM_PID - long curr_pid = getpid(); - XChangeProperty(dpy, id, ATOM(_NET_WM_PID), XA_CARDINAL, 32, PropModeReplace, - (unsigned char *) &curr_pid, 1); - -- // when we create a toplevel widget, the frame strut should be dirty -- data.fstrut_dirty = 1; - - // declare the widget's window role - if (QTLWExtra *topData = maybeTopData()) { -@@ -791,10 +804,6 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO - XChangeProperty(dpy, id, ATOM(WM_CLIENT_LEADER), - XA_WINDOW, 32, PropModeReplace, - (unsigned char *)&X11->wm_client_leader, 1); -- } else { -- // non-toplevel widgets don't have a frame, so no need to -- // update the strut -- data.fstrut_dirty = 0; - } - - if (initializeWindow && q->internalWinId()) { - -commit 68eaa07de69e873b89d4aba341c6ed1ca81f6819 -Author: Lubos Lunak -Date: Wed Jan 30 14:24:01 2008 +0100 - - This patch changes QObjectPrivateVersion, thus preventing mixing - parts of upstream Qt and qt-copy. In general it is a bad idea to mix - e.g. libQtCore from one build and libQtGui from another one, and other - qt-copy patches could make changes in Qt internal structures that could - cause problems when mixed with upstream Qt. - - This patch does not make qt-copy binary incompatible with upstream Qt. - It only further enforces using the same sources for the whole Qt build. - - qt-bugs@ issue : none - Trolltech task ID : none - bugs.kde.org number : none - -diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h -index 0bcccba..88192fd 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; - - inline QObjectData::~QObjectData() {} - --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 - { - -commit 86fc0d43cdcf3232ae0e4e6f4f28cf8f1a45ede5 -Author: Benjamin Reed -Date: Tue Feb 19 17:37:37 2008 +0100 - - This patch adds support for using -isystem to allow putting an include - directory at the end of the compiler's header search path. - - I don't have the exact output anymore (I've since patched Qt's configure) but - essentially, since I have pcre.h in /opt/kde4-deps/include, it was - conflicting with Qt's (modified) pcre.h in the WebKit bits, since - -I /opt/kde4-deps/include ends up in CXXFLAGS in the generated makefiles, it - comes *before* the specific locations in INCPATH on the compile line, and you - end up with a conflict with the system-installed pcre.h. - - Presumably, if your pcre.h is in /usr/include as on most Linux systems, you - wouldn't notice this issue since /usr/include's already in your include path - and people likely don't pass -I /usr/include to configure. I suspect that on - any platform with a regular, system-installed pcre.h (or clucene headers), - adding -I /usr/include would exhibit this bug, just as a custom-installed - pcre/clucene in another root would. - - qt-bugs@ issue : 199610 - Trolltech task ID : - bugs.kde.org number : - -diff --git a/configure b/configure -index 2c108ad..610a201 100755 ---- a/configure -+++ b/configure -@@ -927,6 +927,11 @@ while [ "$#" -gt 0 ]; do - VAL=`echo $1 | sed 's,-D,,'` - fi - ;; -+ -isystem) -+ VAR="add_isystempath" -+ shift -+ VAL="$1" -+ ;; - -I?*|-I) - VAR="add_ipath" - if [ "$1" = "-I" ]; then -@@ -1890,6 +1895,9 @@ while [ "$#" -gt 0 ]; do - add_ipath) - I_FLAGS="$I_FLAGS -I\"${VAL}\"" - ;; -+ add_isystempath) -+ I_FLAGS="$I_FLAGS -isystem \"${VAL}\"" -+ ;; - add_lpath) - L_FLAGS="$L_FLAGS -L\"${VAL}\"" - ;; - -commit 733d1afd03908d695aa8a6518f453b9ff0e5b8a2 -Author: Robert Knight -Date: Sun Apr 20 16:28:31 2008 +0200 - - When tabs are inserted or removed in a QTabBar, - QTabBarPrivate::refresh() is called to update the layout. If the - tabbar widget is hidden, this just sets a boolean variable - (layoutDirty) and returns, so the parent widget's layout is not - notified about the possible geometry change. - - Prior to Qt 4.4 this was not a problem because the geometry was - recalculated in QTabBar::sizeHint() if the layoutDirty variable was - set. In Qt 4.4 however the layout caches size hint information in - QWidgetItemV2. Since the cache information is not invalidated, the - layout may end up using out-of-date size hint information to compute - the widget size. - - If the QTabBar is empty when QTabBar::sizeHint() is called, it will - return a size with a height of 0, which will be kept in the cache and - so the tab bar will never be shown. - - This patch fixes the problem by calling updateGeometry() whenever the - tab bar's layout is refreshed. - - qt-bugs@ issue : 208185 - Trolltech task ID : 208349 - bugs.kde.org number : 159014 - -diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp -index 419d456..41107a0 100644 ---- a/src/gui/widgets/qtabbar.cpp -+++ b/src/gui/widgets/qtabbar.cpp -@@ -678,8 +678,8 @@ void QTabBarPrivate::refresh() - layoutTabs(); - makeVisible(currentIndex); - q->update(); -- q->updateGeometry(); - } -+ q->updateGeometry(); - } - - /*! - -commit 8e28e0603a900e1b18ebfd14c4f87b16dabf4cf6 -Author: Christian Ehrlicher -Date: Fri Sep 19 17:41:26 2008 +0200 - - Fix configure.exe to do an out-of-source build on windows - - qt-bugs@ issue : N227213 - Trolltech task ID : none yet - -diff --git a/bin/syncqt b/bin/syncqt -index 7a9f1d3..b5a8e1c 100755 ---- a/bin/syncqt -+++ b/bin/syncqt -@@ -365,9 +365,13 @@ sub fixPaths { - $match_dir = $tmp; - $i = $slash; - } -+ my $cnt_ofs = 0; -+ if($match_dir =~ /^[a-zA-Z]:$/) { -+ $cnt_ofs = 1; -+ } - if($match_dir) { - my $after = substr($dir, length($match_dir)); -- my $count = ($after =~ tr,/,,); -+ my $count = ($after =~ tr,/,,) - $cnt_ofs; - my $dots = ""; - for(my $i = 0; $i < $count; $i++) { - $dots .= "../"; -diff --git a/projects.pro b/projects.pro -index 2596c0a..3ba0688 100644 ---- a/projects.pro -+++ b/projects.pro -@@ -127,6 +127,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/src/tools/moc/main.cpp b/src/tools/moc/main.cpp -index d519b09..7979836 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) - inSplitted.prepend(QLatin1String("..")); - } - inSplitted.append(inFileInfo.fileName()); -+#ifdef Q_WS_WIN -+ const QString rel = inSplitted.join(QLatin1String("/")); -+ const QString abs = inFileInfo.absoluteFilePath(); -+ return QFile::encodeName(rel.length() < abs.length() ? rel : abs); -+#else - return QFile::encodeName(inSplitted.join(QLatin1String("/"))); -+#endif - } - - - -commit 0afcf33127c6ccbe5dfaae4f4c5e02f28dc10ae1 -Author: Christian Ehrlicher -Date: Thu May 8 21:25:49 2008 +0200 - - When using qmake outside qt src tree, it sometimes generates wrong - paths (wrong path separator) - - qt-bugs@ issue : none - Trolltech task ID : 214661 - -diff --git a/qmake/property.cpp b/qmake/property.cpp -index 8ba89f9..dd78349 100644 ---- a/qmake/property.cpp -+++ b/qmake/property.cpp -@@ -81,29 +81,32 @@ QMakeProperty::keyBase(bool version) const - QString - QMakeProperty::value(QString v, bool just_check) - { -+ QString ret; - if(v == "QT_INSTALL_PREFIX") -- return QLibraryInfo::location(QLibraryInfo::PrefixPath); -+ ret = QLibraryInfo::location(QLibraryInfo::PrefixPath); - else if(v == "QT_INSTALL_DATA") -- return QLibraryInfo::location(QLibraryInfo::DataPath); -+ ret = QLibraryInfo::location(QLibraryInfo::DataPath); - else if(v == "QT_INSTALL_DOCS") -- return QLibraryInfo::location(QLibraryInfo::DocumentationPath); -+ ret = QLibraryInfo::location(QLibraryInfo::DocumentationPath); - else if(v == "QT_INSTALL_HEADERS") -- return QLibraryInfo::location(QLibraryInfo::HeadersPath); -+ ret = QLibraryInfo::location(QLibraryInfo::HeadersPath); - else if(v == "QT_INSTALL_LIBS") -- return QLibraryInfo::location(QLibraryInfo::LibrariesPath); -+ ret = QLibraryInfo::location(QLibraryInfo::LibrariesPath); - else if(v == "QT_INSTALL_BINS") -- return QLibraryInfo::location(QLibraryInfo::BinariesPath); -+ ret = QLibraryInfo::location(QLibraryInfo::BinariesPath); - else if(v == "QT_INSTALL_PLUGINS") -- return QLibraryInfo::location(QLibraryInfo::PluginsPath); -+ ret = QLibraryInfo::location(QLibraryInfo::PluginsPath); - else if(v == "QT_INSTALL_TRANSLATIONS") -- return QLibraryInfo::location(QLibraryInfo::TranslationsPath); -+ ret = QLibraryInfo::location(QLibraryInfo::TranslationsPath); - else if(v == "QT_INSTALL_CONFIGURATION") -- return QLibraryInfo::location(QLibraryInfo::SettingsPath); -+ ret = QLibraryInfo::location(QLibraryInfo::SettingsPath); - else if(v == "QT_INSTALL_EXAMPLES") -- return QLibraryInfo::location(QLibraryInfo::ExamplesPath); -+ ret = QLibraryInfo::location(QLibraryInfo::ExamplesPath); - else if(v == "QT_INSTALL_DEMOS") -- return QLibraryInfo::location(QLibraryInfo::DemosPath); -- else if(v == "QMAKE_MKSPECS") -+ ret = QLibraryInfo::location(QLibraryInfo::DemosPath); -+ if(!ret.isEmpty()) -+ return QDir::toNativeSeparators(ret); -+ if(v == "QMAKE_MKSPECS") - return qmake_mkspec_paths().join(Option::target_mode == Option::TARG_WIN_MODE ? ";" : ":"); - else if(v == "QMAKE_VERSION") - return qmake_version(); -@@ -116,7 +119,7 @@ QMakeProperty::value(QString v, bool just_check) - int slash = v.lastIndexOf('/'); - QVariant var = settings->value(keyBase(slash == -1) + v); - bool ok = var.isValid(); -- QString ret = var.toString(); -+ ret = var.toString(); - if(!ok) { - QString version = qmake_version(); - if(slash != -1) { - -commit 1ec9dd029abaa0f00798535fdb1722154b1c63f6 -Author: Rafael Fernández López -Date: Sun Oct 26 10:40:51 2008 +0100 - - In a treeview with columns like this: - - Column 1 | Column 2 | ... | Column k | ... | Column n - - When selecting with rubberband (by clicking on the blank part of the viewport) while Column k is - hidden, you get double items on the selection model, when asking for selection(). This is becase - ranges are incorrectly calculated when there are hidden columns. A way to reproduce: - - Column 1 | Column 2 | Column 4 (Column 3 is hidden) - item - item - item - x <- press button here and move it up to select items (on this same column) - - If you do like this: - - Column 1 | Column 2 | Column 4 (Column 3 is hidden) - item - item - item - x <- press button here and move it up - - you won't be able to reproduce, since you need the hidden column to be between the one you click and - the last one. The reason is that columnRanges returns two ranges when there is supposed to return 1 - range (even when there are hidden columns). - - qt-bugs@ issue : N232819 - Trolltech task ID : 232831 - bugs.kde.org number : 171436 - -diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp -index ed6ad03..dc147f2 100644 ---- a/src/gui/itemviews/qtreeview.cpp -+++ b/src/gui/itemviews/qtreeview.cpp -@@ -3575,7 +3575,7 @@ QList > 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; - -commit b274bbaf4768dcfdfcf95ceda08b6402ffedb80d -Author: George Goldberg -Date: Tue Apr 28 17:08:07 2009 +0200 - - This patch fixes deserialization of values with custom types when setting - properties on dbus adaptors. It is needed, in particular by telepathy/Qt - programs and libraries. The bug was reported to Nokia on 2009-01-07 along - with the patch supplied here. The summary of the issue from the Qt - Software task tracker follows: - - When calling the setter for a DBus property, if that property has a custom type - (e.g. a struct with dbus type (uss)), QtDBus fails to demarshall the - QDBusArgument before attempting to set the property on the adaptor. The result - is that it attempts to call adaptor->setProperty() with a QDBusArgument of type - "uss" instead of with the type of the custom struct. - - qt-bugs@ issue : N240326 - Qt Software task ID : 240608 - bugs.kde.org number : none - -diff --git a/src/dbus/qdbusinternalfilters.cpp b/src/dbus/qdbusinternalfilters.cpp -index c71f2f4..d261d01 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 valueArg = qvariant_cast(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(); -+ } - } - } - - -commit 9a3fe8fc4912bf82b791c4131f553c18140ca838 -Author: Thiago Macieira -Date: Sun Jun 21 13:17:13 2009 -0300 - - Import README.qt-copy from the original qt-copy - -diff --git a/README.kde-qt b/README.kde-qt -new file mode 100644 -index 0000000..f605a0b ---- /dev/null -+++ b/README.kde-qt -@@ -0,0 +1,188 @@ -+This is a copy of Qt version 4.5.1. It may include -+modifications which are necessary for KDE; these are listed in the -+patches directory. -+ -+1. Qt-copy patches -+================== -+ -+You may also consider running the apply_patches script before configuring qt-copy, -+which will apply all not yet applied patches from the patches/ directory that -+are considered safe (they mostly include optimizations and features that don't -+add new API). Note that most of those patches haven't been accepted -+by Qt Software yet. and therefore they'll make your qt-copy differ from official -+Qt version. -+ -+2. Configuring Qt -+================= -+ -+The recommended compile line is: -+ -+--default-config-begin-- -+./configure -qt-gif -debug -fast -no-exceptions -no-separate-debug-info \ -+ -system-libpng -system-libjpeg -system-zlib \ -+ -dbus -webkit -no-phonon -plugin-sql-mysql \ -+ -nomake examples -nomake demos -prefix -+--default-config-end-- -+ -+It contains "-debug", which greatly improves the use for backtraces (but -+also needs a lot more disk space and makes things slower). To build in -+release mode, replace it with "-release". -+ -+It also contains "-no-separate-debug-info", which disables separate .debug -+files. Instead, the debug information will be built into the libraries. -+This option is needed when you install Qt. -+If you don't install Qt, it can be useful to disable this option, -+thus having separate debug symbol files. With separate debug files, you can -+just move those debug files to another directory to remove Qt debug symbols. -+Moving the files back will enable Qt debug symbols again. -+This is useful if you rarely need to step into Qt functions during debugging, -+because GDB loads much faster and uses less memory without Qt debug symbols. -+In the rare case you need to step into Qt code, you can temporarily enable -+debug symbols again by moving the debug files back. You can even load the Qt -+debug symbols from within GDB on demand, using the "symbol-file" command. -+ -+It also contains the "-no-exceptions" argument, which disables C++ -+exception support. Disabling exception support may improve memory -+consumption if GCC is being used. However, that also disables the -+QtXmlPatterns module since that requires exception support. If you -+plan on using that module, remove the option. -+ -+If you are planning to compile Qt using an Icecream cluster you have to -+pass the option -no-pch (no precompiled headers) to configure to make -+distributed compilation work. -+ -+3. Compiling Qt -+=============== -+ -+To compile Qt on a Unix platform, run: -+ -+ export MAKEFLAGS=-j2 -+ make -+ make install -+ -+If your computer has more than one core or processor, you may consider -+increasing the "2" above. If you've got a compile farm available, you -+should adjust the -j argument to match the number of slots in that -+farm. -+ -+4. Modifying & rebuilding Qt -+============================ -+ -+If you make modifications to the Qt source code, you don't need to -+build everything again. Simply go to the directory containing the -+Makefile closest to the files you changed and run "make" again. -+ -+For example, if you modified src/corelib/io/qiodevice.cpp, do: -+ -+ cd src/corelib -+ make -+ -+Do not commit your modifications to qt-copy as such. If you have a fix -+that benefit others, see the "Creating Qt-copy patches" section below. -+ -+5. Building Qt examples and demos -+================================= -+ -+The "-nomake examples -nomake demos" arguments to the configure script -+mean that those two sections will not be configured for -+building. Which is unneeded for usage of the library. If you want to -+compile the examples or demos later; just enter either directory and -+type: -+ -+ qmake -+ make -+ -+6. Building Qt documentation (only applies to Snapshot versions of Qt) -+============================ -+ -+To build and install the documentation, run: -+ -+ make docs -+ ./config.status -+ make install -+ -+It is necessary to do this once only, even if you rebuild Qt later. -+ -+7. Using Qt uninstalled -+======================= -+ -+To use without having to install it, configure it as follows: -+ -+ ./configure -prefix $PWD -+ make sub-src -+ make sub-tools -+ -+Attention: DO NOT run -+ -+ make install -+ -+If you do, Qt will overwrite your include/ directory with its -+installation. -+ -+8. Creating Qt-copy patches -+=========================== -+ -+If you have fixed a bug in Qt or modified it in any way that may -+benefit others, please share your change in the form of a patch. Do -+not commit your changes directly to the qt-copy module because they -+may be lost in a future update if they have not been added to the -+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 next release of Qt), then -+it can be applied directly to qt-copy. In this case, the patch -+should still be placed in patches/ as usual, but it should have a -+header line -+ Applied: yes -+ -+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. -+ -+To create a patch, do the following: -+ a) make sure your Qt sources are clean of other changes. Run: -+ svn revert -R . -+ b) make your changes to the Qt source code and verify that it -+ compiles, links and works. -+ c) open the patches/README file and get the next patch number -+ (you must read and understand the README file; if you don't, ask for -+ help from other KDE developers) -+ d) create the patch with: -+ svn diff > patches/NNNN-short-description-of-your-patch.diff -+ where NNNN is the next available number. -+ e) open the file you've just created and add the header to it. The -+ header should be the template in patches/README followed by a longer -+ description of your patch. -+ -+Don't forget to submit your patch to qt-bugs@trolltech.com along with -+the long description of the issue found, if you haven't already. -+Qt Software does not monitor the patches/ directory, so qt-copy -+patches do not get automatically applied to Qt official releases. -+ -+When you receive the issue number and task tracker numbers, update the -+patch file. -+ -+9. Known issues with current Qt code -+==================================== -+ -+In case you have strange issues with non-resizing windows and similar, use -+ export QT_USE_NATIVE_WINDOWS=1 -+before starting KDE. -+ -+10. 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 -+top directory of your Qt sources: -+ -+ find . -name '*.moc' | xargs rm -+ -+Sometimes ./configure will refuse to run. You may need to: -+ rm .qmake.cache -+ -+If you think you may have run "make install" on an install-less Qt -+(srcdir == $QTDIR), run: -+ -+ svn revert -R include - -commit 39b24a10e4dee27357b9760b735c2ab98b132963 -Author: Thiago Macieira -Date: Sun Jun 21 13:46:54 2009 -0300 - - Update this file to reflect the workflow with Git, as well as use Git commands - -diff --git a/README.kde-qt b/README.kde-qt -index f605a0b..db3feb6 100644 ---- a/README.kde-qt -+++ b/README.kde-qt -@@ -1,27 +1,20 @@ --This is a copy of Qt version 4.5.1. It may include --modifications which are necessary for KDE; these are listed in the --patches directory. -+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 -+one. - --1. Qt-copy patches --================== -- --You may also consider running the apply_patches script before configuring qt-copy, --which will apply all not yet applied patches from the patches/ directory that --are considered safe (they mostly include optimizations and features that don't --add new API). Note that most of those patches haven't been accepted --by Qt Software yet. and therefore they'll make your qt-copy differ from official --Qt version. -- --2. Configuring Qt -+1. Configuring Qt - ================= - - The recommended compile line is: - - --default-config-begin-- --./configure -qt-gif -debug -fast -no-exceptions -no-separate-debug-info \ -- -system-libpng -system-libjpeg -system-zlib \ -- -dbus -webkit -no-phonon -plugin-sql-mysql \ -- -nomake examples -nomake demos -prefix -+ -+ ./configure -qt-gif -debug -fast -no-separate-debug-info \ -+ -system-libpng -system-libjpeg -system-zlib \ -+ -dbus -webkit -plugin-sql-mysql \ -+ -nomake examples -nomake demos -prefix -+ - --default-config-end-- - - It contains "-debug", which greatly improves the use for backtraces (but -@@ -31,6 +24,7 @@ release mode, replace it with "-release". - It also contains "-no-separate-debug-info", which disables separate .debug - files. Instead, the debug information will be built into the libraries. - This option is needed when you install Qt. -+ - If you don't install Qt, it can be useful to disable this option, - thus having separate debug symbol files. With separate debug files, you can - just move those debug files to another directory to remove Qt debug symbols. -@@ -41,17 +35,11 @@ In the rare case you need to step into Qt code, you can temporarily enable - debug symbols again by moving the debug files back. You can even load the Qt - debug symbols from within GDB on demand, using the "symbol-file" command. - --It also contains the "-no-exceptions" argument, which disables C++ --exception support. Disabling exception support may improve memory --consumption if GCC is being used. However, that also disables the --QtXmlPatterns module since that requires exception support. If you --plan on using that module, remove the option. -- - If you are planning to compile Qt using an Icecream cluster you have to - pass the option -no-pch (no precompiled headers) to configure to make - distributed compilation work. - --3. Compiling Qt -+2. Compiling Qt - =============== - - To compile Qt on a Unix platform, run: -@@ -65,34 +53,49 @@ increasing the "2" above. If you've got a compile farm available, you - should adjust the -j argument to match the number of slots in that - farm. - --4. Modifying & rebuilding Qt -+3. Modifying & rebuilding Qt - ============================ - - If you make modifications to the Qt source code, you don't need to - build everything again. Simply go to the directory containing the - Makefile closest to the files you changed and run "make" again. - --For example, if you modified src/corelib/io/qiodevice.cpp, do: -+For example, if you've modified src/corelib/io/qiodevice.cpp, do: - - cd src/corelib - make - --Do not commit your modifications to qt-copy as such. If you have a fix --that benefit others, see the "Creating Qt-copy patches" section below. -+If you make a change that is not temporary, you should create a Git -+commit out of it. However, you shouldn't push those changes to -+kde-qt.git. If you have a fix that benefit others, see the "Creating -+kde-qt.git modifications" section below. - --5. Building Qt examples and demos -+4. Building Qt examples and demos - ================================= - - The "-nomake examples -nomake demos" arguments to the configure script --mean that those two sections will not be configured for --building. Which is unneeded for usage of the library. If you want to --compile the examples or demos later; just enter either directory and --type: -+mean that those two sections will not be configured for building, -+which is unneeded for usage of the library. If you want to compile -+the examples or demos later, just enter either directory and type: - - qmake - make - --6. Building Qt documentation (only applies to Snapshot versions of Qt) -+5. Build Qt tests -+================= -+ -+(Official information: http://qt.gitorious.org/qt/pages/QtAutotestsEnvironment) -+ -+In order to run Qt tests, you must have a "developer build" of Qt. For -+that, you need to reconfigure Qt and add the "-developer-build" -+option. That option is technically equivalent to the options: -+ -+ -debug -prefix $PWD -DQT_BUILD_INTERNAL -+ -+To run a test, go to its source dir in tests/auto/testname. Type -+"make" to build it, then run it (either ./tst_testname, or "make install"). -+ -+6. Building Qt documentation - ============================ - - To build and install the documentation, run: -@@ -119,21 +122,25 @@ Attention: DO NOT run - If you do, Qt will overwrite your include/ directory with its - installation. - --8. Creating Qt-copy patches --=========================== -+8. Creating kde-qt.git modifications -+==================================== - - If you have fixed a bug in Qt or modified it in any way that may - benefit others, please share your change in the form of a patch. Do --not commit your changes directly to the qt-copy module because they -+not commit your changes directly to the main branch because they - may be lost in a future update if they have not been added to the - 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 next release of Qt), then --it can be applied directly to qt-copy. In this case, the patch --should still be placed in patches/ as usual, but it should have a --header line -- Applied: yes -+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 -+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: -+ -+ 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 -@@ -141,37 +148,42 @@ be a solution for the problem already or a new direction that should - be accounted for. - - To create a patch, do the following: -- a) make sure your Qt sources are clean of other changes. Run: -- svn revert -R . -- b) make your changes to the Qt source code and verify that it -- compiles, links and works. -- c) open the patches/README file and get the next patch number -- (you must read and understand the README file; if you don't, ask for -- help from other KDE developers) -- d) create the patch with: -- svn diff > patches/NNNN-short-description-of-your-patch.diff -- where NNNN is the next available number. -- e) open the file you've just created and add the header to it. The -- header should be the template in patches/README followed by a longer -- description of your patch. -- --Don't forget to submit your patch to qt-bugs@trolltech.com along with --the long description of the issue found, if you haven't already. --Qt Software does not monitor the patches/ directory, so qt-copy --patches do not get automatically applied to Qt official releases. -- --When you receive the issue number and task tracker numbers, update the --patch file. -- --9. Known issues with current Qt code --==================================== -- --In case you have strange issues with non-resizing windows and similar, use -- export QT_USE_NATIVE_WINDOWS=1 --before starting KDE. -- --10. Troubleshooting: Re-configuring and re-compiling --=================================================== -+ a) look at the listing of branches in -+ http://qt.gitorious.org/+kde-developers/qt/kde-qt/commits/HEAD and -+ select the next number. -+ -+ b) create a new branch out of a clean, released version of Qt, (for -+ example, 4.5.1), using the number above and a brief description of -+ your fix. For example: -+ git checkout -b patches/0180-window-role v4.5.1 -+ You can see the available released versions of Qt with: -+ 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). -+ -+ 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: -+ 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) -+ -+Don't forget to submit your patch to using the Qt Contribution Model, -+along with the long description of the issue found. See -+http://qt.gitorious.org/qt/pages/QtContributionGuidelines for -+information how. You can submit the branch you've just sent to the -+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 -@@ -185,4 +197,5 @@ Sometimes ./configure will refuse to run. You may need to: - If you think you may have run "make install" on an install-less Qt - (srcdir == $QTDIR), run: - -- svn revert -R include -+ rm -rf include -+ bin/syncqt - -commit 8731ab999b849dac4716e3d29f5f55ed8e56438e -Author: Thiago Macieira -Date: Thu Jun 25 13:50:29 2009 +0200 - - This patch makes the raster graphics system use shared images instead - of shared pixmaps. - - Shared memory pixmaps are deprecated since they are slower than shared - images with modern graphics hardware. They are also not supported by EXA - drivers and can be disabled in the latest version of the NVidia driver. - - qt-bugs@ issue : none - Qt Software task ID : none - bugs.kde.org number : none - -diff --git a/src/gui/image/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp -index 3745708..3c21fce 100644 ---- a/src/gui/image/qnativeimage.cpp -+++ b/src/gui/image/qnativeimage.cpp -@@ -147,7 +147,6 @@ QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /* - { - if (!X11->use_mitshm) { - xshmimg = 0; -- xshmpm = 0; - image = QImage(width, height, format); - return; - } -@@ -191,11 +190,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."; -- } - } - - -@@ -204,10 +198,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 07d5dfe..ba01854 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/painting/qwindowsurface_raster.cpp b/src/gui/painting/qwindowsurface_raster.cpp -index d6fb03b..09963d9 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 - -commit bb8255da422470c5012b6b1c4c24eb2afb6804dc -Author: Thiago Macieira -Date: Fri Jun 26 11:41:45 2009 +0200 - - Restore a section of the file that got removed due to conflict resolution. - - Thanks to Kevin Kofler for pointing this out - -diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp -index 33aec9e..53f020b 100644 ---- a/src/gui/kernel/qapplication_x11.cpp -+++ b/src/gui/kernel/qapplication_x11.cpp -@@ -1955,9 +1955,9 @@ 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 -- && defaultVisual->green_mask == 0xff00 -- && defaultVisual->blue_mask == 0xff); -+ X11->use_mitshm = defaultVisual->red_mask == 0xff0000 -+ && defaultVisual->green_mask == 0xff00 -+ && defaultVisual->blue_mask == 0xff; - } - } - #endif // QT_NO_MITSHM - -commit 3860708da46685c135ac4faf074a4d7dd9952de8 -Author: David Faure -Date: Fri Jun 26 13:38:02 2009 +0200 - - Add missing word in sentence - -diff --git a/README.kde-qt b/README.kde-qt -index db3feb6..1e5f8c7 100644 ---- a/README.kde-qt -+++ b/README.kde-qt -@@ -176,7 +176,7 @@ To create a patch, do the following: - 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) - --Don't forget to submit your patch to using the Qt Contribution Model, -+Don't forget to submit your patch to QtSoftware using the Qt Contribution Model, - along with the long description of the issue found. See - http://qt.gitorious.org/qt/pages/QtContributionGuidelines for - information how. You can submit the branch you've just sent to the - -commit 46a247a2c9a8c0c4456a02f6a0922d859d88fe76 -Author: David Faure -Date: Fri Jun 26 13:45:37 2009 +0200 - - "Building Qt documentation" said to run "make install", but obviously we - don't want that if using qt uninstalled -> swap both sections and add a - "if uninstalled" before the make install bit. - -diff --git a/README.kde-qt b/README.kde-qt -index 1e5f8c7..9e272c9 100644 ---- a/README.kde-qt -+++ b/README.kde-qt -@@ -95,18 +95,7 @@ option. That option is technically equivalent to the options: - To run a test, go to its source dir in tests/auto/testname. Type - "make" to build it, then run it (either ./tst_testname, or "make install"). - --6. Building Qt documentation --============================ -- --To build and install the documentation, run: -- -- make docs -- ./config.status -- make install -- --It is necessary to do this once only, even if you rebuild Qt later. -- --7. Using Qt uninstalled -+6. Using Qt uninstalled - ======================= - - To use without having to install it, configure it as follows: -@@ -122,6 +111,20 @@ Attention: DO NOT run - If you do, Qt will overwrite your include/ directory with its - installation. - -+7. Building Qt documentation -+============================ -+ -+To build and install the documentation, run: -+ -+ make docs -+ -+And if you don't use Qt uninstalled: -+ -+ ./config.status -+ make install -+ -+It is necessary to do all this once only, even if you rebuild Qt later. -+ - 8. Creating kde-qt.git modifications - ==================================== - - -commit 4b5ae1db24fa1b96f00ef62bd2e1063a8a313e5c -Author: Albert Astals Cid -Date: Sat Jun 27 14:19:23 2009 +0200 - - Fix #error line not to have a ' as it's not correct - -diff --git a/src/3rdparty/webkit/WebCore/DerivedSources.cpp b/src/3rdparty/webkit/WebCore/DerivedSources.cpp -index f698913..aaf8983 100644 ---- a/src/3rdparty/webkit/WebCore/DerivedSources.cpp -+++ b/src/3rdparty/webkit/WebCore/DerivedSources.cpp -@@ -334,5 +334,5 @@ - // want StaticConstructors.h to "pollute" all the source files we #include here - // accidentally, so we'll throw an error whenever any file includes it. - #ifdef StaticConstructors_h --#error Don't include any file in DerivedSources.cpp that includes StaticConstructors.h -+#error Do not include any file in DerivedSources.cpp that includes StaticConstructors.h - #endif - -commit 2d1727e396d5dca24ae0fb6a45d35ffc1abd0c12 -Author: Thiago Macieira -Date: Fri Jun 12 14:27:54 2009 +0200 - - Attempt to fix header installation for Phonon. - - This is the long-standing issue of whether Phonon headers should be - written with a capital P or a lowercase one. KDE releases of Phonon - had whereas Qt 4.4 had . - - I tried to solve this before by adding a Phonon subdir next to phonon - in include/, but that only compounded the error: the presence of two - dirs caused problems and the installation wasn't fixed. - - So instead try to place Phonon/ClassName inside include/phonon. And - fix the installation to do it properly: just copy the include/$lib dir - into the target, then overwrite the .h files with the sources from - src/$lib. - - Reviewed-by: Marius Storm-Olsen - (cherry picked from commit 4b43263b870c17fd813d1d34f97146f4c725083e) - -diff --git a/bin/syncqt b/bin/syncqt -index 137b25f..71d4bff 100755 ---- a/bin/syncqt -+++ b/bin/syncqt -@@ -308,8 +308,6 @@ sub syncHeader { - $header =~ s=\\=/=g; - return copyFile($iheader, $header) if($copy); - -- my $iheader_no_basedir = $iheader; -- $iheader_no_basedir =~ s,^$basedir/?,,; - unless(-e "$header") { - my $header_dir = dirname($header); - mkpath $header_dir, 0777; -@@ -802,10 +800,9 @@ foreach (@modules_to_sync) { - my $class = $_; - if ($class =~ m/::/) { - $class =~ s,::,/,g; -- $class = "../" . $class; - } - $class_lib_map_contents .= "QT_CLASS_LIB($_, $lib, $header_base)\n"; -- $header_copies++ if(syncHeader("$out_basedir/include/$lib/$class", $header, 0)); -+ $header_copies++ if(syncHeader("$out_basedir/include/$lib/$class", "$out_basedir/include/$lib/$header", 0)); - } - } else { - @headers = ( "$out_basedir/include/$lib/private/$header" ); -@@ -827,7 +824,6 @@ foreach (@modules_to_sync) { - my $class = $_; - if ($class =~ m/::/) { - $class =~ s,::,/,g; -- $class = "../" . $class; - } - my $class_header = fixPaths("$out_basedir/include/$lib/$class", - $current_dir) . " "; -@@ -848,25 +844,27 @@ foreach (@modules_to_sync) { - $master_contents .= "#endif\n"; - - unless($showonly) { -- #generate the "master" include file -- my $master_include = "$out_basedir/include/$lib/$lib"; -- $pri_install_files .= fixPaths($master_include, "$modules{$lib}") . " "; #get the master file installed too -- if(-e "$master_include") { -- open MASTERINCLUDE, "<$master_include"; -- local $/; -- binmode MASTERINCLUDE; -- my $oldmaster = ; -- close MASTERINCLUDE; -- $oldmaster =~ s/\r//g; # remove \r's , so comparison is ok on all platforms -- $master_include = 0 if($oldmaster eq $master_contents); -- } -- if($master_include && $master_contents) { -- my $master_dir = dirname($master_include); -- mkpath $master_dir, 0777; -- print "header (master) created for $lib\n"; -- open MASTERINCLUDE, ">$master_include"; -- print MASTERINCLUDE "$master_contents"; -- close MASTERINCLUDE; -+ unless ($lib eq "phonon") { -+ #generate the "master" include file -+ my $master_include = "$out_basedir/include/$lib/$lib"; -+ $pri_install_files .= fixPaths($master_include, "$modules{$lib}") . " "; #get the master file installed too -+ if($master_include && -e "$master_include") { -+ open MASTERINCLUDE, "<$master_include"; -+ local $/; -+ binmode MASTERINCLUDE; -+ my $oldmaster = ; -+ close MASTERINCLUDE; -+ $oldmaster =~ s/\r//g; # remove \r's , so comparison is ok on all platforms -+ $master_include = 0 if($oldmaster eq $master_contents); -+ } -+ if($master_include && $master_contents) { -+ my $master_dir = dirname($master_include); -+ mkpath $master_dir, 0777; -+ print "header (master) created for $lib\n"; -+ open MASTERINCLUDE, ">$master_include"; -+ print MASTERINCLUDE "$master_contents"; -+ close MASTERINCLUDE; -+ } - } - - #handle the headers.pri for each module -diff --git a/src/qt_install.pri b/src/qt_install.pri -index 6dd2074..ebeac8d 100644 ---- a/src/qt_install.pri -+++ b/src/qt_install.pri -@@ -15,11 +15,19 @@ qt_install_headers { - $$QT_SOURCE_TREE/src/corelib/arch/$$QT_ARCH/arch - } - -- flat_headers.files = $$INSTALL_HEADERS -- flat_headers.path = $$[QT_INSTALL_HEADERS]/Qt -- INSTALLS += flat_headers -+ equals(TARGET, phonon) { -+ class_headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET/Phonon -+ } else { -+ flat_headers.files = $$INSTALL_HEADERS -+ flat_headers.path = $$[QT_INSTALL_HEADERS]/Qt -+ INSTALLS += flat_headers - -- targ_headers.files = $$INSTALL_HEADERS $$SYNCQT.HEADER_CLASSES -+ class_headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET -+ } -+ class_headers.files = $$SYNCQT.HEADER_CLASSES -+ INSTALLS += class_headers -+ -+ targ_headers.files = $$INSTALL_HEADERS - targ_headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET - INSTALLS += targ_headers - } - -commit f9802f2bbbd23137acb5f80d1f131fa6b1a85752 -Author: Thiago Macieira -Date: Fri Jun 12 15:06:29 2009 +0200 - - Fix compilation after the last change. - - The #include header no longer exists. And the or - headers have never existed (neither for us nor for the - Phonon sources). You have to select each and every header that you do - want now. - - Reviewed-By: Marius Storm-Olsen - (cherry picked from commit 71be46c61c582d2f4635a1e420e44d57ddb5857a) - -diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.cpp -index b1a48fb..2e01100 100644 ---- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.cpp -+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.cpp -@@ -35,7 +35,10 @@ - #include - #include - #include --#include -+ -+#include -+#include -+#include - - using namespace Phonon; - -diff --git a/tools/designer/src/plugins/phononwidgets/videoplayertaskmenu.h b/tools/designer/src/plugins/phononwidgets/videoplayertaskmenu.h -index 2ca3b58..58255b2 100644 ---- a/tools/designer/src/plugins/phononwidgets/videoplayertaskmenu.h -+++ b/tools/designer/src/plugins/phononwidgets/videoplayertaskmenu.h -@@ -47,7 +47,8 @@ - #include - #include - --#include -+#include -+#include - - QT_BEGIN_NAMESPACE - - -commit 01f26d0756839fbe783c637ca7dec5b7987f7e14 -Author: Aaron Seigo -Date: Mon Jul 27 21:46:22 2009 -0600 - - Make QMenu respect the minimum width set - - If one sets a minimum width on a QMenu and that size is larger than the - smallest size needed by the large menu item, it ignores the minimum - width and just uses the largest menu item size. - - This results in ugly painting artifacts. This currently affects - (at least) the tasks widget in Plasma in KDE4. - -diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp -index 9fbbb04..5d62ea6 100644 ---- a/src/gui/widgets/qmenu.cpp -+++ b/src/gui/widgets/qmenu.cpp -@@ -280,7 +280,7 @@ void QMenuPrivate::calcActionRects(QMap &actionRects, QListminimumWidth(), qMax(max_column_width, sz.width())); - //wrapping - if (!scroll && - y+sz.height()+vmargin > dh - (q->style()->pixelMetric(QStyle::PM_MenuDesktopFrameWidth, 0, q) * 2)) { - -commit 1a94cd7b132497f70a2b97ec2b58f6e2b1c5076a -Author: Helio Chissini de Castro -Date: Fri Jul 10 16:00:13 2009 -0300 - - Fill gap of X.org/XFree multimedia/special/launcher keys - Qt up to 4.5.x is missing whole setup of multimedia keys already defined by X - -diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h -index 3edbca7..ddf27a8 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/gui/kernel/qkeymapper_x11.cpp b/src/gui/kernel/qkeymapper_x11.cpp -index 98ed61c..f55b491 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 894f663..665c058 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 diff --git a/kde-qt-patches.sh b/kde-qt-patches.sh new file mode 100644 index 0000000..47cee3e --- /dev/null +++ b/kde-qt-patches.sh @@ -0,0 +1,4 @@ +# quick-n-dirty method to fetch patches from -patched git branch +# unfortunately, requires an already checked-out copy of the git repo + +git format-patch --output-directory kde-qt-patches v4.5.3..4.5.3-patched diff --git a/qt-copy-patches-svn_checkout.sh b/qt-copy-patches-svn_checkout.sh deleted file mode 100755 index 281fbc7..0000000 --- a/qt-copy-patches-svn_checkout.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -DATE=$(date +%Y%m%d) -EXPORT_DIR=qt-copy - -set -x -rm -rf $EXPORT_DIR - -# trunk tracking qt-4.5 now -SVN_ROOT=svn://anonsvn.kde.org/home/kde/trunk/qt-copy - -svn export --non-recursive $SVN_ROOT $EXPORT_DIR/ -svn export $SVN_ROOT/patches $EXPORT_DIR/patches - -pushd $EXPORT_DIR -rm -f ../qt-copy-patches-${DATE}svn.tar.bz2 -tar cjf ../qt-copy-patches-${DATE}svn.tar.bz2 \ - .applied_patches apply_patches README.qt-copy patches/ -popd - -# cleanup -rm -rf $EXPORT_DIR - diff --git a/qt-x11-opensource-src-4.5.2-CVE-2009-1725.patch b/qt-x11-opensource-src-4.5.2-CVE-2009-1725.patch deleted file mode 100644 index 0ad9224..0000000 --- a/qt-x11-opensource-src-4.5.2-CVE-2009-1725.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff -up qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/html/HTMLTokenizer.cpp.orig qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/html/HTMLTokenizer.cpp ---- qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/html/HTMLTokenizer.cpp.orig 2009-08-18 12:28:26.000000000 +0200 -+++ qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/html/HTMLTokenizer.cpp 2009-08-18 12:33:43.000000000 +0200 -@@ -867,7 +867,9 @@ HTMLTokenizer::State HTMLTokenizer::pars - } - } else { - // FIXME: We should eventually colorize entities by sending them as a special token. -- checkBuffer(11); -+ // 12 bytes required: up to 10 bytes in m_cBuffer plus the -+ // leading '&' and trailing ';' -+ checkBuffer(12); - *dest++ = '&'; - for (unsigned i = 0; i < cBufferPos; i++) - dest[i] = m_cBuffer[i]; -@@ -878,7 +880,9 @@ HTMLTokenizer::State HTMLTokenizer::pars - } - } - } else { -- checkBuffer(10); -+ // 11 bytes required: up to 10 bytes in m_cBuffer plus the -+ // leading '&' -+ checkBuffer(11); - // ignore the sequence, add it to the buffer as plaintext - *dest++ = '&'; - for (unsigned i = 0; i < cBufferPos; i++) diff --git a/qt-x11-opensource-src-4.5.2-CVE-2009-2700.patch b/qt-x11-opensource-src-4.5.2-CVE-2009-2700.patch deleted file mode 100644 index 1e45226..0000000 --- a/qt-x11-opensource-src-4.5.2-CVE-2009-2700.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up qt-x11-opensource-src-4.5.2/src/network/ssl/qsslcertificate.cpp.orig qt-x11-opensource-src-4.5.2/src/network/ssl/qsslcertificate.cpp ---- qt-x11-opensource-src-4.5.2/src/network/ssl/qsslcertificate.cpp.orig 2009-08-31 16:46:48.000000000 +0200 -+++ qt-x11-opensource-src-4.5.2/src/network/ssl/qsslcertificate.cpp 2009-08-31 16:49:47.000000000 +0200 -@@ -377,7 +377,7 @@ QMultiMap(q_ASN1_STRING_data(genName->d.ia5)); -- const QString altName = QLatin1String(QByteArray(altNameStr, len)); -+ const QString altName = QString::fromLatin1(altNameStr, len); - if (genName->type == GEN_DNS) - result.insert(QSsl::DnsEntry, altName); - else if (genName->type == GEN_EMAIL) diff --git a/qt-x11-opensource-src-4.5.2-fix-webkit-drag-crash.patch b/qt-x11-opensource-src-4.5.2-fix-webkit-drag-crash.patch deleted file mode 100644 index 6a16e97..0000000 --- a/qt-x11-opensource-src-4.5.2-fix-webkit-drag-crash.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff -up qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/html/HTMLElement.cpp qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/html/HTMLElement.cpp -index 4caf336..b21a3fe 100644 ---- qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/html/HTMLElement.cpp -+++ qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/html/HTMLElement.cpp -@@ -44,6 +44,7 @@ - #include "XMLTokenizer.h" - #include "markup.h" - #include -+#include - - namespace WebCore { - -diff -up qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/page/DragController.cpp qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/page/DragController.cpp -index 10a11f2..c756da8 100644 ---- qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/page/DragController.cpp -+++ qt-x11-opensource-src-4.5.2/src/3rdparty/webkit/WebCore/page/DragController.cpp -@@ -157,7 +157,7 @@ void DragController::dragExited(DragData* dragData) - Frame* mainFrame = m_page->mainFrame(); - - if (RefPtr v = mainFrame->view()) { -- ClipboardAccessPolicy policy = m_document->securityOrigin()->isLocal() ? ClipboardReadable : ClipboardTypesReadable; -+ ClipboardAccessPolicy policy = (!m_document || m_document->securityOrigin()->isLocal()) ? ClipboardReadable : ClipboardTypesReadable; - RefPtr clipboard = dragData->createClipboard(policy); - clipboard->setSourceOperation(dragData->draggingSourceOperationMask()); - mainFrame->eventHandler()->cancelDragAndDrop(createMouseEvent(dragData), clipboard.get()); --- -1.6.2.5 - diff --git a/qt-x11-opensource-src-4.5.2-ossl10.patch b/qt-x11-opensource-src-4.5.2-ossl10.patch deleted file mode 100644 index f57b1df..0000000 --- a/qt-x11-opensource-src-4.5.2-ossl10.patch +++ /dev/null @@ -1,157 +0,0 @@ -diff -up qt-x11-opensource-src-4.5.2/src/network/ssl/qsslcertificate.cpp.openssl qt-x11-opensource-src-4.5.2/src/network/ssl/qsslcertificate.cpp ---- qt-x11-opensource-src-4.5.2/src/network/ssl/qsslcertificate.cpp.openssl 2009-06-20 06:57:57.000000000 +0200 -+++ qt-x11-opensource-src-4.5.2/src/network/ssl/qsslcertificate.cpp 2009-08-26 12:14:32.000000000 +0200 -@@ -362,7 +362,7 @@ QMultiMapx509) - return result; - -- STACK *altNames = (STACK *)q_X509_get_ext_d2i(d->x509, NID_subject_alt_name, 0, 0); -+ STACK_OF(GENERAL_NAME) *altNames = (STACK_OF(GENERAL_NAME) *)q_X509_get_ext_d2i(d->x509, NID_subject_alt_name, 0, 0); - - if (altNames) { - for (int i = 0; i < q_sk_GENERAL_NAME_num(altNames); ++i) { -@@ -383,7 +383,7 @@ QMultiMaptype == GEN_EMAIL) - result.insert(QSsl::EmailEntry, altName); - } -- q_sk_free(altNames); -+ q_sk_free((STACK *)altNames); - } - - return result; -diff -up qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl.cpp.openssl qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl.cpp ---- qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl.cpp.openssl 2009-06-20 06:57:57.000000000 +0200 -+++ qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl.cpp 2009-08-26 10:40:09.000000000 +0200 -@@ -911,7 +911,7 @@ QSslCipher QSslSocketBackendPrivate::ses - { - if (!ssl || !ctx) - return QSslCipher(); -- SSL_CIPHER *sessionCipher = q_SSL_get_current_cipher(ssl); -+ SSL_CIPHER *sessionCipher = (SSL_CIPHER *)q_SSL_get_current_cipher(ssl); - return sessionCipher ? QSslCipher_from_SSL_CIPHER(sessionCipher) : QSslCipher(); - } - -diff -up qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl_symbols.cpp.openssl qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl_symbols.cpp ---- qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl_symbols.cpp.openssl 2009-08-26 10:36:25.000000000 +0200 -+++ qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl_symbols.cpp 2009-08-26 12:40:30.000000000 +0200 -@@ -144,10 +144,10 @@ DEFINEFUNC(int, RAND_status, void, DUMMY - DEFINEFUNC(void, RSA_free, RSA *a, a, return, DUMMYARG) - DEFINEFUNC(void, sk_free, STACK *a, a, return, DUMMYARG) - DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return) --DEFINEFUNC2(char *, sk_value, STACK *a, a, int b, b, return 0, return) -+DEFINEFUNC2(OSSL_SKVALUE_RTYPE *, sk_value, STACK *a, a, int b, b, return 0, return) - DEFINEFUNC(int, SSL_accept, SSL *a, a, return -1, return) - DEFINEFUNC(int, SSL_clear, SSL *a, a, return -1, return) --DEFINEFUNC3(char *, SSL_CIPHER_description, SSL_CIPHER *a, a, char *b, b, int c, c, return 0, return) -+DEFINEFUNC3(char *, SSL_CIPHER_description, OSSL_MORECONST SSL_CIPHER *a, a, char *b, b, int c, c, return 0, return) - DEFINEFUNC(int, SSL_connect, SSL *a, a, return -1, return) - #if OPENSSL_VERSION_NUMBER >= 0x00908000L - // 0.9.8 broke SC and BC by changing this function's signature. -@@ -157,7 +157,7 @@ DEFINEFUNC(int, SSL_CTX_check_private_ke - #endif - DEFINEFUNC4(long, SSL_CTX_ctrl, SSL_CTX *a, a, int b, b, long c, c, void *d, d, return -1, return) - DEFINEFUNC(void, SSL_CTX_free, SSL_CTX *a, a, return, DUMMYARG) --DEFINEFUNC(SSL_CTX *, SSL_CTX_new, SSL_METHOD *a, a, return 0, return) -+DEFINEFUNC(SSL_CTX *, SSL_CTX_new, OSSL_MORECONST SSL_METHOD *a, a, return 0, return) - DEFINEFUNC2(int, SSL_CTX_set_cipher_list, SSL_CTX *a, a, const char *b, b, return -1, return) - DEFINEFUNC(int, SSL_CTX_set_default_verify_paths, SSL_CTX *a, a, return -1, return) - DEFINEFUNC3(void, SSL_CTX_set_verify, SSL_CTX *a, a, int b, b, int (*c)(int, X509_STORE_CTX *), c, return, DUMMYARG) -@@ -174,7 +174,7 @@ DEFINEFUNC(STACK_OF(SSL_CIPHER) *, SSL_g - #else - DEFINEFUNC(STACK_OF(SSL_CIPHER) *, SSL_get_ciphers, SSL *a, a, return 0, return) - #endif --DEFINEFUNC(SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return 0, return) -+DEFINEFUNC(OSSL_MORECONST SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return 0, return) - DEFINEFUNC2(int, SSL_get_error, SSL *a, a, int b, b, return -1, return) - DEFINEFUNC(STACK_OF(X509) *, SSL_get_peer_cert_chain, SSL *a, a, return 0, return) - DEFINEFUNC(X509 *, SSL_get_peer_certificate, SSL *a, a, return 0, return) -@@ -192,14 +192,14 @@ DEFINEFUNC3(void, SSL_set_bio, SSL *a, a - DEFINEFUNC(void, SSL_set_accept_state, SSL *a, a, return, DUMMYARG) - DEFINEFUNC(void, SSL_set_connect_state, SSL *a, a, return, DUMMYARG) - DEFINEFUNC(int, SSL_shutdown, SSL *a, a, return -1, return) --DEFINEFUNC(SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) --DEFINEFUNC(SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) --DEFINEFUNC(SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) --DEFINEFUNC(SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) --DEFINEFUNC(SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) --DEFINEFUNC(SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) --DEFINEFUNC(SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return) --DEFINEFUNC(SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return) -+DEFINEFUNC(OSSL_MORECONST SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) -+DEFINEFUNC(OSSL_MORECONST SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) -+DEFINEFUNC(OSSL_MORECONST SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) -+DEFINEFUNC(OSSL_MORECONST SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) -+DEFINEFUNC(OSSL_MORECONST SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) -+DEFINEFUNC(OSSL_MORECONST SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) -+DEFINEFUNC(OSSL_MORECONST SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return) -+DEFINEFUNC(OSSL_MORECONST SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return) - DEFINEFUNC3(int, SSL_write, SSL *a, a, const void *b, b, int c, c, return -1, return) - DEFINEFUNC2(int, X509_cmp, X509 *a, a, X509 *b, b, return -1, return) - #ifndef SSLEAY_MACROS -diff -up qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl_symbols_p.h.openssl qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl_symbols_p.h ---- qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl_symbols_p.h.openssl 2009-06-20 06:57:57.000000000 +0200 -+++ qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl_symbols_p.h 2009-08-26 10:35:25.000000000 +0200 -@@ -254,12 +254,20 @@ int q_PEM_write_bio_RSA_PUBKEY(BIO *a, R - void q_RAND_seed(const void *a, int b); - int q_RAND_status(); - void q_RSA_free(RSA *a); -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+#define STACK _STACK -+#define OSSL_SKVALUE_RTYPE void -+#define OSSL_MORECONST const -+#else -+#define OSSL_SKVALUE_RTYPE char -+#define OSSL_MORECONST -+#endif - void q_sk_free(STACK *a); - int q_sk_num(STACK *a); --char * q_sk_value(STACK *a, int b); -+OSSL_SKVALUE_RTYPE * q_sk_value(STACK *a, int b); - int q_SSL_accept(SSL *a); - int q_SSL_clear(SSL *a); --char *q_SSL_CIPHER_description(SSL_CIPHER *a, char *b, int c); -+char *q_SSL_CIPHER_description(OSSL_MORECONST SSL_CIPHER *a, char *b, int c); - int q_SSL_connect(SSL *a); - #if OPENSSL_VERSION_NUMBER >= 0x00908000L - // 0.9.8 broke SC and BC by changing this function's signature. -@@ -269,7 +277,7 @@ int q_SSL_CTX_check_private_key(SSL_CTX - #endif - long q_SSL_CTX_ctrl(SSL_CTX *a, int b, long c, void *d); - void q_SSL_CTX_free(SSL_CTX *a); --SSL_CTX *q_SSL_CTX_new(SSL_METHOD *a); -+SSL_CTX *q_SSL_CTX_new(OSSL_MORECONST SSL_METHOD *a); - int q_SSL_CTX_set_cipher_list(SSL_CTX *a, const char *b); - int q_SSL_CTX_set_default_verify_paths(SSL_CTX *a); - void q_SSL_CTX_set_verify(SSL_CTX *a, int b, int (*c)(int, X509_STORE_CTX *)); -@@ -286,7 +294,7 @@ STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers( - #else - STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(SSL *a); - #endif --SSL_CIPHER *q_SSL_get_current_cipher(SSL *a); -+OSSL_MORECONST SSL_CIPHER *q_SSL_get_current_cipher(SSL *a); - int q_SSL_get_error(SSL *a, int b); - STACK_OF(X509) *q_SSL_get_peer_cert_chain(SSL *a); - X509 *q_SSL_get_peer_certificate(SSL *a); -@@ -304,14 +312,14 @@ void q_SSL_set_bio(SSL *a, BIO *b, BIO * - void q_SSL_set_accept_state(SSL *a); - void q_SSL_set_connect_state(SSL *a); - int q_SSL_shutdown(SSL *a); --SSL_METHOD *q_SSLv2_client_method(); --SSL_METHOD *q_SSLv3_client_method(); --SSL_METHOD *q_SSLv23_client_method(); --SSL_METHOD *q_TLSv1_client_method(); --SSL_METHOD *q_SSLv2_server_method(); --SSL_METHOD *q_SSLv3_server_method(); --SSL_METHOD *q_SSLv23_server_method(); --SSL_METHOD *q_TLSv1_server_method(); -+OSSL_MORECONST SSL_METHOD *q_SSLv2_client_method(); -+OSSL_MORECONST SSL_METHOD *q_SSLv3_client_method(); -+OSSL_MORECONST SSL_METHOD *q_SSLv23_client_method(); -+OSSL_MORECONST SSL_METHOD *q_TLSv1_client_method(); -+OSSL_MORECONST SSL_METHOD *q_SSLv2_server_method(); -+OSSL_MORECONST SSL_METHOD *q_SSLv3_server_method(); -+OSSL_MORECONST SSL_METHOD *q_SSLv23_server_method(); -+OSSL_MORECONST SSL_METHOD *q_TLSv1_server_method(); - int q_SSL_write(SSL *a, const void *b, int c); - int q_X509_cmp(X509 *a, X509 *b); - #ifdef SSLEAY_MACROS diff --git a/qt-x11-opensource-src-4.5.2-system_ca_certificates.patch b/qt-x11-opensource-src-4.5.2-system_ca_certificates.patch deleted file mode 100644 index 7284020..0000000 --- a/qt-x11-opensource-src-4.5.2-system_ca_certificates.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff -up qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl.cpp.me qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl.cpp ---- qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl.cpp.me 2009-09-09 14:28:38.000000000 +0200 -+++ qt-x11-opensource-src-4.5.2/src/network/ssl/qsslsocket_openssl.cpp 2009-09-09 15:00:07.000000000 +0200 -@@ -482,31 +482,20 @@ void QSslSocketPrivate::resetDefaultCiph - - QList QSslSocketPrivate::systemCaCertificates() - { --#ifdef QQ_OS_UNIX -+ QFile caBundle; -+ -+#ifdef Q_OS_UNIX - // Check known locations for the system's default bundle. ### On Windows, - // we should use CAPI to find the bundle, and not rely on default unix - // locations. -- const char *standardLocations[] = {"/etc/ssl/certs/", --#if 0 -- // KDE uses KConfig for its SSL store, -- // but it also stores the bundle at -- // this location -- "$HOME/.kde/share/apps/kssl/ca-bundle.crt", --#endif -- 0}; -- const char **it = standardLocations; -- QStringList nameFilter; -- nameFilter << QLatin1String("*.pem") << QLatin1String("*.crt"); -- while (*it) { -- if (QDirIterator(QLatin1String(*it), nameFilter).hasNext()) -- return certificatesFromPath(QLatin1String(*it)); -- ++it; -- } -+ caBundle.setFileName(QLatin1String("/etc/pki/tls/certs/ca-bundle.crt")); -+ if (caBundle.open(QIODevice::ReadOnly | QIODevice::Text)) -+ return QSslCertificate::fromDevice(&caBundle); - #endif - - // Qt provides a default bundle when we cannot detect the system's default - // bundle. -- QFile caBundle(QLatin1String(":/trolltech/network/ssl/qt-ca-bundle.crt")); -+ caBundle.setFileName(QLatin1String(":/trolltech/network/ssl/qt-ca-bundle.crt")); - if (caBundle.open(QIODevice::ReadOnly | QIODevice::Text)) - return QSslCertificate::fromDevice(&caBundle); - diff --git a/qt-x11-opensource-src-4.5.2-timestamp.patch b/qt-x11-opensource-src-4.5.2-timestamp.patch deleted file mode 100644 index 696e8a8..0000000 --- a/qt-x11-opensource-src-4.5.2-timestamp.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 9e5fa633913ef952ca4ef5312fe396bcfc885321 Mon Sep 17 00:00:00 2001 -From: Denis Dzyubenko -Date: Wed, 22 Jul 2009 17:12:17 +0200 -Subject: [PATCH] Revert "Added a check that X11 timestamp goes forward only." - -In some cases we might get an invalid timestamp that is far away in -the future, so remembering it will break all consequent X calls that -require a timestamp because it just contains junk (for example -clipboard will stop working). This happens with XIM+SCIM pair - -whenever we start input method and type something to the widget, we -get a XKeyPress event with a commited string, however the 'serial' and -'time' members of the XEvent structure are not initialized (according -to valgrind) and contain junk. - -This reverts commit 2ed015b8a0ffad63f0f59b0e2255057f416895fb. - -Reviewed-By: Brad ---- - src/gui/kernel/qapplication_x11.cpp | 35 +++++++++++++++-------------------- - 1 files changed, 15 insertions(+), 20 deletions(-) - -diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp -index 163ceb6..abedfd6 100644 ---- a/src/gui/kernel/qapplication_x11.cpp -+++ b/src/gui/kernel/qapplication_x11.cpp -@@ -3142,48 +3142,43 @@ int QApplication::x11ProcessEvent(XEvent* event) - #ifdef ALIEN_DEBUG - //qDebug() << "QApplication::x11ProcessEvent:" << event->type; - #endif -- Time time = 0, userTime = 0; - switch (event->type) { - case ButtonPress: - pressed_window = event->xbutton.window; -- userTime = event->xbutton.time; -+ X11->userTime = event->xbutton.time; - // fallthrough intended - case ButtonRelease: -- time = event->xbutton.time; -+ X11->time = event->xbutton.time; - break; - case MotionNotify: -- time = event->xmotion.time; -+ X11->time = event->xmotion.time; - break; - case XKeyPress: -- userTime = event->xkey.time; -+ X11->userTime = event->xkey.time; - // fallthrough intended - case XKeyRelease: -- time = event->xkey.time; -+ X11->time = event->xkey.time; - break; - case PropertyNotify: -- time = event->xproperty.time; -+ X11->time = event->xproperty.time; - break; - case EnterNotify: - case LeaveNotify: -- time = event->xcrossing.time; -+ X11->time = event->xcrossing.time; - break; - case SelectionClear: -- time = event->xselectionclear.time; -+ X11->time = event->xselectionclear.time; - break; - default: --#ifndef QT_NO_XFIXES -- if (X11->use_xfixes && event->type == (X11->xfixes_eventbase + XFixesSelectionNotify)) { -- XFixesSelectionNotifyEvent *req = -- reinterpret_cast(event); -- time = req->selection_timestamp; -- } --#endif - break; - } -- if (time > X11->time) -- X11->time = time; -- if (userTime > X11->userTime) -- X11->userTime = userTime; -+#ifndef QT_NO_XFIXES -+ if (X11->use_xfixes && event->type == (X11->xfixes_eventbase + XFixesSelectionNotify)) { -+ XFixesSelectionNotifyEvent *req = -+ reinterpret_cast(event); -+ X11->time = req->selection_timestamp; -+ } -+#endif - - QETWidget *widget = (QETWidget*)QWidget::find((WId)event->xany.window); - --- -1.6.1 - diff --git a/qt-x11-opensource-src-4.5.3-system_ca_certificates.patch b/qt-x11-opensource-src-4.5.3-system_ca_certificates.patch new file mode 100644 index 0000000..2dfa554 --- /dev/null +++ b/qt-x11-opensource-src-4.5.3-system_ca_certificates.patch @@ -0,0 +1,25 @@ +diff -up qt-x11-opensource-src-4.5.3/src/network/ssl/qsslsocket_openssl.cpp.system_ca_certificates qt-x11-opensource-src-4.5.3/src/network/ssl/qsslsocket_openssl.cpp +--- qt-x11-opensource-src-4.5.3/src/network/ssl/qsslsocket_openssl.cpp.system_ca_certificates 2009-09-29 06:01:38.000000000 -0500 ++++ qt-x11-opensource-src-4.5.3/src/network/ssl/qsslsocket_openssl.cpp 2009-10-02 11:20:10.674662746 -0500 +@@ -482,8 +482,20 @@ void QSslSocketPrivate::resetDefaultCiph + + QList QSslSocketPrivate::systemCaCertificates() + { ++ ++ QFile caBundle; ++ ++#ifdef Q_OS_UNIX ++ // Check known locations for the system's default bundle. ### On Windows, ++ // we should use CAPI to find the bundle, and not rely on default unix ++ // locations. ++ caBundle.setFileName(QLatin1String("/etc/pki/tls/certs/ca-bundle.crt")); ++ if (caBundle.open(QIODevice::ReadOnly | QIODevice::Text)) ++ return QSslCertificate::fromDevice(&caBundle); ++#endif ++ + // Qt provides a default bundle of certificates +- QFile caBundle(QLatin1String(":/trolltech/network/ssl/qt-ca-bundle.crt")); ++ caBundle.setFileName(QLatin1String(":/trolltech/network/ssl/qt-ca-bundle.crt")); + if (caBundle.open(QIODevice::ReadOnly | QIODevice::Text)) + return QSslCertificate::fromDevice(&caBundle); + diff --git a/qt.spec b/qt.spec index 2915089..7354b17 100644 --- a/qt.spec +++ b/qt.spec @@ -9,14 +9,14 @@ Summary: Qt toolkit Name: qt Epoch: 1 -Version: 4.5.2 -Release: 25%{?dist} +Version: 4.5.3 +Release: 4%{?dist} # See LGPL_EXCEPTIONS.txt, LICENSE.GPL3, respectively, for exception details License: LGPLv2 with exceptions or GPLv3 with exceptions Group: System Environment/Libraries Url: http://www.qtsoftware.com/ -Source0: ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-%{version}.tar.bz2 +Source0: ftp://ftp.qt.nokia.com/qt/source/qt-x11-opensource-src-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Obsoletes: qt4 < %{version}-%{release} Provides: qt4 = %{version}-%{release} @@ -42,7 +42,7 @@ Patch17: qt-x11-opensource-src-4.5.2-pulseaudio.patch Patch19: qt-x11-opensource-src-4.5.1-phonon.patch Patch21: qt-x11-opensource-src-4.5.2-gst-pulsaudio.patch # use system ca-bundle certs, http://bugzilla.redhat.com/521911 -Patch22: qt-x11-opensource-src-4.5.2-system_ca_certificates.patch +Patch22: qt-x11-opensource-src-4.5.3-system_ca_certificates.patch Requires: ca-certificates # disable JavaScriptCore JIT as it crashes with SE Linux # http://bugzilla.redhat.com/527079 @@ -57,21 +57,30 @@ Patch53: qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch # fix invalid assumptions about mysql_config --libs # http://bugzilla.redhat.com/440673 Patch54: qt-x11-opensource-src-4.5.1-mysql_config.patch -Patch55: qt-x11-opensource-src-4.5.2-timestamp.patch -# compile with openssl-1.0 -Patch56: qt-x11-opensource-src-4.5.2-ossl10.patch -## upstream/security patches -Patch100: qt-x11-opensource-src-4.5.2-CVE-2009-1725.patch -Patch101: qt-x11-opensource-src-4.5.2-CVE-2009-2700.patch -Patch102: qt-x11-opensource-src-4.5.2-fix-webkit-drag-crash.patch +# security patches + +# kde-qt git patches +Patch201: 0001-This-patch-uses-object-name-as-a-fallback-for-window.patch +Patch202: 0002-This-patch-makes-override-redirect-windows-popup-me.patch +Patch203: 0003-This-patch-changes-QObjectPrivateVersion-thus-preve.patch +Patch204: 0004-This-patch-adds-support-for-using-isystem-to-allow.patch +Patch205: 0005-When-tabs-are-inserted-or-removed-in-a-QTabBar.patch +Patch206: 0006-Fix-configure.exe-to-do-an-out-of-source-build-on-wi.patch +Patch207: 0007-When-using-qmake-outside-qt-src-tree-it-sometimes-g.patch +Patch208: 0008-In-a-treeview-with-columns-like-this.patch +Patch209: 0009-This-patch-fixes-deserialization-of-values-with-cust.patch +Patch210: 0010-Import-README.qt-copy-from-the-original-qt-copy.patch +Patch211: 0011-Update-this-file-to-reflect-the-workflow-with-Git-a.patch +Patch212: 0274-shm-native-image-fix.patch +Patch213: 0015-Make-QMenu-respect-the-minimum-width-set.patch +Patch214: 0016-Fill-gap-of-X.org-XFree-multimedia-special-launcher.patch +Patch215: 0017-Add-context-to-tr-calls-in-QShortcut.patch -# switch to kde-qt branches, qt-copy doesn't exist anymore -Patch200: kde-qt-patches-20090820git.patch # these patches are not merged yet in kde-qt branches -Patch201: 0118-qtcopy-define.diff -Patch202: 0283-do-not-deduce-scrollbar-extent-twice.diff -Patch203: 0285-qgv-dontshowchildren.diff +Patch301: 0118-qtcopy-define.diff +Patch302: 0283-do-not-deduce-scrollbar-extent-twice.diff +Patch303: 0285-qgv-dontshowchildren.diff Source10: http://gstreamer.freedesktop.org/data/images/artwork/gstreamer-logo.svg Source11: hi16-phonon-gstreamer.png @@ -370,19 +379,30 @@ Qt libraries used for drawing widgets and OpenGL items. %patch52 -p1 -b .sparc64 %patch53 -p1 -b .qatomic-inline-asm %patch54 -p1 -b .mysql_config -%patch55 -p1 -b .timestamp -%patch56 -p1 -b .ossl10 -# upstream/security fixes -%patch100 -p1 -b .CVE-2009-1725 -%patch101 -p1 -b .CVE-2009-2700 -%patch102 -p1 -b .webkit_drag_crash +# security fixes # kde-qt branch -%patch200 -p1 -b .kde-qt-patches-20090820git -%patch201 -p0 -b .0118-qtcopy-define -%patch202 -p0 -b .0283-do-not-deduce-scrollbar-extent-twice -%patch203 -p0 -b .0285-qgv-dontshowchildren +%patch201 -p1 -b .kde-qt-0001 +%patch202 -p1 -b .kde-qt-0002 +%patch203 -p1 -b .kde-qt-0003 +%patch204 -p1 -b .kde-qt-0004 +%patch205 -p1 -b .kde-qt-0005 +%patch206 -p1 -b .kde-qt-0006 +%patch207 -p1 -b .kde-qt-0007 +%patch208 -p1 -b .kde-qt-0008 +%patch209 -p1 -b .kde-qt-0009 +%patch210 -p1 -b .kde-qt-0010 +%patch211 -p1 -b .kde-qt-0011 +%patch212 -p1 -b .0274-shm-native-image-fix +%patch213 -p1 -b .kde-qt-0015 +%patch214 -p1 -b .kde-qt-0016 +%patch215 -p1 -b .kde-qt-0017 + +# not yet merged ones +%patch301 -p0 -b .0118-qtcopy-define +%patch302 -p0 -b .0283-do-not-deduce-scrollbar-extent-twice +%patch303 -p0 -b .0285-qgv-dontshowchildren # drop -fexceptions from $RPM_OPT_FLAGS RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'` @@ -419,8 +439,11 @@ if [ "%{_lib}" == "lib64" ] ; then sed -i -e "s,/lib /usr/lib,/%{_lib} /usr/%{_lib},g" config.tests/{unix,x11}/*.test fi -# let syncqt to create new header -rm -rf include +# let makefile create missing .qm files, the .qm files should be included in qt upstream +for f in translations/*.ts ; do + touch ${f%.ts}.qm +done + %build @@ -485,6 +508,9 @@ rm -rf include make %{?_smp_mflags} +# recreate .qm files +LD_LIBRARY_PATH=`pwd`/lib bin/lrelease translations/*.ts + %install rm -rf %{buildroot} @@ -528,6 +554,7 @@ sed -i -e "s|^QMAKE_PRL_LIBS|#QMAKE_PRL_LIBS|" %{buildroot}%{_qt4_libdir}/*.prl # .la files, die, die, die. rm -f %{buildroot}%{_qt4_libdir}/lib*.la + %if 0 #if "%{_qt4_docdir}" != "%{_qt4_prefix}/doc" # -doc make symbolic link to _qt4_docdir @@ -943,19 +970,21 @@ fi %changelog -* Fri Oct 09 2009 Rex Dieter - 4.5.2-25 -- qt webkit crash on drag (#528094) +* Sat Oct 10 2009 Than Ngo - 4.5.3-4 +- fix translation build issue +- rhel cleanup -* Tue Oct 06 2009 Jaroslav Reznik - 4.5.2-24 +* Tue Oct 06 2009 Jaroslav Reznik - 4.5.3-3 - disable JavaScriptCore JIT, SE Linux crashes (#527079) -* Sun Oct 04 2009 Than Ngo - 4.5.2-23 -- rhel cleanup - -* Sat Oct 03 2009 Rex Dieter - 4.5.2-22 +* Fri Oct 02 2009 Than Ngo - 4.5.3-2 +- cleanup patches - if ! phonon_internal, exclude more/all phonon headers - qt-devel must Requires: phonon-devel (#520323) +* Thu Oct 01 2009 Rex Dieter - 4.5.3-1 +- qt-4.5.3 + * Tue Sep 29 2009 Rex Dieter - 4.5.2-21 - switch to external/kde phonon diff --git a/sources b/sources index 1d95bf9..d8e2350 100644 --- a/sources +++ b/sources @@ -1,10 +1,10 @@ d9f511e4b51983b4e10eb58b320416d5 hi128-app-qt4-logo.png 6dcc0672ff9e60a6b83f95c5f42bec5b hi48-app-qt4-logo.png 8e3924f417fea67f72b2105faed2119c gstreamer-logo.svg -28a7e8ac9805a6f614d2a27ee1a6ac9d qt-x11-opensource-src-4.5.2.tar.bz2 60de9d7e1cddd019f09fd036f0e5413a hi128-phonon-gstreamer.png 7ca265e0cf75b3b4c81e1490d3dba3be hi16-phonon-gstreamer.png 0a9f69d901aded140d4fed969c22e14f hi22-phonon-gstreamer.png 12db12c009b722a6dc141f78feb7e330 hi32-phonon-gstreamer.png 86c34a1b81d44980b1381f94ed6b7a23 hi48-phonon-gstreamer.png 153505c71ec021b0a3bd4b74f2492e93 hi64-phonon-gstreamer.png +3988cf9af68be2df8a8000ede231de9b qt-x11-opensource-src-4.5.3.tar.gz