5a8a37138f
the upstream tarball at least)
1945 lines
86 KiB
Diff
1945 lines
86 KiB
Diff
From b48e2091871516496cf0b133249fbf5326a55831 Mon Sep 17 00:00:00 2001
|
|
From: Lubos Lunak <l.lunak@kde.org>
|
|
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
|
|
|
|
From 339e220e29ff39b86705438b4be6f90e5618d27b Mon Sep 17 00:00:00 2001
|
|
From: Lubos Lunak <l.lunak@kde.org>
|
|
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<char *>(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
|
|
|
|
From 68eaa07de69e873b89d4aba341c6ed1ca81f6819 Mon Sep 17 00:00:00 2001
|
|
From: Lubos Lunak <l.lunak@kde.org>
|
|
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
|
|
|
|
From 86fc0d43cdcf3232ae0e4e6f4f28cf8f1a45ede5 Mon Sep 17 00:00:00 2001
|
|
From: Benjamin Reed <rangerrick@befunk.com>
|
|
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
|
|
|
|
From 733d1afd03908d695aa8a6518f453b9ff0e5b8a2 Mon Sep 17 00:00:00 2001
|
|
From: Robert Knight <robertknight@gmail.com>
|
|
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
|
|
|
|
From 8e28e0603a900e1b18ebfd14c4f87b16dabf4cf6 Mon Sep 17 00:00:00 2001
|
|
From: Christian Ehrlicher <ch.ehrlicher@gmx.de>
|
|
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
|
|
|
|
From 0afcf33127c6ccbe5dfaae4f4c5e02f28dc10ae1 Mon Sep 17 00:00:00 2001
|
|
From: Christian Ehrlicher <ch.ehrlicher@gmx.de>
|
|
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
|
|
|
|
From 1ec9dd029abaa0f00798535fdb1722154b1c63f6 Mon Sep 17 00:00:00 2001
|
|
From: =?utf-8?q?Rafael=20Fern=C3=A1ndez=20L=C3=B3pez?= <ereslibre@kde.org>
|
|
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<QPair<int, int> > QTreeViewPrivate::columnRanges(const QModelIndex &topInd
|
|
current.first = -2; // -1 is not enough because -1+1 = 0
|
|
current.second = -2;
|
|
foreach (int logicalColumn, logicalIndexes) {
|
|
- if (current.second + 1 != logicalColumn) {
|
|
+ if (current.second + 1 != logicalColumn && !header->isSectionHidden(current.second + 1)) {
|
|
if (current.first != -2) {
|
|
//let's save the current one
|
|
ret += current;
|
|
--
|
|
1.6.2.5
|
|
|
|
From b274bbaf4768dcfdfcf95ceda08b6402ffedb80d Mon Sep 17 00:00:00 2001
|
|
From: George Goldberg <grundleborg@googlemail.com>
|
|
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>()) {
|
|
+ QDBusArgument valueArg = qvariant_cast<QDBusArgument>(value);
|
|
+ if (valueArg.currentType() != -1) {
|
|
+ int mid = it->adaptor->metaObject()->property(it->adaptor->metaObject()->indexOfProperty(property_name)).userType();
|
|
+ void *null = 0;
|
|
+ QVariant valueStore(mid, null);
|
|
+ QDBusMetaType::demarshall(valueArg, mid, valueStore.data());
|
|
+
|
|
+ if (it->adaptor->setProperty(property_name, valueStore))
|
|
+ return msg.createReply();
|
|
+ }
|
|
+ }
|
|
+
|
|
if (it->adaptor->setProperty(property_name, value))
|
|
return msg.createReply();
|
|
+ }
|
|
}
|
|
}
|
|
|
|
--
|
|
1.6.2.5
|
|
|
|
From 9a3fe8fc4912bf82b791c4131f553c18140ca838 Mon Sep 17 00:00:00 2001
|
|
From: Thiago Macieira <thiago@doriath.(none)>
|
|
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 <installdir>
|
|
+--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 <other configure options> -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
|
|
|
|
From 39b24a10e4dee27357b9760b735c2ab98b132963 Mon Sep 17 00:00:00 2001
|
|
From: Thiago Macieira <thiago@doriath.(none)>
|
|
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 <installdir>
|
|
+
|
|
+ ./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 <installdir>
|
|
+
|
|
--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
|
|
|
|
From 8731ab999b849dac4716e3d29f5f55ed8e56438e Mon Sep 17 00:00:00 2001
|
|
From: Thiago Macieira <thiago.macieira@nokia.com>
|
|
Date: Thu, 25 Jun 2009 13:50:29 +0200
|
|
Subject: [PATCH 12/18] This patch makes the raster graphics system use shared images instead
|
|
of shared pixmaps.
|
|
|
|
Shared memory pixmaps are deprecated since they are slower than shared
|
|
images with modern graphics hardware. They are also not supported by EXA
|
|
drivers and can be disabled in the latest version of the NVidia driver.
|
|
|
|
qt-bugs@ issue : none
|
|
Qt Software task ID : none
|
|
bugs.kde.org number : none
|
|
---
|
|
src/gui/image/qnativeimage.cpp | 10 ----------
|
|
src/gui/image/qnativeimage_p.h | 1 -
|
|
src/gui/painting/qwindowsurface_raster.cpp | 13 ++++++++++---
|
|
3 files changed, 10 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/src/gui/image/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp
|
|
index 3745708..3c21fce 100644
|
|
--- a/src/gui/image/qnativeimage.cpp
|
|
+++ b/src/gui/image/qnativeimage.cpp
|
|
@@ -147,7 +147,6 @@ QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /*
|
|
{
|
|
if (!X11->use_mitshm) {
|
|
xshmimg = 0;
|
|
- xshmpm = 0;
|
|
image = QImage(width, height, format);
|
|
return;
|
|
}
|
|
@@ -191,11 +190,6 @@ QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /*
|
|
shmctl(xshminfo.shmid, IPC_RMID, 0);
|
|
return;
|
|
}
|
|
- xshmpm = XShmCreatePixmap(X11->display, DefaultRootWindow(X11->display), xshmimg->data,
|
|
- &xshminfo, width, height, dd);
|
|
- if (!xshmpm) {
|
|
- qWarning() << "QNativeImage: Unable to create shared Pixmap.";
|
|
- }
|
|
}
|
|
|
|
|
|
@@ -204,10 +198,6 @@ QNativeImage::~QNativeImage()
|
|
if (!xshmimg)
|
|
return;
|
|
|
|
- if (xshmpm) {
|
|
- XFreePixmap(X11->display, xshmpm);
|
|
- xshmpm = 0;
|
|
- }
|
|
XShmDetach(X11->display, &xshminfo);
|
|
xshmimg->data = 0;
|
|
XDestroyImage(xshmimg);
|
|
diff --git a/src/gui/image/qnativeimage_p.h b/src/gui/image/qnativeimage_p.h
|
|
index 07d5dfe..ba01854 100644
|
|
--- a/src/gui/image/qnativeimage_p.h
|
|
+++ b/src/gui/image/qnativeimage_p.h
|
|
@@ -90,7 +90,6 @@ public:
|
|
|
|
#elif defined(Q_WS_X11) && !defined(QT_NO_MITSHM)
|
|
XImage *xshmimg;
|
|
- Pixmap xshmpm;
|
|
XShmSegmentInfo xshminfo;
|
|
|
|
#elif defined(Q_WS_MAC)
|
|
diff --git a/src/gui/painting/qwindowsurface_raster.cpp b/src/gui/painting/qwindowsurface_raster.cpp
|
|
index d6fb03b..09963d9 100644
|
|
--- a/src/gui/painting/qwindowsurface_raster.cpp
|
|
+++ b/src/gui/painting/qwindowsurface_raster.cpp
|
|
@@ -220,9 +220,16 @@ void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoi
|
|
|
|
QRect br = rgn.boundingRect().translated(offset);
|
|
#ifndef QT_NO_MITSHM
|
|
- if (d_ptr->image->xshmpm) {
|
|
- XCopyArea(X11->display, d_ptr->image->xshmpm, widget->handle(), d_ptr->gc,
|
|
- br.x(), br.y(), br.width(), br.height(), wbr.x(), wbr.y());
|
|
+ if (d_ptr->image->xshmimg && (br.width() * br.height() > 65536)) {
|
|
+ const QImage &src = d->image->image;
|
|
+ br = br.intersected(src.rect());
|
|
+ // Hack to make sure we satisify the PutImage() constraints in the X server,
|
|
+ // since the doShmPutImage() route currently forces a migration to system ram.
|
|
+ wbr.setX(wbr.x() - br.x());
|
|
+ br.setX(0);
|
|
+ br.setWidth(src.width());
|
|
+ XShmPutImage(X11->display, widget->handle(), d_ptr->gc, d_ptr->image->xshmimg,
|
|
+ br.x(), br.y(), wbr.x(), wbr.y(), br.width(), br.height(), False);
|
|
XSync(X11->display, False);
|
|
} else
|
|
#endif
|
|
--
|
|
1.6.2.5
|
|
|
|
From bb8255da422470c5012b6b1c4c24eb2afb6804dc Mon Sep 17 00:00:00 2001
|
|
From: Thiago Macieira <thiago.macieira@nokia.com>
|
|
Date: Fri, 26 Jun 2009 11:41:45 +0200
|
|
Subject: [PATCH 13/18] Restore a section of the file that got removed due to conflict resolution.
|
|
|
|
Thanks to Kevin Kofler for pointing this out
|
|
---
|
|
src/gui/kernel/qapplication_x11.cpp | 6 +++---
|
|
1 files changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
|
|
index 33aec9e..53f020b 100644
|
|
--- a/src/gui/kernel/qapplication_x11.cpp
|
|
+++ b/src/gui/kernel/qapplication_x11.cpp
|
|
@@ -1955,9 +1955,9 @@ void qt_init(QApplicationPrivate *priv, int,
|
|
bool local = displayName.isEmpty() || displayName.lastIndexOf(QLatin1Char(':')) == 0;
|
|
if (local && (qgetenv("QT_X11_NO_MITSHM").toInt() == 0)) {
|
|
Visual *defaultVisual = DefaultVisual(X11->display, DefaultScreen(X11->display));
|
|
- X11->use_mitshm = mitshm_pixmaps && (defaultVisual->red_mask == 0xff0000
|
|
- && defaultVisual->green_mask == 0xff00
|
|
- && defaultVisual->blue_mask == 0xff);
|
|
+ X11->use_mitshm = defaultVisual->red_mask == 0xff0000
|
|
+ && defaultVisual->green_mask == 0xff00
|
|
+ && defaultVisual->blue_mask == 0xff;
|
|
}
|
|
}
|
|
#endif // QT_NO_MITSHM
|
|
--
|
|
1.6.2.5
|
|
|
|
From 01f26d0756839fbe783c637ca7dec5b7987f7e14 Mon Sep 17 00:00:00 2001
|
|
From: Aaron Seigo <aseigo@kde.org>
|
|
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<QAction*, QRect> &actionRects, QList<QAc
|
|
|
|
|
|
if (!sz.isEmpty()) {
|
|
- max_column_width = qMax(max_column_width, sz.width());
|
|
+ max_column_width = qMax(q->minimumWidth(), qMax(max_column_width, sz.width()));
|
|
//wrapping
|
|
if (!scroll &&
|
|
y+sz.height()+vmargin > dh - (q->style()->pixelMetric(QStyle::PM_MenuDesktopFrameWidth, 0, q) * 2)) {
|
|
--
|
|
1.6.2.5
|
|
|
|
From 1a94cd7b132497f70a2b97ec2b58f6e2b1c5076a Mon Sep 17 00:00:00 2001
|
|
From: Helio Chissini de Castro <helio@kde.org>
|
|
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
|
|
|
|
From 9eb3560cfd5cd0bc9c7bf79f2c27657ee07b8f95 Mon Sep 17 00:00:00 2001
|
|
From: Albert Astals Cid <aacid@kde.org>
|
|
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<QModifKeyName> modifs;
|
|
if (nativeText) {
|
|
- modifs << QModifKeyName(Qt::CTRL, QShortcut::tr("Ctrl").toLower().append(QLatin1Char('+')))
|
|
- << QModifKeyName(Qt::SHIFT, QShortcut::tr("Shift").toLower().append(QLatin1Char('+')))
|
|
- << QModifKeyName(Qt::ALT, QShortcut::tr("Alt").toLower().append(QLatin1Char('+')))
|
|
- << QModifKeyName(Qt::META, QShortcut::tr("Meta").toLower().append(QLatin1Char('+')));
|
|
+ modifs << QModifKeyName(Qt::CTRL, QShortcut::tr("Ctrl", "Ctrl key, used for shortcuts").toLower().append(QLatin1Char('+')))
|
|
+ << QModifKeyName(Qt::SHIFT, QShortcut::tr("Shift", "Shift key, used for shortcuts").toLower().append(QLatin1Char('+')))
|
|
+ << QModifKeyName(Qt::ALT, QShortcut::tr("Alt", "Alt key, used for shortcuts").toLower().append(QLatin1Char('+')))
|
|
+ << QModifKeyName(Qt::META, QShortcut::tr("Meta", "Meta key, used for shortcuts").toLower().append(QLatin1Char('+')));
|
|
}
|
|
modifs += *gmodifs; // Test non-translated ones last
|
|
|
|
@@ -1086,7 +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
|
|
|
|
From 4be7acd98f49b3b1bb12c9fa5dd52b7f9ffd90fb Mon Sep 17 00:00:00 2001
|
|
From: Dario Freddi <drf@kde.org>
|
|
Date: Mon, 28 Sep 2009 15:58:12 +0200
|
|
Subject: [PATCH 18/18] Fix QNativeImage constructor
|
|
|
|
Signed-off-by: Dario Freddi <drf@kde.org>
|
|
---
|
|
src/gui/image/qnativeimage.cpp | 2 +-
|
|
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
|
|
diff --git a/src/gui/image/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp
|
|
index a0c86db..c1bc794 100644
|
|
--- a/src/gui/image/qnativeimage.cpp
|
|
+++ b/src/gui/image/qnativeimage.cpp
|
|
@@ -144,7 +144,7 @@ QImage::Format QNativeImage::systemFormat()
|
|
#elif defined(Q_WS_X11) && !defined(QT_NO_MITSHM)
|
|
|
|
QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /* isTextBuffer */, QWidget *widget)
|
|
- : xshmimg(0), xshmpm(0)
|
|
+ : xshmimg(0)
|
|
{
|
|
if (!X11->use_mitshm) {
|
|
image = QImage(width, height, format);
|
|
--
|
|
1.6.2.5
|
|
|