From c74f0550cb712c0f3211dbe1731be399452d7a85 Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Oct 10 2009 22:30:27 +0000 Subject: sycn w/devel (4.5.3 goodness) --- diff --git a/.cvsignore b/.cvsignore index 1d25126..870ad62 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,5 +1,10 @@ hi128-app-qt4-logo.png hi48-app-qt4-logo.png -qt-x11-opensource-src-4.5.1.tar.bz2 -qt-copy-patches-20090424svn.tar.bz2 -qt-copy-patches-20090522svn.tar.bz2 +gstreamer-logo.svg +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/0118-qtcopy-define.diff b/0118-qtcopy-define.diff new file mode 100644 index 0000000..e3b86a8 --- /dev/null +++ b/0118-qtcopy-define.diff @@ -0,0 +1,24 @@ +qt-bugs@ issue : none +Trolltech task ID : none +applied: yes +author: David Faure + +Needed to distinguish qt-copy from released versions of qt, at least while +we backport API additions to qt-copy. + +Index: src/corelib/global/qglobal.h +=================================================================== +--- src/corelib/global/qglobal.h (revision 536662) ++++ src/corelib/global/qglobal.h (working copy) +@@ -38,6 +38,11 @@ + #include + #endif + ++/* QT_KDE_QT_COPY is set in qt-copy so that we know when we can use features backported to qt-copy ++ Keep in mind that it should also work with the right release of Qt, so use something like: ++ #if defined(QT_KDE_QT_COPY) || QT_VERSION >= 0x040200 */ ++#define QT_KDE_QT_COPY ++ + /* + The operating system, must be one of: (Q_OS_x) + 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/0283-do-not-deduce-scrollbar-extent-twice.diff b/0283-do-not-deduce-scrollbar-extent-twice.diff new file mode 100644 index 0000000..53ec85e --- /dev/null +++ b/0283-do-not-deduce-scrollbar-extent-twice.diff @@ -0,0 +1,35 @@ +qt-bugs@ issue : none +Qt Software task ID : none +bugs.kde.org number : none +applied: no +author: Aurélien Gâteau + +Do not deduce scrollbar extent twice if scrollbar policy is +Qt::ScrollBarAlwaysOn. + +This patch has been merged in master but won't be in 4.5. +http://qt.gitorious.org/qt/qt/merge_requests/432 + +--- src/gui/itemviews/qlistview.cpp ++++ src/gui/itemviews/qlistview.cpp +@@ -1969,10 +1969,16 @@ void QListViewPrivate::prepareItemsLayout() + int frameAroundContents = 0; + if (q->style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents)) + frameAroundContents = q->style()->pixelMetric(QStyle::PM_DefaultFrameWidth) * 2; +- int verticalMargin = vbarpolicy==Qt::ScrollBarAlwaysOff ? 0 : +- q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, q->verticalScrollBar()) + frameAroundContents; +- int horizontalMargin = hbarpolicy==Qt::ScrollBarAlwaysOff ? 0 : +- q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, q->horizontalScrollBar()) + frameAroundContents; ++ ++ // maximumViewportSize() already takes scrollbar into account if policy is ++ // Qt::ScrollBarAlwaysOn but scrollbar extent must be deduced if policy ++ // is Qt::ScrollBarAsNeeded ++ int verticalMargin = vbarpolicy==Qt::ScrollBarAsNeeded ++ ? q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, q->verticalScrollBar()) + frameAroundContents ++ : 0; ++ int horizontalMargin = hbarpolicy==Qt::ScrollBarAsNeeded ++ ? q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, q->horizontalScrollBar()) + frameAroundContents ++ : 0; + + layoutBounds.adjust(0, 0, -verticalMargin, -horizontalMargin); + diff --git a/0285-qgv-dontshowchildren.diff b/0285-qgv-dontshowchildren.diff new file mode 100644 index 0000000..52fb798 --- /dev/null +++ b/0285-qgv-dontshowchildren.diff @@ -0,0 +1,24 @@ +qt-bugs@ issue : unknows +Qt Software task ID : 197802 +bugs.kde.org number : bugs on the issue not reported yed +applied: no +author: Marco Martin + +This patch makes children items of an hidden qgraphicsitem not be shown if show() is called on them. fixes several issues like the opensocial plasma widget and the Plasma desktop toolbox behaviour. + +Index: src/gui/graphicsview/qgraphicsitem.cpp +=================================================================== +--- src/gui/graphicsview/qgraphicsitem.cpp (revision 958522) ++++ src/gui/graphicsview/qgraphicsitem.cpp (working copy) +@@ -1522,6 +1522,11 @@ + if (visible == quint32(newVisible)) + return; + ++ QGraphicsItem *parent(q_ptr->parentItem()); ++ if (parent && newVisible && !parent->d_ptr->visible) { ++ return; ++ } ++ + // Modify the property. + const QVariant newVisibleVariant(q_ptr->itemChange(QGraphicsItem::ItemVisibleChange, + quint32(newVisible))); diff --git a/0288-more-x-keycodes.patch b/0288-more-x-keycodes.patch deleted file mode 100644 index c2e819a..0000000 --- a/0288-more-x-keycodes.patch +++ /dev/null @@ -1,660 +0,0 @@ -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] 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.1 - diff --git a/287-qmenu-respect-minwidth.patch b/287-qmenu-respect-minwidth.patch deleted file mode 100644 index d051962..0000000 --- a/287-qmenu-respect-minwidth.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 01f26d0756839fbe783c637ca7dec5b7987f7e14 Mon Sep 17 00:00:00 2001 -From: Aaron Seigo -Date: Mon, 27 Jul 2009 21:46:22 -0600 -Subject: [PATCH] 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.1 - 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/linguist.desktop b/linguist.desktop index cd7061b..2236a72 100644 --- a/linguist.desktop +++ b/linguist.desktop @@ -2,7 +2,7 @@ Name=Qt4 Linguist Comment=Add translations to Qt4 applications Exec=linguist-qt4 -Icon=linguist4 +Icon=linguist MimeType=application/x-linguist; Terminal=false Encoding=UTF-8 diff --git a/qt-copy-20090626-qt452.patch b/qt-copy-20090626-qt452.patch deleted file mode 100644 index c0bf0a9..0000000 --- a/qt-copy-20090626-qt452.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff -ur qt-copy/patches/0274-shm-native-image-fix.diff qt-copy-qt452/patches/0274-shm-native-image-fix.diff ---- qt-copy/patches/0274-shm-native-image-fix.diff 2009-03-03 11:46:54.000000000 +0100 -+++ qt-copy-qt452/patches/0274-shm-native-image-fix.diff 2009-06-26 03:26:36.000000000 +0200 -@@ -15,15 +15,19 @@ - =================================================================== - --- src/gui/kernel/qapplication_x11.cpp (revision 934506) - +++ src/gui/kernel/qapplication_x11.cpp (working copy) --@@ -1943,7 +1943,7 @@ void qt_init(QApplicationPrivate *priv, -- // to determine whether the display is local or not (not 100 % accurate) -+@@ -1955,9 +1955,9 @@ - bool local = displayName.isEmpty() || displayName.lastIndexOf(QLatin1Char(':')) == 0; -- if (local && (qgetenv("QT_X11_NO_MITSHM").toInt() == 0)) --- X11->use_mitshm = mitshm_pixmaps; --+ X11->use_mitshm = true; -+ 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 -- - Index: src/gui/image/qnativeimage_p.h - =================================================================== - --- src/gui/image/qnativeimage_p.h (revision 930645) 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.0-qdoc3.patch b/qt-x11-opensource-src-4.5.0-qdoc3.patch new file mode 100644 index 0000000..7c32ca9 --- /dev/null +++ b/qt-x11-opensource-src-4.5.0-qdoc3.patch @@ -0,0 +1,21 @@ +diff -ur qt-orig/tools/qdoc3/qdoc3.pro qt-4.5.2/tools/qdoc3/qdoc3.pro +--- qt-orig/tools/qdoc3/qdoc3.pro 2009-06-20 06:57:59.000000000 +0200 ++++ qt-4.5.2/tools/qdoc3/qdoc3.pro 2009-06-25 20:00:12.000000000 +0200 +@@ -99,3 +99,6 @@ + webxmlgenerator.cpp \ + yyindent.cpp + ++TARGET= qdoc3 ++target.path = $$[QT_INSTALL_BINS] ++INSTALLS += target +diff -ur qt-orig/tools/tools.pro qt-4.5.2/tools/tools.pro +--- qt-orig/tools/tools.pro 2009-06-20 06:57:59.000000000 +0200 ++++ qt-4.5.2/tools/tools.pro 2009-06-25 19:59:19.000000000 +0200 +@@ -13,6 +13,7 @@ + SUBDIRS += designer + } + SUBDIRS += linguist ++ SUBDIRS += qdoc3 + wince*: SUBDIRS = qtestlib designer + unix:!mac:!embedded:contains(QT_CONFIG, qt3support):SUBDIRS += qtconfig + win32:!wince*:SUBDIRS += activeqt diff --git a/qt-x11-opensource-src-4.5.1-phonon.patch b/qt-x11-opensource-src-4.5.1-phonon.patch new file mode 100644 index 0000000..809bb9e --- /dev/null +++ b/qt-x11-opensource-src-4.5.1-phonon.patch @@ -0,0 +1,38 @@ +diff -ur qt-orig/src/phonon/phonon.pro qt-x11-opensource-src-4.5.2/src/phonon/phonon.pro +--- qt-orig/src/phonon/phonon.pro 2009-06-20 06:57:57.000000000 +0200 ++++ qt-x11-opensource-src-4.5.2/src/phonon/phonon.pro 2009-06-25 19:30:00.000000000 +0200 +@@ -112,4 +112,9 @@ + DEFINES += QT_NO_DBUS + } + ++# install dbus service file ++sources.files = $$PHONON_DIR/org.kde.Phonon.AudioOutput.xml ++sources.path = /usr/share/dbus-1/interfaces ++INSTALLS += sources ++ + contains(QT_CONFIG, reduce_exports): CONFIG += hide_symbols +diff -ur qt-orig/src/plugins/phonon/gstreamer/gstreamer.pro qt-x11-opensource-src-4.5.2/src/plugins/phonon/gstreamer/gstreamer.pro +--- qt-orig/src/plugins/phonon/gstreamer/gstreamer.pro 2009-06-20 06:57:58.000000000 +0200 ++++ qt-x11-opensource-src-4.5.2/src/plugins/phonon/gstreamer/gstreamer.pro 2009-06-25 19:31:36.000000000 +0200 +@@ -62,6 +62,8 @@ + } + + target.path = $$[QT_INSTALL_PLUGINS]/phonon_backend +-INSTALLS += target ++services.files = $$PHONON_GSTREAMER_DIR/gstreamer.desktop ++services.path = /usr/share/kde4/services/phononbackends ++INSTALLS += target services + + include(../../qpluginbase.pri) +diff -ur qt-orig/src/3rdparty/phonon/gstreamer/gstreamer.desktop qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/gstreamer.desktop +--- qt-orig/src/3rdparty/phonon/gstreamer/gstreamer.desktop 2009-06-20 06:57:54.000000000 +0200 ++++ qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/gstreamer.desktop 2009-06-25 19:30:00.000000000 +0200 +@@ -2,7 +2,7 @@ + Type=Service + X-KDE-ServiceTypes=PhononBackend + MimeType=application/x-annodex;video/quicktime;video/x-quicktime;audio/x-m4a;application/x-quicktimeplayer;video/mkv;video/msvideo;video/x-msvideo;video/x-flic;audio/x-aiff;audio/aiff;audio/x-pn-aiff;audio/x-realaudio;audio/basic;audio/x-basic;audio/x-pn-au;audio/x-8svx;audio/8svx;audio/x-16sv;audio/168sv;image/x-ilbm;image/ilbm;video/x-anim;video/anim;image/png;image/x-png;video/mng;video/x-mng;audio/x-ogg;audio/x-speex+ogg;application/ogg;application/ogg;audio/vnd.rn-realaudio;audio/x-pn-realaudio-plugin;audio/x-real-audio;application/vnd.rn-realmedia;video/mpeg;video/x-mpeg;audio/x-wav;audio/wav;audio/x-pn-wav;audio/x-pn-windows-acm;audio/mpeg2;audio/x-mpeg2;audio/mpeg3;audio/x-mpeg3;audio/mpeg;audio/x-mpeg;x-mpegurl;audio/x-mpegurl;audio/mp3;audio/mpeg; +-X-KDE-Library=phonon_gstreamer ++X-KDE-Library=libphonon_gstreamer + X-KDE-PhononBackendInfo-InterfaceVersion=1 + X-KDE-PhononBackendInfo-Version=0.1 + X-KDE-PhononBackendInfo-Website=http://gstreamer.freedesktop.org/ 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-gst-pulsaudio.patch b/qt-x11-opensource-src-4.5.2-gst-pulsaudio.patch new file mode 100644 index 0000000..6ccefab --- /dev/null +++ b/qt-x11-opensource-src-4.5.2-gst-pulsaudio.patch @@ -0,0 +1,60 @@ +diff -up qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/audiooutput.cpp.than qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/audiooutput.cpp +--- qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/audiooutput.cpp.than 2009-08-16 14:20:43.000000000 +0200 ++++ qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/audiooutput.cpp 2009-08-16 14:45:56.000000000 +0200 +@@ -141,7 +141,9 @@ bool AudioOutput::setOutputDevice(int ne + // Save previous state + GstState oldState = GST_STATE(m_audioSink); + const QByteArray oldDeviceValue = GstHelper::property(m_audioSink, "device"); +- const QByteArray deviceId = deviceList.at(newDevice).gstId; ++ const QByteArray deviceId = (deviceList.at(newDevice).gstId == "PulseAudio" ++ ? "default" ++ : deviceList.at(newDevice).gstId); + m_device = newDevice; + + // We test if the device can be opened by checking if it can go from NULL to READY state +diff -up qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/devicemanager.cpp.than qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/devicemanager.cpp +--- qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/devicemanager.cpp.than 2009-08-15 12:39:08.000000000 +0200 ++++ qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/devicemanager.cpp 2009-08-16 14:45:13.000000000 +0200 +@@ -50,6 +50,8 @@ AudioDevice::AudioDevice(DeviceManager * + //get name from device + if (gstId == "default") { + description = "Default audio device"; ++ } else if (gstId == "PulseAudio") { ++ description = QObject::tr("Pass all audio through the PulseAudio Sound Server.\n").toUtf8(); + } else { + GstElement *aSink= manager->createAudioSink(); + +@@ -175,6 +177,18 @@ GstElement *DeviceManager::createAudioSi + } + } + ++ if (!sink) { ++ sink = gst_element_factory_make ("pulsesink", NULL); ++ if (canOpenDevice(sink)) { ++ m_backend->logMessage("AudioOutput using pulse audio sink"); ++ m_audioSink = "pulsesink"; ++ } ++ else if (sink) { ++ gst_object_unref(sink); ++ sink = 0; ++ } ++ } ++ + #ifdef USE_ALSASINK2 + if (!sink) { + sink = gst_element_factory_make ("_k_alsasink", NULL); +@@ -306,8 +320,12 @@ void DeviceManager::updateDeviceList() + QList list; + + if (audioSink) { +- list = GstHelper::extractProperties(audioSink, "device"); +- list.prepend("default"); ++ if (m_audioSink == "pulsesink") { ++ list.append("PulseAudio"); ++ } else { ++ list = GstHelper::extractProperties(audioSink, "device"); ++ list.prepend("default"); ++ } + + for (int i = 0 ; i < list.size() ; ++i) { + QByteArray gstId = list.at(i); diff --git a/qt-x11-opensource-src-4.5.2-pulseaudio.patch b/qt-x11-opensource-src-4.5.2-pulseaudio.patch new file mode 100644 index 0000000..871000a --- /dev/null +++ b/qt-x11-opensource-src-4.5.2-pulseaudio.patch @@ -0,0 +1,43 @@ +diff -up qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/phonon/globalconfig.cpp.phonon-pulseaudio qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/phonon/globalconfig.cpp +--- qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/phonon/globalconfig.cpp.phonon-pulseaudio 2009-06-20 06:57:54.000000000 +0200 ++++ qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/phonon/globalconfig.cpp 2009-08-21 00:11:55.000000000 +0200 +@@ -31,6 +31,7 @@ + #include "phononnamespace_p.h" + + #include ++#include + #include + + QT_BEGIN_NAMESPACE +@@ -167,6 +168,15 @@ QList GlobalConfig::audioOutputDevi + | ((override & HideUnavailableDevices) ? FilterUnavailableDevices : 0) + ); + } ++ // make PulseAudio the global default (assume it is already default in this list) ++ if (!list.isEmpty()) { ++ int firstIndex = list.first(); ++ if (backendIface->objectDescriptionProperties(Phonon::AudioOutputDeviceType, ++ firstIndex)["name"].toString() == "PulseAudio") { ++ list.removeFirst(); ++ defaultList.prepend(firstIndex); ++ } ++ } + defaultList += list; + } + +@@ -222,6 +232,15 @@ QList GlobalConfig::audioCaptureDev + | ((override & HideUnavailableDevices) ? FilterUnavailableDevices : 0) + ); + } ++ // make PulseAudio the global default (assume it is already default in this list) ++ if (!list.isEmpty()) { ++ int firstIndex = list.first(); ++ if (backendIface->objectDescriptionProperties(Phonon::AudioCaptureDeviceType, ++ firstIndex)["name"].toString() == "PulseAudio") { ++ list.removeFirst(); ++ defaultList.prepend(firstIndex); ++ } ++ } + defaultList += list; + } + diff --git a/qt-x11-opensource-src-4.5.2-qdoc3.patch b/qt-x11-opensource-src-4.5.2-qdoc3.patch deleted file mode 100644 index 123191a..0000000 --- a/qt-x11-opensource-src-4.5.2-qdoc3.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -up qt-x11-opensource-src-4.5.2/tools/qdoc3/qdoc3.pro.qdoc3 qt-x11-opensource-src-4.5.2/tools/qdoc3/qdoc3.pro ---- qt-x11-opensource-src-4.5.2/tools/qdoc3/qdoc3.pro.qdoc3 2009-06-20 06:57:59.000000000 +0200 -+++ qt-x11-opensource-src-4.5.2/tools/qdoc3/qdoc3.pro 2009-06-25 13:21:10.000000000 +0200 -@@ -99,3 +99,7 @@ SOURCES += apigenerator.cpp \ - webxmlgenerator.cpp \ - yyindent.cpp - -+TARGET= qdoc3 -+target.path = $$[QT_INSTALL_BINS] -+INSTALLS += target -+ -diff -up qt-x11-opensource-src-4.5.2/tools/tools.pro.qdoc3 qt-x11-opensource-src-4.5.2/tools/tools.pro ---- qt-x11-opensource-src-4.5.2/tools/tools.pro.qdoc3 2009-06-20 06:57:59.000000000 +0200 -+++ qt-x11-opensource-src-4.5.2/tools/tools.pro 2009-06-25 13:19:55.000000000 +0200 -@@ -13,6 +13,7 @@ no-png { - SUBDIRS += designer - } - SUBDIRS += linguist -+ SUBDIRS += qdoc3 - wince*: SUBDIRS = qtestlib designer - unix:!mac:!embedded:contains(QT_CONFIG, qt3support):SUBDIRS += qtconfig - win32:!wince*:SUBDIRS += activeqt 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-javascript-disable-jit.patch b/qt-x11-opensource-src-4.5.3-javascript-disable-jit.patch new file mode 100644 index 0000000..123908a --- /dev/null +++ b/qt-x11-opensource-src-4.5.3-javascript-disable-jit.patch @@ -0,0 +1,24 @@ +diff -up qt-x11-opensource-src-4.5.3/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri.javascriptcore-disable-jit qt-x11-opensource-src-4.5.3/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri +--- qt-x11-opensource-src-4.5.3/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri.javascriptcore-disable-jit 2009-09-29 13:01:35.000000000 +0200 ++++ qt-x11-opensource-src-4.5.3/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri 2009-10-06 10:39:55.976466622 +0200 +@@ -13,20 +13,6 @@ win32-* { + LIBS += -lwinmm + } + +-# Disable the JIT due to numerous observed miscompilations :( +-CONFIG(release):isEqual(QT_ARCH,i386) { +- JIT_DEFINES = ENABLE_JIT ENABLE_WREC ENABLE_JIT_OPTIMIZE_CALL ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS ENABLE_JIT_OPTIMIZE_ARITHMETIC +- # Require gcc >= 4.1 +- linux-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) { +- DEFINES += $$JIT_DEFINES WTF_USE_JIT_STUB_ARGUMENT_VA_LIST +- QMAKE_CXXFLAGS += -fno-stack-protector +- QMAKE_CFLAGS += -fno-stack-protector +- } +- win32-msvc* { +- DEFINES += $$JIT_DEFINES WTF_USE_JIT_STUB_ARGUMENT_REGISTER +- } +-} +- + win32-msvc*: INCLUDEPATH += $$PWD/os-win32 + wince* { + INCLUDEPATH += $$PWD/os-wince 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 6c1fb3a..7354b17 100644 --- a/qt.spec +++ b/qt.spec @@ -4,28 +4,23 @@ # -no-pch disables precompiled headers, make ccache-friendly %define no_pch -no-pch +%define _default_patch_fuzz 2 + Summary: Qt toolkit -%if 0%{?fedora} > 8 Name: qt Epoch: 1 -%else -Name: qt4 -%endif -Version: 4.5.2 -Release: 3%{?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) - -%if "%{name}" != "qt4" Obsoletes: qt4 < %{version}-%{release} Provides: qt4 = %{version}-%{release} %{?_isa:Provides: qt4%{?_isa} = %{version}-%{release}} -%endif Source4: Trolltech.conf @@ -42,36 +37,58 @@ Patch13: qt-x11-opensource-src-4.5.0-gcc_hack.patch Patch15: qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch # include kde4 plugin path, http://bugzilla.redhat.com/498809 Patch16: qt-x11-opensource-src-4.5.1-kde4_plugins.patch -# fix the qt-copy patch 0274-shm-native-image-fix.diff to apply against 4.5.2 -Patch20: qt-copy-20090626-qt452.patch +# make PulseAudio the default device in Phonon +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.3-system_ca_certificates.patch +Requires: ca-certificates +# disable JavaScriptCore JIT as it crashes with SE Linux +# http://bugzilla.redhat.com/527079 +Patch23: qt-x11-opensource-src-4.5.3-javascript-disable-jit.patch ## upstreamable bits -Patch51: qt-x11-opensource-src-4.5.2-qdoc3.patch +# http://bugzilla.redhat.com/485677 +Patch51: qt-x11-opensource-src-4.5.0-qdoc3.patch Patch52: qt-4.5-sparc64.patch # fix invalid inline assembly in qatomic_{i386,x86_64}.h (de)ref implementations -# should fix the reference counting in qt_toX11Pixmap and thus the Kolourpaint -# crash with Qt 4.5 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 - -## qt-copy patches -# http://qt.gitorious.org/+kde-developers/qt/kde-qt/commit/01f26d0756839fbe783c637ca7dec5b7987f7e14.patch -Patch287: 287-qmenu-respect-minwidth.patch -# http://qt.gitorious.org/+kde-developers/qt/kde-qt/commit/1a94cd7b132497f70a2b97ec2b58f6e2b1c5076a.patch -Patch0288: 0288-more-x-keycodes.patch -# security fixes -Patch100: qt-x11-opensource-src-4.5.2-CVE-2009-1725.patch -Patch101: qt-x11-opensource-src-4.5.2-CVE-2009-2700.patch - -%define qt_copy 20090626 -Source1: qt-copy-patches-svn_checkout.sh -%{?qt_copy:Source2: qt-copy-patches-%{qt_copy}svn.tar.bz2} -%{?qt_copy:Provides: qt-copy = %{qt_copy}} -%{?qt_copy:Provides: qt4-copy = %{qt_copy}} +# 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 + +# these patches are not merged yet in kde-qt branches +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 +Source12: hi22-phonon-gstreamer.png +Source13: hi32-phonon-gstreamer.png +Source14: hi48-phonon-gstreamer.png +Source15: hi64-phonon-gstreamer.png +Source16: hi128-phonon-gstreamer.png Source20: assistant.desktop Source21: designer.desktop @@ -93,21 +110,20 @@ Source31: hi48-app-qt4-logo.png %define psql -plugin-sql-psql %define sqlite -plugin-sql-sqlite %define phonon -phonon -# if building with --phonon, define to internal version (ie, Obsolete external phonon) -#define phonon_internal 1 -%define phonon_backend -no-phonon-backend +%define phonon_backend -phonon-backend +%if 0%{?rhel} +# if building with -phonon, define to internal version (ie, Obsolete external phonon) +%define phonon_internal 1 +# if -phonon-backend, include in packaging (else it's omitted) +%define phonon_backend_packaged 1 +%endif %define phonon_version 4.3.1 +%define phonon_version_major 4.3 +%define phonon_release 100 %define webkit -webkit %define gtkstyle -gtkstyle - %define nas -no-nas-sound -%if 0%{?fedora} > 4 || 0%{?rhel} > 4 -# link dbus %define dbus -dbus-linked -# dlopen dbus -#define dbus -dbus -BuildRequires: dbus-devel >= 0.62 -%endif # See http://bugzilla.redhat.com/196901 %define _qt4 %{name} @@ -125,10 +141,9 @@ BuildRequires: dbus-devel >= 0.62 %define _qt4_sysconfdir %{_sysconfdir} %define _qt4_translationdir %{_datadir}/qt4/translations -%if "%{_qt4_libdir}" != "%{_libdir}" Prereq: /etc/ld.so.conf.d -%endif +BuildRequires: dbus-devel >= 0.62 BuildRequires: cups-devel BuildRequires: desktop-file-utils BuildRequires: findutils @@ -147,10 +162,7 @@ BuildRequires: pkgconfig ## In theory, should be as simple as: #define x_deps libGL-devel libGLU-devel ## but, "xorg-x11-devel: missing dep on libGL/libGLU" - http://bugzilla.redhat.com/211898 -%define x_deps xorg-x11-devel xorg-x11-Mesa-libGL xorg-x11-Mesa-libGLU -%if 0%{?fedora} > 4 || 0%{?rhel} > 4 %define x_deps libICE-devel libSM-devel libXcursor-devel libXext-devel libXfixes-devel libXft-devel libXi-devel libXinerama-devel libXrandr-devel libXrender-devel libXt-devel libX11-devel xorg-x11-proto-devel libGL-devel libGLU-devel -%endif BuildRequires: %{x_deps} %if "%{?nas}" != "-no-nas-sound" @@ -191,10 +203,8 @@ Obsoletes: qt4-config < 4.5.0 Provides: qt4-config = %{version}-%{release} Obsoletes: qt4-sqlite < 4.5.0 Provides: qt4-sqlite = %{version}-%{release} -%if "%{name}" == "qt" Obsoletes: qt-sqlite < %{?epoch:%{epoch}:}4.5.0 Provides: qt-sqlite = %{?epoch:%{epoch}:}%{version}-%{release} -%endif %description Qt is a software toolkit for developing applications. @@ -202,6 +212,15 @@ Qt is a software toolkit for developing applications. This package contains base tools, like string, xml, and network handling. +%package -n phonon-backend-gstreamer +Summary: Gstreamer phonon backend +Group: Applications/Multimedia +Requires: phonon%{?_isa} >= %{phonon_version_major} +Provides: phonon-backend%{?_isa} = %{phonon_version}-%{phonon_release} +Obsoletes: %{name}-backend-gst < 4.2.0-4 +Provides: %{name}-backend-gst = %{phonon_version}-%{phonon_release} +%description -n phonon-backend-gstreamer +%{summary}. %define demos 1 %package demos @@ -217,15 +236,11 @@ Summary: API documentation for %{name} Group: Documentation Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} Requires: %{name}-assistant -%if "%{name}" != "qt4" Obsoletes: qt4-doc < %{version}-%{release} Provides: qt4-doc = %{version}-%{release} -%endif -%if 0%{?fedora} > 9 # help workaround yum bug http://bugzilla.redhat.com/502401 Obsoletes: qt-doc < 1:4.5.1-4 BuildArch: noarch -%endif %description doc %{summary}. Includes: Qt Assistant @@ -233,8 +248,8 @@ Qt Assistant %package devel Summary: Development files for the Qt toolkit Group: Development/Libraries -Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} -Requires: %{name}-x11 +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}-x11%{?_isa} Requires: %{x_deps} Requires: libpng-devel Requires: libjpeg-devel @@ -244,8 +259,7 @@ Provides: qt4-phonon-devel = %{version}-%{release} %endif %if 0%{?phonon_internal} Obsoletes: phonon-devel < 4.3.1-100 -Provides: phonon-devel = 4.3.1-100 -Requires: phonon-backend%{?_isa} >= %{phonon_version} +Provides: phonon-devel = %{phonon_version}-%{phonon_release} %endif %if 0%{?webkit:1} Obsoletes: WebKit-qt-devel < 1.0.0-1 @@ -255,12 +269,10 @@ Obsoletes: qt4-designer < %{version}-%{release} Provides: qt4-designer = %{version}-%{release} # as long as libQtUiTools.a is included Provides: %{name}-static = %{version}-%{release} -%if "%{name}" != "qt4" Obsoletes: qt4-devel < %{version}-%{release} Provides: qt4-devel = %{version}-%{release} %{?_isa:Provides: qt4-devel%{?_isa} = %{version}-%{release}} Provides: qt4-static = %{version}-%{release} -%endif %description devel This package contains the files necessary to develop @@ -272,7 +284,7 @@ Qt Linguist %package examples Summary: Programming examples for %{name} Group: Documentation -Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} %description examples %{summary}. @@ -281,13 +293,11 @@ Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} %package mysql Summary: MySQL driver for Qt's SQL classes Group: System Environment/Libraries -Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Obsoletes: qt4-MySQL < %{version}-%{release} Provides: qt4-MySQL = %{version}-%{release} -%if "%{name}" != "qt4" Obsoletes: qt4-mysql < %{version}-%{release} Provides: qt4-mysql = %{version}-%{release} -%endif %description mysql %{summary}. @@ -296,13 +306,11 @@ Provides: qt4-mysql = %{version}-%{release} %package odbc Summary: ODBC driver for Qt's SQL classes Group: System Environment/Libraries -Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Obsoletes: qt4-ODBC < %{version}-%{release} Provides: qt4-ODBC = %{version}-%{release} -%if "%{name}" != "qt4" Obsoletes: qt4-odbc < %{version}-%{release} Provides: qt4-odbc = %{version}-%{release} -%endif %description odbc %{summary}. @@ -311,13 +319,11 @@ Provides: qt4-odbc = %{version}-%{release} %package postgresql Summary: PostgreSQL driver for Qt's SQL classes Group: System Environment/Libraries -Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Obsoletes: qt4-PostgreSQL < %{version}-%{release} Provides: qt4-PostgreSQL = %{version}-%{release} -%if "%{name}" != "qt4" Obsoletes: qt4-postgresql < %{version}-%{release} Provides: qt4-postgresql = %{version}-%{release} -%endif %description postgresql %{summary}. @@ -326,26 +332,24 @@ Provides: qt4-postgresql = %{version}-%{release} %package x11 Summary: Qt GUI-related libraries Group: System Environment/Libraries +%if 0%{?phonon:1} +Requires: phonon-backend%{?_isa} >= %{phonon_version_major} +%endif %if 0%{?phonon_internal} Obsoletes: phonon < 4.3.1-100 -Provides: phonon = 4.3.1-100 -%endif -%if 0%{?phonon:1} -Provides: qt4-phonon = %{version}-%{release} +Provides: phonon = %{phonon_version}-%{phonon_release} +Provides: phonon%{?_isa} = %{phonon_version}-%{phonon_release} +Provides: qt4-phonon = %{version}-%{release} %endif %if 0%{?webkit:1} Obsoletes: WebKit-qt < 1.0.0-1 Provides: WebKit-qt = 1.0.0-1 %endif Provides: qt4-assistant = %{version}-%{release} -%if "%{name}" != "qt4" Provides: %{name}-assistant = %{version}-%{release} -%endif -Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} -%if "%{name}" != "qt4" +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Obsoletes: qt4-x11 < %{version}-%{release} Provides: qt4-x11 = %{version}-%{release} -%endif Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig @@ -354,18 +358,7 @@ Qt libraries used for drawing widgets and OpenGL items. %prep -%setup -q -n qt-x11-opensource-src-%{version} %{?qt_copy:-a 2} - -%if 0%{?qt_copy} -%patch20 -p1 -b .qt-copy-qt452 -echo "0234" >> patches/DISABLED -echo "0250" >> patches/DISABLED -echo "0273" >> patches/DISABLED -echo "0279" >> patches/DISABLED -echo "0281" >> patches/DISABLED -echo "0282" >> patches/DISABLED -test -x apply_patches && ./apply_patches -%endif +%setup -q -n qt-x11-opensource-src-%{version} # don't use -b on mkspec files, else they get installed too. # multilib hacks no longer required @@ -377,27 +370,46 @@ test -x apply_patches && ./apply_patches %patch13 -p1 -b .gcc_hack %patch15 -p1 -b .enable_ft_lcdfilter %patch16 -p1 -b .kde4_plugins +%patch17 -p1 -b .phonon-pulseaudio +%patch19 -p1 -b .servicesfile +%patch21 -p1 -b .gst-pulsaudio +%patch22 -p1 -b .system_ca_certificates +%patch23 -p1 -b .javascriptcore-disable-jit %patch51 -p1 -b .qdoc3 %patch52 -p1 -b .sparc64 %patch53 -p1 -b .qatomic-inline-asm %patch54 -p1 -b .mysql_config -%patch55 -p1 -b .timestamp # security fixes -%patch100 -p1 -b .CVE-2009-1725 -%patch101 -p1 -b .CVE-2009-2700 -%patch287 -p1 -b .287-qmenu-respect -%patch0288 -p1 -b .0288-more-x-keycodes +# kde-qt branch +%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'` -## customize our platform -%if "%{_lib}" == "lib64" -%define platform linux-g++-64 -%else %define platform linux-g++ +%if "%{_qt4_datadir}" != "%{_qt4_prefix}" && "%{_lib}" == "lib64" +%define platform linux-g++-64 %endif sed -i \ @@ -427,6 +439,11 @@ if [ "%{_lib}" == "lib64" ] ; then sed -i -e "s,/lib /usr/lib,/%{_lib} /usr/%{_lib},g" config.tests/{unix,x11}/*.test fi +# 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 @@ -491,6 +508,9 @@ fi make %{?_smp_mflags} +# recreate .qm files +LD_LIBRARY_PATH=`pwd`/lib bin/lrelease translations/*.ts + %install rm -rf %{buildroot} @@ -528,6 +548,13 @@ done # nuke dangling reference(s) to %buildroot sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" %{buildroot}%{_qt4_libdir}/*.prl +# nuke QMAKE_PRL_LIBS, seems similar to static linking and .la files (#520323) +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 @@ -558,7 +585,7 @@ pushd %{buildroot}%{_qt4_libdir} for lib in libQt*.so ; do libbase=`basename $lib .so | sed -e 's/^lib//'` # ln -s $lib lib${libbase}_debug.so - echo "INPUT(-l${libbase})" > lib${libbase}_debug.so + echo "INPUT(-l${libbase})" > lib${libbase}_debug.so done for lib in libQt*.a ; do libbase=`basename $lib .a | sed -e 's/^lib//' ` @@ -567,9 +594,6 @@ for lib in libQt*.a ; do done popd -# .la files, die, die, die. -rm -f %{buildroot}%{_qt4_libdir}/lib*.la - %ifarch %{multilib_archs} # multilib: qconfig.h mv %{buildroot}%{_qt4_headerdir}/Qt/qconfig.h %{buildroot}%{_qt4_headerdir}/QtCore/qconfig-%{_arch}.h @@ -597,10 +621,17 @@ install -p -m644 -D %{SOURCE4} %{buildroot}%{_qt4_sysconfdir}/Trolltech.conf # qt4-logo (generic) icons install -p -m644 -D %{SOURCE30} %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/qt4-logo.png install -p -m644 -D %{SOURCE31} %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/qt4-logo.png +%if 0%{?docs} +# assistant icons +install -p -m644 -D tools/assistant/tools/assistant/images/assistant.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/assistant.png +install -p -m644 -D tools/assistant/tools/assistant/images/assistant-128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/assistant.png +%endif +# designer icons +install -p -m644 -D tools/designer/src/designer/images/designer.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/designer.png # linguist icons for icon in tools/linguist/linguist/images/icons/linguist-*-32.png ; do size=$(echo $(basename ${icon}) | cut -d- -f2) - install -p -m644 -D ${icon} %{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/linguist4.png + install -p -m644 -D ${icon} %{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/linguist.png done # Qt.pc @@ -646,20 +677,36 @@ EOF # create/own %%_qt4_plugindir/styles mkdir %{buildroot}%{_qt4_plugindir}/styles -%if 0%{?phonon:1} -mkdir -p %{buildroot}%{_qt4_plugindir}/phonon_backend -%endif - -%if ! 0%{?phonon_internal} +%if 0%{?phonon_internal} mkdir -p %{buildroot}%{_qt4_plugindir}/phonon_backend +# This should no longer be required, but... -- Rex +pushd %{buildroot}%{_qt4_headerdir} +ln -s phonon Phonon +popd +%else rm -fv %{buildroot}%{_qt4_libdir}/libphonon.so* rm -rfv %{buildroot}%{_libdir}/pkgconfig/phonon.pc # contents slightly different between phonon-4.3.1 and qt-4.5.0 rm -fv %{buildroot}%{_includedir}/phonon/phononnamespace.h # contents dup'd but should remove just in case rm -fv %{buildroot}%{_includedir}/phonon/*.h -#rm -rfv %{buildroot}%{_qt4_headerdir}/phonon* +rm -rfv %{buildroot}%{_qt4_headerdir}/phonon* #rm -rfv %{buildroot}%{_qt4_headerdir}/Qt/phonon* +rm -fv %{buildroot}%{_datadir}/dbus-1/interfaces/org.kde.Phonon.AudioOutput.xml +%endif + +#if "%{?phonon_backend}" == "-phonon-backend" +%if 0%{?phonon_backend_packaged} +install -D -m 0644 %{SOURCE10} %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/phonon-gstreamer.svg +install -D -m 0644 %{SOURCE11} %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/phonon-gstreamer.png +install -D -m 0644 %{SOURCE12} %{buildroot}%{_datadir}/icons/hicolor/22x22/apps/phonon-gstreamer.png +install -D -m 0644 %{SOURCE13} %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/phonon-gstreamer.png +install -D -m 0644 %{SOURCE14} %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/phonon-gstreamer.png +install -D -m 0644 %{SOURCE15} %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/phonon-gstreamer.png +install -D -m 0644 %{SOURCE16} %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/phonon-gstreamer.png +%else +rm -fv %{buildroot}%{_qt4_plugindir}/phonon_backend/*_gstreamer.so +rm -fv %{buildroot}%{_datadir}/kde4/services/phononbackends/gstreamer.desktop %endif @@ -697,10 +744,30 @@ touch --no-create %{_datadir}/icons/hicolor ||: gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||: fi +#if "%{?phonon_backend}" == "-phonon-backend" +%if 0%{?phonon_backend_packaged} +%post -n phonon-backend-gstreamer +touch --no-create %{_kde4_iconsdir}/hicolor &> /dev/null ||: + +%posttrans -n phonon-backend-gstreamer +gtk-update-icon-cache %{_kde4_iconsdir}/hicolor &> /dev/null ||: + +%postun -n phonon-backend-gstreamer +if [ $1 -eq 0 ] ; then + touch --no-create %{_kde4_iconsdir}/hicolor &> /dev/null ||: + gtk-update-icon-cache %{_kde4_iconsdir}/hicolor &> /dev/null ||: +fi + +%files -n phonon-backend-gstreamer +%defattr(-,root,root,-) +%{_qt4_plugindir}/phonon_backend/*_gstreamer.so +%{_datadir}/kde4/services/phononbackends/gstreamer.desktop +%{_datadir}/icons/hicolor/*/apps/phonon-gstreamer.* +%endif %files %defattr(-,root,root,-) -%doc README* LGPL_EXCEPTION.txt LICENSE.LGPL LICENSE.GPL3 +%doc README README.kde-qt LGPL_EXCEPTION.txt LICENSE.LGPL LICENSE.GPL3 %if "%{_qt4_libdir}" != "%{_libdir}" /etc/ld.so.conf.d/* %dir %{_qt4_libdir} @@ -716,6 +783,10 @@ fi %else %dir %{_qt4_datadir} %endif +%if 0%{?docs} +%dir %{_qt4_docdir} +%dir %{_qt4_docdir}/qch/ +%endif %if "%{_qt4_sysconfdir}" != "%{_sysconfdir}" %dir %{_qt4_sysconfdir} %endif @@ -804,10 +875,10 @@ fi %{_qt4_datadir}/q3porting.xml %if 0%{?phonon:1} %{_qt4_libdir}/libphonon.prl +%endif %if 0%{?phonon_internal} %{_qt4_libdir}/libphonon.so %endif -%endif %{_qt4_libdir}/libQt*.so %{_qt4_libdir}/libQtUiTools*.a %{_qt4_libdir}/libQt*.prl @@ -815,21 +886,26 @@ fi # Qt designer %{_qt4_bindir}/designer* %{_datadir}/applications/*designer.desktop +%{_datadir}/icons/hicolor/*/apps/designer* +%{?docs:%{_qt4_docdir}/qch/designer.qch} # Qt Linguist %{_qt4_bindir}/linguist* %{_datadir}/applications/*linguist.desktop -%{_datadir}/icons/hicolor/*/apps/linguist4.* +%{_datadir}/icons/hicolor/*/apps/linguist* +%{?docs:%{_qt4_docdir}/qch/linguist.qch} %if 0%{?docs} %files doc %defattr(-,root,root,-) -%dir %{_qt4_docdir}/ %{_qt4_docdir}/html -%{_qt4_docdir}/qch/ +%{_qt4_docdir}/qch/*.qch +%exclude %{_qt4_docdir}/qch/designer.qch +%exclude %{_qt4_docdir}/qch/linguist.qch %{_qt4_docdir}/src/ #{_qt4_prefix}/doc # Qt Assistant (bin moved to -x11) %{_datadir}/applications/*assistant.desktop +%{_datadir}/icons/hicolor/*/apps/assistant* %endif %if 0%{?examples} @@ -861,6 +937,8 @@ fi %{_sysconfdir}/rpm/macros.* %if 0%{?phonon_internal} %{_qt4_libdir}/libphonon.so.4* +%dir %{_datadir}/kde4/services/phononbackends/ +%{_datadir}/dbus-1/interfaces/org.kde.Phonon.AudioOutput.xml %endif %{_qt4_libdir}/libQt3Support.so.* %{_qt4_libdir}/libQtAssistantClient.so.* @@ -875,6 +953,10 @@ fi %{?webkit:%{_qt4_libdir}/libQtWebKit.so.*} %{_qt4_plugindir}/* %exclude %{_qt4_plugindir}/sqldrivers +#if "%{?phonon_backend}" == "-phonon-backend" +%if 0%{?phonon_backend_packaged} +%exclude %{_qt4_plugindir}/phonon_backend/*_gstreamer.so +%endif %if "%{_qt4_bindir}" != "%{_bindir}" %{_bindir}/assistant* %{?dbus:%{_bindir}/qdbusviewer} @@ -888,24 +970,109 @@ fi %changelog -* Mon Aug 31 2009 Than Ngo - 4.5.2-3 +* Sat Oct 10 2009 Than Ngo - 4.5.3-4 +- fix translation build issue +- rhel cleanup + +* Tue Oct 06 2009 Jaroslav Reznik - 4.5.3-3 +- disable JavaScriptCore JIT, SE Linux crashes (#527079) + +* 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 + +* Mon Sep 28 2009 Rex Dieter - 4.5.2-20 +- use internal Qt Assistant/Designer icons +- -devel: move designer.qch,linguist.qch here +- move ownership of %%_qt4_docdir, %%_qt4_docdir/qch to main pkg + +* Sun Sep 20 2009 Rex Dieter - 4.5.2-19 +- Missing Qt Designer icon (#476605) + +* Fri Sep 11 2009 Rex Dieter - 4.5.2-18 +- drop gcc -fno-var-tracking-assignments hack (#522576) + +* Fri Sep 11 2009 Than Ngo - 4.5.2-17 +- drop useless check for ossl patch, the patch works fine with old ossl + +* Wed Sep 09 2009 Than Ngo - 4.5.2-16 +- add a correct system_ca_certificates patch + +* Tue Sep 08 2009 Rex Dieter - 4.5.2-15 +- use system ca-certificates (#521911) + +* Tue Sep 01 2009 Than Ngo - 4.5.2-14 +- drop fedora < 9 support +- only apply ossl patch for fedora > 11 + +* Mon Aug 31 2009 Than Ngo - 4.5.2-13 - fix for CVE-2009-2700 -* Tue Aug 18 2009 Than Ngo - 4.5.2-2 -- security fix for CVE-2009-1725 +* Thu Aug 27 2009 Rex Dieter 4.5.2-12 +- use platform linux-g++ everywhere (ie, drop linux-g++-64 on 64 bit), + avoids plugin/linker weirdness (bug #478481) + +* Wed Aug 26 2009 Tomas Mraz - 1:4.5.2-11 +- rebuilt with new openssl + +* Thu Aug 20 2009 Than Ngo - 4.5.2-10 +- switch to kde-qt branch + +* Tue Aug 18 2009 Than Ngo - 4.5.2-9 +- security fix for CVE-2009-1725 (bz#513813) -* Sat Aug 18 2009 Rex Dieter 4.5.2-1.2 +* Sun Aug 16 2009 Than Ngo - 4.5.2-8 +- fix phonon-backend-gstreamer for using pulsaudio (#513421) + +* Sat Aug 14 2009 Rex Dieter 4.5.2-7 - kde-qt: 287-qmenu-respect-minwidth - kde-qt: 0288-more-x-keycodes (#475247) -* Wed Aug 05 2009 Rex Dieter 4.5.2-1.1 +* Wed Aug 05 2009 Rex Dieter 4.5.2-6 - use linker scripts for _debug targets (#510246) +- tighten deps using %%{?_isa} +- -x11: Requires(post,postun): /sbin/ldconfig + +* Thu Jul 30 2009 Than Ngo - 4.5.2-5 - apply upstream patch to fix issue in Copy and paste + +* Sun Jul 26 2009 Fedora Release Engineering - 1:4.5.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu Jul 02 2009 Than Ngo - 4.5.2-3 +- pregenerate PNG, drop BR on GraphicsMagick (bz#509244) + +* Fri Jun 26 2009 Kevin Kofler - 4.5.2-2 +- take current qt-copy-patches snapshot (20090626) +- disable patches which are already in 4.5.2 +- fix the qt-copy patch 0274-shm-native-image-fix.diff to apply against 4.5.2 + +* Thu Jun 25 2009 Lukáš Tinkl - 4.5.2-1 +- Qt 4.5.2 + +* Sun Jun 07 2009 Rex Dieter - 4.5.1-18 +- phonon-backend-gstreamer pkg, with icons - optimize (icon-mostly) scriptlets -- -x11: Requires(post,postun): /sbin/ldconfig -* Thu Jul 02 2009 Than Ngo - 4.5.2-1 -- 4.5.2 +* Sun Jun 07 2009 Than Ngo - 4.5.1-17 +- drop the hack, apply patch to install Global header, gstreamer.desktop + and dbus services file + +* Sat Jun 06 2009 Rex Dieter - 4.5.1-16 +- install awol Phonon/Global header + +* Fri Jun 05 2009 Kevin Kofler - 4.5.1-15 +- apply Phonon PulseAudio patch (needed for the xine-lib backend) + +* Fri Jun 05 2009 Than Ngo - 4.5.1-14 +- enable phonon and gstreamer-backend * Sat May 30 2009 Rex Dieter - 4.5.1-13 - -doc: Obsoletes: qt-doc < 1:4.5.1-4 (workaround bug #502401) diff --git a/sources b/sources index 65863f9..d8e2350 100644 --- a/sources +++ b/sources @@ -1,4 +1,10 @@ d9f511e4b51983b4e10eb58b320416d5 hi128-app-qt4-logo.png 6dcc0672ff9e60a6b83f95c5f42bec5b hi48-app-qt4-logo.png -28a7e8ac9805a6f614d2a27ee1a6ac9d qt-x11-opensource-src-4.5.2.tar.bz2 -9865efce56f62a441a76626226b5f946 qt-copy-patches-20090626svn.tar.bz2 +8e3924f417fea67f72b2105faed2119c gstreamer-logo.svg +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