diff options
author | Fathi Boudra <fabo@debian.org> | 2007-06-26 19:02:24 +0000 |
---|---|---|
committer | Fathi Boudra <fabo@debian.org> | 2007-06-26 19:02:24 +0000 |
commit | 601607d4c3f4ac37ad663ef7fd2b4b7c933e2a2a (patch) | |
tree | 85b6c60a4612cb479a3e16b8366b8d1574f20a63 | |
parent | b9c388d955255dfd9f727493c92592fa2ee7329d (diff) | |
download | qt4-x11-601607d4c3f4ac37ad663ef7fd2b4b7c933e2a2a.tar.gz |
* Qt4 demos builds properly in Qt4.3. (Closes: #408639)
* Replace qmake by qmake-qt4 in libqt4-dev long description.
(Closes: #415816)
* Apply qt-copy patches:
* 00_0178-transparency-window-types: adds Qt support for new window types
used for compositing.
* 00_0179-transient-hack: workaround that makes setting of WM_TRANSIENT_FOR
work with some window types.
* 00_0180-window-role: several problems with Qt's support for the
WM_WINDOW_ROLE property.
* 00_0181-qdnd-x11-fix: makes the find_child algorithm in qdnd look at
_all_ widgets that contain the QPoint.
* 00_0182-argb-visuals-default: Qt handling argb visuals on X11.
-rw-r--r-- | debian/changelog | 24 | ||||
-rw-r--r-- | debian/control | 2 | ||||
-rwxr-xr-x | debian/patches/00_0163-fix-gcc43-support.dpatch | 72 | ||||
-rwxr-xr-x | debian/patches/00_0167-fix-group-reading.dpatch | 6 | ||||
-rwxr-xr-x | debian/patches/00_0175-fix-s390-qatomic.dpatch | 6 | ||||
-rwxr-xr-x | debian/patches/00_0176-coverity-fixes.dpatch | 32 | ||||
-rw-r--r-- | debian/patches/00_0178-transparency-window-types.dpatch | 340 | ||||
-rw-r--r-- | debian/patches/00_0179-transient-hack.dpatch | 22 | ||||
-rw-r--r-- | debian/patches/00_0180-window-role.dpatch | 92 | ||||
-rw-r--r-- | debian/patches/00_0181-qdnd-x11-fix.dpatch | 94 | ||||
-rw-r--r-- | debian/patches/00_0182-argb-visuals-default.dpatch | 135 | ||||
-rw-r--r-- | debian/patches/00list | 5 |
12 files changed, 776 insertions, 54 deletions
diff --git a/debian/changelog b/debian/changelog index 6f264f0..aca3ad6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,14 +1,28 @@ qt4-x11 (4.3.0-2) unstable; urgency=low [Brian Nelson] - * Changed dist back to unstable + * Changed dist back to unstable. * Tightened qt4-dev-tools's dependency on libqt4-core to (= ${Source-Version}), since it uses internal (non-public) classes in - Qt whose ABI can change. - * Added a build-dependency on libxi-dev to enable tablet support or - something + Qt whose ABI can change. (Closes: #429817) + * Added a build-dependency on libxi-dev to enable tablet support. - -- + [Fathi Boudra] + * Qt4 demos builds properly in Qt4.3. (Closes: #408639) + * Replace qmake by qmake-qt4 in libqt4-dev long description. + (Closes: #415816) + * Apply qt-copy patches: + * 00_0178-transparency-window-types: adds Qt support for new window types + used for compositing. + * 00_0179-transient-hack: workaround that makes setting of WM_TRANSIENT_FOR + work with some window types. + * 00_0180-window-role: several problems with Qt's support for the + WM_WINDOW_ROLE property. + * 00_0181-qdnd-x11-fix: makes the find_child algorithm in qdnd look at + _all_ widgets that contain the QPoint. + * 00_0182-argb-visuals-default: Qt handling argb visuals on X11. + + -- Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> Tue, 26 Jun 2007 19:03:06 +0200 qt4-x11 (4.3.0-1) experimental; urgency=low diff --git a/debian/control b/debian/control index 3bc0342..8a5712a 100644 --- a/debian/control +++ b/debian/control @@ -18,7 +18,7 @@ Description: Qt 4 development files is its rich set of widgets that provide standard GUI functionality. . This packages contains the header development files and development - programs such as qmake used for building Qt applications. + programs such as qmake-qt4 used for building Qt4 applications. . Homepage: http://www.trolltech.com diff --git a/debian/patches/00_0163-fix-gcc43-support.dpatch b/debian/patches/00_0163-fix-gcc43-support.dpatch index 5988f82..f6ab802 100755 --- a/debian/patches/00_0163-fix-gcc43-support.dpatch +++ b/debian/patches/00_0163-fix-gcc43-support.dpatch @@ -5,9 +5,9 @@ ## DP: Various fixes to get Qt 4.3 without hundreds of warnings compiling. @DPATCH@ -diff -urNad qt4-x11-4.3.0~rc1~/config.tests/unix/endian.test qt4-x11-4.3.0~rc1/config.tests/unix/endian.test ---- qt4-x11-4.3.0~rc1~/config.tests/unix/endian.test 2007-05-06 17:54:44.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/config.tests/unix/endian.test 2007-05-17 19:09:20.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/config.tests/unix/endian.test qt4-x11-4.3.0/config.tests/unix/endian.test +--- qt4-x11-4.3.0~/config.tests/unix/endian.test 2007-05-25 15:24:34.000000000 +0200 ++++ qt4-x11-4.3.0/config.tests/unix/endian.test 2007-06-26 19:54:20.000000000 +0200 @@ -30,6 +30,7 @@ [ "$VERBOSE" = "yes" ] && echo " Found 'MostSignificantByteFirst' in binary" ENDIAN="BIG" @@ -16,9 +16,9 @@ diff -urNad qt4-x11-4.3.0~rc1~/config.tests/unix/endian.test qt4-x11-4.3.0~rc1/c # done if [ "$ENDIAN" = "LITTLE" ]; then -diff -urNad qt4-x11-4.3.0~rc1~/config.tests/x11/glib/glib.cpp qt4-x11-4.3.0~rc1/config.tests/x11/glib/glib.cpp ---- qt4-x11-4.3.0~rc1~/config.tests/x11/glib/glib.cpp 2007-05-06 17:54:37.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/config.tests/x11/glib/glib.cpp 2007-05-17 19:09:20.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/config.tests/x11/glib/glib.cpp qt4-x11-4.3.0/config.tests/x11/glib/glib.cpp +--- qt4-x11-4.3.0~/config.tests/x11/glib/glib.cpp 2007-05-25 15:24:25.000000000 +0200 ++++ qt4-x11-4.3.0/config.tests/x11/glib/glib.cpp 2007-06-26 19:54:20.000000000 +0200 @@ -6,7 +6,7 @@ { GMainContext *context; @@ -28,9 +28,9 @@ diff -urNad qt4-x11-4.3.0~rc1~/config.tests/x11/glib/glib.cpp qt4-x11-4.3.0~rc1/ if (!g_thread_supported()) g_thread_init(NULL); context = g_main_context_default(); -diff -urNad qt4-x11-4.3.0~rc1~/src/corelib/codecs/qtextcodec.cpp qt4-x11-4.3.0~rc1/src/corelib/codecs/qtextcodec.cpp ---- qt4-x11-4.3.0~rc1~/src/corelib/codecs/qtextcodec.cpp 2007-05-06 17:54:22.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/corelib/codecs/qtextcodec.cpp 2007-05-17 19:09:20.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/src/corelib/codecs/qtextcodec.cpp qt4-x11-4.3.0/src/corelib/codecs/qtextcodec.cpp +--- qt4-x11-4.3.0~/src/corelib/codecs/qtextcodec.cpp 2007-05-25 15:24:09.000000000 +0200 ++++ qt4-x11-4.3.0/src/corelib/codecs/qtextcodec.cpp 2007-06-26 19:54:20.000000000 +0200 @@ -415,7 +415,7 @@ localeMapper = checkForCodec(lang); @@ -40,9 +40,9 @@ diff -urNad qt4-x11-4.3.0~rc1~/src/corelib/codecs/qtextcodec.cpp qt4-x11-4.3.0~r localeMapper = checkForCodec("ISO 8859-15"); // 6. guess locale from ctype unless ctype is "C" -diff -urNad qt4-x11-4.3.0~rc1~/src/corelib/io/qtextstream.cpp qt4-x11-4.3.0~rc1/src/corelib/io/qtextstream.cpp ---- qt4-x11-4.3.0~rc1~/src/corelib/io/qtextstream.cpp 2007-05-06 17:54:23.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/corelib/io/qtextstream.cpp 2007-05-17 19:09:20.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/src/corelib/io/qtextstream.cpp qt4-x11-4.3.0/src/corelib/io/qtextstream.cpp +--- qt4-x11-4.3.0~/src/corelib/io/qtextstream.cpp 2007-05-25 15:24:10.000000000 +0200 ++++ qt4-x11-4.3.0/src/corelib/io/qtextstream.cpp 2007-06-26 19:54:20.000000000 +0200 @@ -541,8 +541,8 @@ if (!codec || autoDetectUnicode) { autoDetectUnicode = false; @@ -54,9 +54,9 @@ diff -urNad qt4-x11-4.3.0~rc1~/src/corelib/io/qtextstream.cpp qt4-x11-4.3.0~rc1/ codec = QTextCodec::codecForName("UTF-16"); } else if (!codec) { codec = QTextCodec::codecForLocale(); -diff -urNad qt4-x11-4.3.0~rc1~/src/corelib/io/qurl.cpp qt4-x11-4.3.0~rc1/src/corelib/io/qurl.cpp ---- qt4-x11-4.3.0~rc1~/src/corelib/io/qurl.cpp 2007-05-06 17:54:23.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/corelib/io/qurl.cpp 2007-05-17 19:09:20.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/src/corelib/io/qurl.cpp qt4-x11-4.3.0/src/corelib/io/qurl.cpp +--- qt4-x11-4.3.0~/src/corelib/io/qurl.cpp 2007-05-25 15:24:10.000000000 +0200 ++++ qt4-x11-4.3.0/src/corelib/io/qurl.cpp 2007-06-26 19:54:21.000000000 +0200 @@ -4724,9 +4724,9 @@ if (include.isEmpty()) { for (int i = 0; i < len; ++i) { @@ -83,9 +83,9 @@ diff -urNad qt4-x11-4.3.0~rc1~/src/corelib/io/qurl.cpp qt4-x11-4.3.0~rc1/src/cor || c == 0x2D // - || c == 0x2E // . || c == 0x5F // _ -diff -urNad qt4-x11-4.3.0~rc1~/src/corelib/tools/qlocale.cpp qt4-x11-4.3.0~rc1/src/corelib/tools/qlocale.cpp ---- qt4-x11-4.3.0~rc1~/src/corelib/tools/qlocale.cpp 2007-05-06 17:54:24.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/corelib/tools/qlocale.cpp 2007-05-17 19:09:20.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/src/corelib/tools/qlocale.cpp qt4-x11-4.3.0/src/corelib/tools/qlocale.cpp +--- qt4-x11-4.3.0~/src/corelib/tools/qlocale.cpp 2007-05-25 15:24:11.000000000 +0200 ++++ qt4-x11-4.3.0/src/corelib/tools/qlocale.cpp 2007-06-26 19:54:21.000000000 +0200 @@ -2589,8 +2589,8 @@ QChar c1 = format.at(i); @@ -97,10 +97,10 @@ diff -urNad qt4-x11-4.3.0~rc1~/src/corelib/tools/qlocale.cpp qt4-x11-4.3.0~rc1/s return true; ++i; -diff -urNad qt4-x11-4.3.0~rc1~/src/gui/kernel/qapplication.cpp qt4-x11-4.3.0~rc1/src/gui/kernel/qapplication.cpp ---- qt4-x11-4.3.0~rc1~/src/gui/kernel/qapplication.cpp 2007-05-06 17:54:32.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/gui/kernel/qapplication.cpp 2007-05-17 19:09:20.000000000 +0200 -@@ -2009,11 +2009,11 @@ +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qapplication.cpp qt4-x11-4.3.0/src/gui/kernel/qapplication.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qapplication.cpp 2007-05-25 15:24:20.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qapplication.cpp 2007-06-26 19:54:21.000000000 +0200 +@@ -2018,11 +2018,11 @@ #ifndef QT_NO_TRANSLATION static bool qt_detectRTLLanguage() { @@ -114,9 +114,9 @@ diff -urNad qt4-x11-4.3.0~rc1~/src/gui/kernel/qapplication.cpp qt4-x11-4.3.0~rc1 } #endif -diff -urNad qt4-x11-4.3.0~rc1~/src/gui/kernel/qkeymapper_x11.cpp qt4-x11-4.3.0~rc1/src/gui/kernel/qkeymapper_x11.cpp ---- qt4-x11-4.3.0~rc1~/src/gui/kernel/qkeymapper_x11.cpp 2007-05-06 17:54:32.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/gui/kernel/qkeymapper_x11.cpp 2007-05-17 19:09:20.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qkeymapper_x11.cpp qt4-x11-4.3.0/src/gui/kernel/qkeymapper_x11.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qkeymapper_x11.cpp 2007-05-25 15:24:20.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qkeymapper_x11.cpp 2007-06-26 19:54:21.000000000 +0200 @@ -1315,8 +1315,8 @@ } @@ -128,10 +128,10 @@ diff -urNad qt4-x11-4.3.0~rc1~/src/gui/kernel/qkeymapper_x11.cpp qt4-x11-4.3.0~r directionKeyEvent = Qt::Key_Direction_L; } else if (keysym == XK_Shift_R && directionKeyEvent == XK_Control_R || keysym == XK_Control_R && directionKeyEvent == XK_Shift_R) { -diff -urNad qt4-x11-4.3.0~rc1~/src/gui/kernel/qwidget.cpp qt4-x11-4.3.0~rc1/src/gui/kernel/qwidget.cpp ---- qt4-x11-4.3.0~rc1~/src/gui/kernel/qwidget.cpp 2007-05-06 17:54:31.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/gui/kernel/qwidget.cpp 2007-05-17 19:09:20.000000000 +0200 -@@ -1804,7 +1804,7 @@ +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qwidget.cpp qt4-x11-4.3.0/src/gui/kernel/qwidget.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qwidget.cpp 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qwidget.cpp 2007-06-26 19:54:21.000000000 +0200 +@@ -1808,7 +1808,7 @@ for (int i = 0; i < pd->children.size(); ++i) { QWidget *w = qobject_cast<QWidget *>(pd->children.at(i)); @@ -140,7 +140,7 @@ diff -urNad qt4-x11-4.3.0~rc1~/src/gui/kernel/qwidget.cpp qt4-x11-4.3.0~rc1/src/ if (w!=q) { w->create(); } else { -@@ -1814,6 +1814,7 @@ +@@ -1818,6 +1818,7 @@ if (winid) w->raise(); } @@ -148,9 +148,9 @@ diff -urNad qt4-x11-4.3.0~rc1~/src/gui/kernel/qwidget.cpp qt4-x11-4.3.0~rc1/src/ } } else { q->create(); -diff -urNad qt4-x11-4.3.0~rc1~/src/gui/painting/qregion_unix.cpp qt4-x11-4.3.0~rc1/src/gui/painting/qregion_unix.cpp ---- qt4-x11-4.3.0~rc1~/src/gui/painting/qregion_unix.cpp 2007-05-06 17:54:26.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/gui/painting/qregion_unix.cpp 2007-05-17 19:09:20.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/src/gui/painting/qregion_unix.cpp qt4-x11-4.3.0/src/gui/painting/qregion_unix.cpp +--- qt4-x11-4.3.0~/src/gui/painting/qregion_unix.cpp 2007-05-25 15:24:13.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/painting/qregion_unix.cpp 2007-06-26 19:54:21.000000000 +0200 @@ -1929,7 +1929,7 @@ else --isInside; @@ -160,9 +160,9 @@ diff -urNad qt4-x11-4.3.0~rc1~/src/gui/painting/qregion_unix.cpp qt4-x11-4.3.0~r pWETE->nextWETE = AET; pWETE = AET; inside = !inside; -diff -urNad qt4-x11-4.3.0~rc1~/src/tools/uic/driver.cpp qt4-x11-4.3.0~rc1/src/tools/uic/driver.cpp ---- qt4-x11-4.3.0~rc1~/src/tools/uic/driver.cpp 2007-05-06 17:54:17.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/tools/uic/driver.cpp 2007-05-17 19:09:20.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/src/tools/uic/driver.cpp qt4-x11-4.3.0/src/tools/uic/driver.cpp +--- qt4-x11-4.3.0~/src/tools/uic/driver.cpp 2007-05-25 15:24:02.000000000 +0200 ++++ qt4-x11-4.3.0/src/tools/uic/driver.cpp 2007-06-26 19:54:21.000000000 +0200 @@ -160,7 +160,7 @@ static bool isAnsiCCharacter(const QChar& c) diff --git a/debian/patches/00_0167-fix-group-reading.dpatch b/debian/patches/00_0167-fix-group-reading.dpatch index 0185410..d7f8a07 100755 --- a/debian/patches/00_0167-fix-group-reading.dpatch +++ b/debian/patches/00_0167-fix-group-reading.dpatch @@ -5,9 +5,9 @@ ## DP: In big user environments, getgrgid_r() needs more memory than sysconf() returns. @DPATCH@ -diff -urNad qt4-x11-4.3.0~rc1~/src/corelib/io/qfsfileengine_unix.cpp qt4-x11-4.3.0~rc1/src/corelib/io/qfsfileengine_unix.cpp ---- qt4-x11-4.3.0~rc1~/src/corelib/io/qfsfileengine_unix.cpp 2007-05-06 17:54:23.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/corelib/io/qfsfileengine_unix.cpp 2007-05-17 19:10:48.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/src/corelib/io/qfsfileengine_unix.cpp qt4-x11-4.3.0/src/corelib/io/qfsfileengine_unix.cpp +--- qt4-x11-4.3.0~/src/corelib/io/qfsfileengine_unix.cpp 2007-05-25 15:24:09.000000000 +0200 ++++ qt4-x11-4.3.0/src/corelib/io/qfsfileengine_unix.cpp 2007-06-26 19:56:03.000000000 +0200 @@ -830,9 +830,16 @@ } else if (own == OwnerGroup) { struct group *gr = 0; diff --git a/debian/patches/00_0175-fix-s390-qatomic.dpatch b/debian/patches/00_0175-fix-s390-qatomic.dpatch index 11fec9e..3342f8d 100755 --- a/debian/patches/00_0175-fix-s390-qatomic.dpatch +++ b/debian/patches/00_0175-fix-s390-qatomic.dpatch @@ -5,9 +5,9 @@ ## DP: Fix s390(x) build. @DPATCH@ -diff -urNad qt4-x11-4.3.0~rc1~/src/corelib/arch/qatomic_s390.h qt4-x11-4.3.0~rc1/src/corelib/arch/qatomic_s390.h ---- qt4-x11-4.3.0~rc1~/src/corelib/arch/qatomic_s390.h 2007-05-06 17:54:22.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/corelib/arch/qatomic_s390.h 2007-05-17 19:13:18.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/src/corelib/arch/qatomic_s390.h qt4-x11-4.3.0/src/corelib/arch/qatomic_s390.h +--- qt4-x11-4.3.0~/src/corelib/arch/qatomic_s390.h 2007-05-25 15:24:09.000000000 +0200 ++++ qt4-x11-4.3.0/src/corelib/arch/qatomic_s390.h 2007-06-26 19:56:59.000000000 +0200 @@ -182,10 +182,20 @@ #endif } diff --git a/debian/patches/00_0176-coverity-fixes.dpatch b/debian/patches/00_0176-coverity-fixes.dpatch index 8e643c0..2a56f4e 100755 --- a/debian/patches/00_0176-coverity-fixes.dpatch +++ b/debian/patches/00_0176-coverity-fixes.dpatch @@ -5,9 +5,9 @@ ## DP: Fix various obvious memory leaks. @DPATCH@ -diff -urNad qt4-x11-4.3.0~rc1~/src/gui/painting/qimagescale.cpp qt4-x11-4.3.0~rc1/src/gui/painting/qimagescale.cpp ---- qt4-x11-4.3.0~rc1~/src/gui/painting/qimagescale.cpp 2007-05-06 17:54:25.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/gui/painting/qimagescale.cpp 2007-05-19 08:46:30.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/src/gui/painting/qimagescale.cpp qt4-x11-4.3.0/src/gui/painting/qimagescale.cpp +--- qt4-x11-4.3.0~/src/gui/painting/qimagescale.cpp 2007-05-25 15:24:12.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/painting/qimagescale.cpp 2007-06-26 19:58:23.000000000 +0200 @@ -1005,6 +1005,7 @@ buffer = QImage(dw, dh, src.format()); if (buffer.isNull()) { @@ -16,9 +16,29 @@ diff -urNad qt4-x11-4.3.0~rc1~/src/gui/painting/qimagescale.cpp qt4-x11-4.3.0~rc return QImage(); } -diff -urNad qt4-x11-4.3.0~rc1~/src/tools/uic/cpp/cppwriteicondata.cpp qt4-x11-4.3.0~rc1/src/tools/uic/cpp/cppwriteicondata.cpp ---- qt4-x11-4.3.0~rc1~/src/tools/uic/cpp/cppwriteicondata.cpp 2007-05-06 17:54:47.000000000 +0200 -+++ qt4-x11-4.3.0~rc1/src/tools/uic/cpp/cppwriteicondata.cpp 2007-05-19 08:47:22.000000000 +0200 +diff -urNad qt4-x11-4.3.0~/src/svg/qsvghandler.cpp qt4-x11-4.3.0/src/svg/qsvghandler.cpp +--- qt4-x11-4.3.0~/src/svg/qsvghandler.cpp 2007-05-25 15:24:21.000000000 +0200 ++++ qt4-x11-4.3.0/src/svg/qsvghandler.cpp 2007-06-26 19:58:23.000000000 +0200 +@@ -1116,15 +1116,9 @@ + if (!size.isEmpty()) { + QSvgHandler::LengthType type; + qreal len = parseLength(size, type, handler); +- //len = convertToPixels(len, false, type); + // ### org_module.svg shows that font size + // seems to be always in px... +- type = QSvgHandler::PX; +- if (type == QSvgHandler::PX || +- type == QSvgHandler::OTHER) +- font.setPixelSize(int(len)); +- else +- font.setPointSizeF(len); ++ font.setPixelSize(int(len)); + } + if (!style.isEmpty()) { + if (style == QLatin1String("normal")) { +diff -urNad qt4-x11-4.3.0~/src/tools/uic/cpp/cppwriteicondata.cpp qt4-x11-4.3.0/src/tools/uic/cpp/cppwriteicondata.cpp +--- qt4-x11-4.3.0~/src/tools/uic/cpp/cppwriteicondata.cpp 2007-05-25 15:24:38.000000000 +0200 ++++ qt4-x11-4.3.0/src/tools/uic/cpp/cppwriteicondata.cpp 2007-06-26 19:58:23.000000000 +0200 @@ -50,7 +50,7 @@ ba[i] = r; } diff --git a/debian/patches/00_0178-transparency-window-types.dpatch b/debian/patches/00_0178-transparency-window-types.dpatch new file mode 100644 index 0000000..645f89e --- /dev/null +++ b/debian/patches/00_0178-transparency-window-types.dpatch @@ -0,0 +1,340 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 00_0178-transparency-window-types.dpatch by Lubos Lunak <l.lunak@kde.org> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: This patch adds Qt support for new window types used for compositing. + +@DPATCH@ +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qapplication_x11.cpp qt4-x11-4.3.0/src/gui/kernel/qapplication_x11.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qapplication_x11.cpp 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qapplication_x11.cpp 2007-06-26 20:00:27.000000000 +0200 +@@ -199,6 +199,11 @@ + "_NET_WM_WINDOW_TYPE_SPLASH\0" + "_NET_WM_WINDOW_TYPE_TOOLBAR\0" + "_NET_WM_WINDOW_TYPE_UTILITY\0" ++ "_NET_WM_WINDOW_TYPE_DROPDOWN_MENU\0" ++ "_NET_WM_WINDOW_TYPE_POPUP_MENU\0" ++ "_NET_WM_WINDOW_TYPE_COMBO\0" ++ "_NET_WM_WINDOW_TYPE_DND\0" ++ "_NET_WM_WINDOW_TYPE_TOOLTIP\0" + + "_KDE_NET_WM_FRAME_STRUT\0" + +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qdnd_x11.cpp qt4-x11-4.3.0/src/gui/kernel/qdnd_x11.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qdnd_x11.cpp 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qdnd_x11.cpp 2007-06-26 20:00:27.000000000 +0200 +@@ -254,6 +254,7 @@ + QWidget(QApplication::desktop()->screen(screen), + Qt::Tool | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint) + { ++ x11SetWindowType( X11WindowTypeDND ); + } + + void setPixmap(const QPixmap &pm) +@@ -1392,6 +1393,7 @@ + // recreate the pixmap on the new screen... + delete xdnd_data.deco; + xdnd_data.deco = new QShapedPixmapWidget(screen); ++ xdnd_data.deco->x11SetWindowTransient( object->source()->topLevelWidget()); + if (!QWidget::mouseGrabber()) { + updatePixmap(); + xdnd_data.deco->grabMouse(); +@@ -1852,6 +1854,7 @@ + object = o; + object->d_func()->target = 0; + xdnd_data.deco = new QShapedPixmapWidget(); ++ xdnd_data.deco->x11SetWindowTransient( object->source()->topLevelWidget()); + + willDrop = false; + +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qt_x11_p.h qt4-x11-4.3.0/src/gui/kernel/qt_x11_p.h +--- qt4-x11-4.3.0~/src/gui/kernel/qt_x11_p.h 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qt_x11_p.h 2007-06-26 20:00:27.000000000 +0200 +@@ -514,6 +514,11 @@ + _NET_WM_WINDOW_TYPE_SPLASH, + _NET_WM_WINDOW_TYPE_TOOLBAR, + _NET_WM_WINDOW_TYPE_UTILITY, ++ _NET_WM_WINDOW_TYPE_DROPDOWN_MENU, ++ _NET_WM_WINDOW_TYPE_POPUP_MENU, ++ _NET_WM_WINDOW_TYPE_COMBO, ++ _NET_WM_WINDOW_TYPE_DND, ++ _NET_WM_WINDOW_TYPE_TOOLTIP, + + _KDE_NET_WM_FRAME_STRUT, + +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qtooltip.cpp qt4-x11-4.3.0/src/gui/kernel/qtooltip.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qtooltip.cpp 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qtooltip.cpp 2007-06-26 20:00:27.000000000 +0200 +@@ -134,6 +134,9 @@ + setMouseTracking(true); + fadingOut = false; + reuseTip(text); ++#ifdef Q_WS_X11 ++ x11SetWindowType( X11WindowTypeTooltip ); ++#endif + } + + void QTipLabel::restartHideTimer() +@@ -351,6 +354,9 @@ + // that is showing (removes flickering) + if (QTipLabel::instance->tipChanged(pos, text, w)){ + QTipLabel::instance->reuseTip(text); ++#ifdef Q_WS_X11 ++ QTipLabel::instance->x11SetWindowTransient( w->topLevelWidget()); ++#endif + QTipLabel::instance->setTipRect(w, rect); + QTipLabel::instance->placeTip(pos, w); + } +@@ -360,6 +366,9 @@ + + if (!text.isEmpty()){ // no tip can be reused, create new tip: + new QTipLabel(pos, text, w); // sets QTipLabel::instance to itself ++#ifdef Q_WS_X11 ++ QTipLabel::instance->x11SetWindowTransient( w->topLevelWidget()); ++#endif + QTipLabel::instance->setTipRect(w, rect); + QTipLabel::instance->placeTip(pos, w); + QTipLabel::instance->setObjectName(QLatin1String("qtooltip_label")); +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qwidget.h qt4-x11-4.3.0/src/gui/kernel/qwidget.h +--- qt4-x11-4.3.0~/src/gui/kernel/qwidget.h 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qwidget.h 2007-06-26 20:00:27.000000000 +0200 +@@ -339,6 +339,19 @@ + + void setWindowOpacity(qreal level); + qreal windowOpacity() const; ++#if defined(Q_WS_X11) ++ enum X11WindowType { ++ X11WindowTypeSelect, ++ X11WindowTypeCombo, ++ X11WindowTypeDND, ++ X11WindowTypeTooltip, ++ X11WindowTypeMenu, // torn-off ++ X11WindowTypeDropdown, ++ X11WindowTypePopup ++ }; ++ void x11SetWindowType( X11WindowType type = X11WindowTypeSelect ); ++ void x11SetWindowTransient( QWidget* parent ); ++#endif + + bool isWindowModified() const; + #ifndef QT_NO_TOOLTIP +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qwidget_x11.cpp qt4-x11-4.3.0/src/gui/kernel/qwidget_x11.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qwidget_x11.cpp 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qwidget_x11.cpp 2007-06-26 20:00:27.000000000 +0200 +@@ -510,10 +510,6 @@ + } + #endif // QT_NO_XRENDER + +- // NET window types +- long net_wintypes[7] = { 0, 0, 0, 0, 0, 0, 0 }; +- int curr_wintype = 0; +- + QtMWMHints mwmhints; + mwmhints.flags = 0L; + mwmhints.functions = MWM_FUNC_ALL; +@@ -524,15 +520,11 @@ + if (topLevel) { + ulong wsa_mask = 0; + if (type == Qt::SplashScreen) { +- net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_SPLASH); + } else { // if (customize) { + mwmhints.decorations = 0L; + mwmhints.flags |= MWM_HINTS_DECORATIONS; + +- if (flags & Qt::FramelessWindowHint) { +- // override netwm type - quick and easy for KDE noborder +- net_wintypes[curr_wintype++] = ATOM(_KDE_NET_WM_WINDOW_TYPE_OVERRIDE); +- } else { ++ if ((flags & Qt::FramelessWindowHint) == 0 ) { + mwmhints.decorations |= MWM_DECOR_BORDER; + mwmhints.decorations |= MWM_DECOR_RESIZEH; + +@@ -554,22 +546,6 @@ + wsa.save_under = True; + wsa_mask |= CWSaveUnder; + } +- // ### need a better way to do this +- if (q->inherits("QMenu")) { +- // menu netwm type +- net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_MENU); +- } else if (q->inherits("QToolBar")) { +- // toolbar netwm type +- net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_TOOLBAR); +- } else if (type == Qt::Tool || type == Qt::Drawer) { +- // utility netwm type +- net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_UTILITY); +- } +- +- if (dialog) // dialog netwm type +- net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_DIALOG); +- // normal netwm type - default +- net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_NORMAL); + + if (flags & Qt::X11BypassWindowManagerHint) { + wsa.override_redirect = True; +@@ -588,6 +564,7 @@ + wsa.save_under = True; + XChangeWindowAttributes(dpy, id, CWOverrideRedirect | CWSaveUnder, + &wsa); ++ q->x11SetWindowType(); + } else if (topLevel && !desktop) { // top-level widget + if (!X11->wm_client_leader) + create_wm_client_leader(); +@@ -632,12 +609,7 @@ + // set mwm hints + SetMWMHints(dpy, id, mwmhints); + +- // set _NET_WM_WINDOW_TYPE +- if (curr_wintype > 0) +- XChangeProperty(dpy, id, ATOM(_NET_WM_WINDOW_TYPE), XA_ATOM, 32, PropModeReplace, +- (unsigned char *) net_wintypes, curr_wintype); +- else +- XDeleteProperty(dpy, id, ATOM(_NET_WM_WINDOW_TYPE)); ++ q->x11SetWindowType(); // set _NET_WM_WINDOW_TYPE + + // set _NET_WM_PID + long curr_pid = getpid(); +@@ -733,6 +705,63 @@ + q->setAttribute(Qt::WA_OutsideWSRange, true); + } + ++// Sets the EWMH (netwm) window type. Needed as a separate function ++// because create() may be too soon in some cases. ++void QWidget::x11SetWindowType( X11WindowType type ) ++{ ++ Display* dpy = X11->display; ++ // NET window types ++ long net_wintypes[7] = { 0, 0, 0, 0, 0, 0, 0 }; ++ int curr_wintype = 0; ++ if( type == X11WindowTypeSelect ) { ++ if ( windowType() == Qt::SplashScreen ) { ++ net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_SPLASH); ++ } else if (inherits("QToolBar")) { ++ // toolbar netwm type ++ net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_TOOLBAR); ++ } else if (windowType() == Qt::Tool || windowType() == Qt::Drawer) { ++ // utility netwm type ++ net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_UTILITY); ++ } else if (windowType() == Qt::Dialog || windowType() == Qt::Sheet ++ || (windowFlags() & Qt::MSWindowsFixedSizeDialogHint)) { ++ // dialog netwm type ++ net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_DIALOG); ++ } ++ } else if( type == X11WindowTypeCombo ) { ++ // combo netwm type ++ net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_COMBO); ++ } else if( type == X11WindowTypeDND ) { ++ // dnd netwm type ++ net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_DND); ++ } else if( type == X11WindowTypeDropdown ) { ++ // dropdown netwm type ++ net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_DROPDOWN_MENU); ++ } else if( type == X11WindowTypePopup ) { ++ // popup netwm type ++ net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_POPUP_MENU); ++ } else if( type == X11WindowTypeMenu ) { ++ // menu netwm type ++ net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_MENU); ++ } else if( type == X11WindowTypeTooltip ) { ++ // tooltip netwm type ++ net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_TOOLTIP); ++ } ++ ++ // normal netwm type - default ++ net_wintypes[curr_wintype++] = ATOM(_NET_WM_WINDOW_TYPE_NORMAL); ++ // set _NET_WM_WINDOW_TYPE ++ if (curr_wintype > 0) ++ XChangeProperty(dpy, winId(), ATOM(_NET_WM_WINDOW_TYPE), XA_ATOM, 32, PropModeReplace, ++ (unsigned char *) net_wintypes, curr_wintype); ++ else ++ XDeleteProperty(dpy, winId(), ATOM(_NET_WM_WINDOW_TYPE)); ++} ++ ++void QWidget::x11SetWindowTransient( QWidget* parent ) ++{ ++ XSetTransientForHint( X11->display, winId(), parent->window()->winId()); ++} ++ + /*! + Frees up window system resources. Destroys the widget window if \a + destroyWindow is true. +diff -urNad qt4-x11-4.3.0~/src/gui/widgets/qcombobox.cpp qt4-x11-4.3.0/src/gui/widgets/qcombobox.cpp +--- qt4-x11-4.3.0~/src/gui/widgets/qcombobox.cpp 2007-05-25 15:24:15.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/widgets/qcombobox.cpp 2007-06-26 20:00:27.000000000 +0200 +@@ -370,6 +370,10 @@ + layout->insertSpacing(0, verticalMargin); + layout->addSpacing(verticalMargin); + } ++#ifdef Q_WS_X11 ++ x11SetWindowType( X11WindowTypeCombo ); ++ x11SetWindowTransient( combo->topLevelWidget()); ++#endif + } + + void QComboBoxPrivateContainer::scrollItemView(int action) +diff -urNad qt4-x11-4.3.0~/src/gui/widgets/qmenu.cpp qt4-x11-4.3.0/src/gui/widgets/qmenu.cpp +--- qt4-x11-4.3.0~/src/gui/widgets/qmenu.cpp 2007-05-25 15:24:16.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/widgets/qmenu.cpp 2007-06-26 20:00:27.000000000 +0200 +@@ -84,6 +84,9 @@ + QTornOffMenu(QMenu *p) : QMenu(*(new QTornOffMenuPrivate(p))) + { + setParent(p, Qt::Window | Qt::Tool); ++#ifdef Q_WS_X11 ++ x11SetWindowType( X11WindowTypeMenu ); ++#endif + setAttribute(Qt::WA_DeleteOnClose, true); + setWindowTitle(p->windowTitle()); + setEnabled(p->isEnabled()); +@@ -130,6 +133,9 @@ + } + defaultMenuAction = menuAction = new QAction(q); + menuAction->d_func()->menu = q; ++#ifdef Q_WS_X11 ++ q->x11SetWindowType( QWidget::X11WindowTypePopup ); ++#endif + } + + //Windows and KDE allows menus to cover the taskbar, while GNOME and Mac don't +@@ -1611,6 +1617,32 @@ + } + setGeometry(QRect(pos, size)); + ++#ifdef Q_WS_X11 ++ QWidget* top = this; ++ for(;;) { ++ if( QMenu* m = qobject_cast< QMenu* >( top )) { ++ if( m->d_func()->causedPopup.widget == NULL ) ++ break; // ---> ++ top = m->d_func()->causedPopup.widget; ++ } else ++ break; // --> ++ } ++ if( QMenu* m = qobject_cast< QMenu* >( top )) ++ x11SetWindowType( X11WindowTypePopup ); ++ else ++ x11SetWindowType( X11WindowTypeDropdown ); ++ // hackish ... try to find the main window related to this popup ++ QWidget* parent = d_func()->causedPopup.widget; ++ if( parent == NULL ) ++ parent = parentWidget() ? parentWidget()->topLevelWidget() : NULL; ++ if( parent == NULL ) ++ parent = QApplication::widgetAt( pos ); ++ if( parent == NULL ) ++ parent = qApp->activeWindow(); ++ if( parent != NULL ) ++ x11SetWindowTransient( parent ); ++#endif ++ + #ifndef QT_NO_EFFECTS + int hGuess = qApp->layoutDirection() == Qt::RightToLeft ? QEffects::LeftScroll : QEffects::RightScroll; + int vGuess = QEffects::DownScroll; +@@ -1807,6 +1839,9 @@ + if (QMenuBar *mb = qobject_cast<QMenuBar*>(d->causedPopup.widget)) + mb->d_func()->setCurrentAction(0); + #endif ++#ifdef Q_WS_X11 ++ x11SetWindowType( X11WindowTypePopup ); // reset ++#endif + d->mouseDown = 0; + d->hasHadMouse = false; + d->causedPopup.widget = 0; diff --git a/debian/patches/00_0179-transient-hack.dpatch b/debian/patches/00_0179-transient-hack.dpatch new file mode 100644 index 0000000..fc85a65 --- /dev/null +++ b/debian/patches/00_0179-transient-hack.dpatch @@ -0,0 +1,22 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 00_0179-transient-hack.dpatch by Lubos Lunak <l.lunak@kde.org> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: qt-bugs issue : 166027 +## DP: This patch is just a hackish workaround that makes setting of WM_TRANSIENT_FOR +## DP: work with some window types (needed basically by the 0178 patch). +## DP: It is not a proper solution, waiting for TT to come up with something. + +@DPATCH@ +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qwidget_x11.cpp qt4-x11-4.3.0/src/gui/kernel/qwidget_x11.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qwidget_x11.cpp 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qwidget_x11.cpp 2007-06-26 20:01:42.000000000 +0200 +@@ -1569,7 +1569,7 @@ + do_size_hints(q, extra); + + // udpate WM_TRANSIENT_FOR +- if (isTransient(q)) { ++ if (isTransient(q) && !( q->windowFlags() & Qt::X11BypassWindowManagerHint)) { + QWidget *p = q->parentWidget(); + if (p) + p = p->window(); diff --git a/debian/patches/00_0180-window-role.dpatch b/debian/patches/00_0180-window-role.dpatch new file mode 100644 index 0000000..33a9a8b --- /dev/null +++ b/debian/patches/00_0180-window-role.dpatch @@ -0,0 +1,92 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 00_0180-window-role.dpatch by Lubos Lunak <l.lunak@kde.org +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: several problems with Qt's support for the WM_WINDOW_ROLE property. + +@DPATCH@ +diff -urNad qt4-x11-4.3.0~/src/corelib/kernel/qobject.cpp qt4-x11-4.3.0/src/corelib/kernel/qobject.cpp +--- qt4-x11-4.3.0~/src/corelib/kernel/qobject.cpp 2007-05-25 15:24:10.000000000 +0200 ++++ qt4-x11-4.3.0/src/corelib/kernel/qobject.cpp 2007-06-26 20:02:32.000000000 +0200 +@@ -994,9 +994,18 @@ + { + 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 + QObject::child is compat but needs to call itself recursively, +diff -urNad qt4-x11-4.3.0~/src/corelib/kernel/qobject_p.h qt4-x11-4.3.0/src/corelib/kernel/qobject_p.h +--- qt4-x11-4.3.0~/src/corelib/kernel/qobject_p.h 2007-05-25 15:24:10.000000000 +0200 ++++ qt4-x11-4.3.0/src/corelib/kernel/qobject_p.h 2007-06-26 20:02:32.000000000 +0200 +@@ -124,6 +124,9 @@ + mutable quint32 connectedSignals; + + QString objectName; ++#if defined(Q_WS_X11) ++ virtual void checkWindowRole(); ++#endif + }; + + class QSemaphore; +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qwidget_p.h qt4-x11-4.3.0/src/gui/kernel/qwidget_p.h +--- qt4-x11-4.3.0~/src/gui/kernel/qwidget_p.h 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qwidget_p.h 2007-06-26 20:02:32.000000000 +0200 +@@ -286,6 +286,7 @@ + + #if defined(Q_WS_X11) + void setWindowRole(const char *role); ++ virtual void checkWindowRole(); + void sendStartupMessage(const char *message) const; + #endif + +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qwidget_x11.cpp qt4-x11-4.3.0/src/gui/kernel/qwidget_x11.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qwidget_x11.cpp 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qwidget_x11.cpp 2007-06-26 20:02:32.000000000 +0200 +@@ -647,11 +647,8 @@ + // when we create a toplevel widget, the frame strut should be dirty + data.fstrut_dirty = 1; + +- // declare the widget's object name as window role +- QByteArray objName = q->objectName().toLocal8Bit(); +- XChangeProperty(dpy, id, +- ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace, +- (unsigned char *)objName.constData(), objName.length()); ++ // declare the widget's object name as window role if not set ++ setWindowRole( !q->windowRole().isEmpty() ? q->windowRole().toUtf8() : q->objectName().toUtf8()); + + // set client leader property + XChangeProperty(dpy, id, ATOM(WM_CLIENT_LEADER), +@@ -2588,12 +2585,20 @@ + void QWidgetPrivate::setWindowRole(const char *role) + { + Q_Q(QWidget); +- Q_ASSERT(q->testAttribute(Qt::WA_WState_Created)); ++ if( !q->testAttribute(Qt::WA_WState_Created)) ++ return; + XChangeProperty(X11->display, q->internalWinId(), + ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace, + (unsigned char *)role, qstrlen(role)); + } + ++void QWidgetPrivate::checkWindowRole() ++{ ++ Q_Q(QWidget); ++ if( q->windowRole().isEmpty()) ++ setWindowRole( objectName.toUtf8()); ++} ++ + Q_GLOBAL_STATIC(QX11PaintEngine, qt_widget_paintengine) + QPaintEngine *QWidget::paintEngine() const + { diff --git a/debian/patches/00_0181-qdnd-x11-fix.dpatch b/debian/patches/00_0181-qdnd-x11-fix.dpatch new file mode 100644 index 0000000..c2dbb0e --- /dev/null +++ b/debian/patches/00_0181-qdnd-x11-fix.dpatch @@ -0,0 +1,94 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 00_0181-qdnd-x11-fix.diff.dpatch by Matthias Kretz <kretz@kde.org> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: qt-bugs issue : 166518 +## Trolltech task ID : 167509 +## DP: This patch makes the algorithm look at _all_ widgets that contain the QPoint. + +@DPATCH@ +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qdnd_x11.cpp qt4-x11-4.3.0/src/gui/kernel/qdnd_x11.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qdnd_x11.cpp 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qdnd_x11.cpp 2007-06-26 20:05:15.000000000 +0200 +@@ -42,6 +42,7 @@ + #include "qdebug.h" + #include "qimagewriter.h" + #include "qbuffer.h" ++#include "qstack.h" + + #include "qdnd_p.h" + #include "qt_x11_p.h" +@@ -668,7 +669,44 @@ + } + + +-static QWidget *find_child(QWidget *tlw, QPoint & p) ++static QWidget *find_next_child(QWidget *child, QPoint &p, QStack<int> &chosenLine) ++{ ++ p = child->mapToParent(p); ++ QWidget *widget = child->parentWidget(); ++ if (!widget) { ++ return widget; ++ } ++ ++ bool done = false; ++ bool backwards = true; ++ while (!done) { ++ done = true; ++ if (((QExtraWidget*)widget)->extraData() && ++ ((QExtraWidget*)widget)->extraData()->xDndProxy != 0) ++ break; // stop searching for widgets under the mouse cursor if found widget is a proxy. ++ QObjectList children = widget->children(); ++ if (!chosenLine.isEmpty() && !children.isEmpty()) { ++ for(int i = backwards ? chosenLine.pop() : children.size(); i > 0;) { ++ --i; ++ QWidget *w = qobject_cast<QWidget *>(children.at(i)); ++ if (!w) ++ continue; ++ if (w->isVisible() && ++ w->geometry().contains(p) && ++ !w->isWindow()) { ++ widget = w; ++ done = false; ++ backwards = false; ++ p = widget->mapFromParent(p); ++ chosenLine << i; ++ break; ++ } ++ } ++ } ++ } ++ return widget; ++} ++static QWidget *find_child(QWidget *tlw, QPoint & p, QStack<int> &chosenLine) + { + QWidget *widget = tlw; + +@@ -692,6 +730,7 @@ + widget = w; + done = false; + p = widget->mapFromParent(p); ++ chosenLine.push(i); + break; + } + } +@@ -780,7 +819,8 @@ + const unsigned long *l = (const unsigned long *)xe->xclient.data.l; + + QPoint p((l[2] & 0xffff0000) >> 16, l[2] & 0x0000ffff); +- QWidget * c = find_child(w, p); // changes p to to c-local coordinates ++ QStack<int> chosenLine; ++ QWidget * c = find_child(w, p, chosenLine); // changes p to to c-local coordinates + + if (!passive && checkEmbedded(c, xe)) + return; +@@ -814,8 +854,7 @@ + + if (!passive) { // otherwise just reject + while (c && !c->acceptDrops() && !c->isWindow()) { +- p = c->mapToParent(p); +- c = c->parentWidget(); ++ c = find_next_child(c, p, chosenLine); + } + QWidget *target_widget = c && c->acceptDrops() ? c : 0; + diff --git a/debian/patches/00_0182-argb-visuals-default.dpatch b/debian/patches/00_0182-argb-visuals-default.dpatch new file mode 100644 index 0000000..22cb0bf --- /dev/null +++ b/debian/patches/00_0182-argb-visuals-default.dpatch @@ -0,0 +1,135 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 00_0182-argb-visuals-default.diff.dpatch by Zack Rusin <zrusin@trolltech.com> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Trolltech task ID : 120338 +## DP: Qt handling argb visuals on X11. in Qt 4.4 already. + +@DPATCH@ +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qapplication_x11.cpp qt4-x11-4.3.0/src/gui/kernel/qapplication_x11.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qapplication_x11.cpp 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qapplication_x11.cpp 2007-06-26 20:05:47.000000000 +0200 +@@ -1547,6 +1547,30 @@ + / (DisplayHeightMM(X11->display, s)*10); + } + ++ ++#ifndef QT_NO_XRENDER ++ int xrender_eventbase, xrender_errorbase; ++ // See if XRender is supported on the connected display ++ if (XQueryExtension(X11->display, "RENDER", &X11->xrender_major, ++ &xrender_eventbase, &xrender_errorbase) ++ && XRenderQueryExtension(X11->display, &xrender_eventbase, ++ &xrender_errorbase)) { ++ // Check the version as well - we need v0.4 or higher ++ int major = 0; ++ int minor = 0; ++ XRenderQueryVersion(X11->display, &major, &minor); ++ if (qgetenv("QT_X11_NO_XRENDER").isNull()) { ++ X11->use_xrender = (major >= 0 && minor >= 5); ++ X11->xrender_version = major*100+minor; ++ // workaround for broken XServer on Ubuntu Breezy (6.8 compiled with 7.0 ++ // protocol headers) ++ if (X11->xrender_version == 10 ++ && VendorRelease(X11->display) < 60900000 ++ && QByteArray(ServerVendor(X11->display)).contains("X.Org")) ++ X11->xrender_version = 9; ++ } ++ } ++#endif // QT_NO_XRENDER + QColormap::initialize(); + + // Support protocols +@@ -1570,30 +1594,15 @@ + #endif // QT_NO_XRANDR + + #ifndef QT_NO_XRENDER +- int xrender_eventbase, xrender_errorbase; +- // See if XRender is supported on the connected display +- if (XQueryExtension(X11->display, "RENDER", &X11->xrender_major, +- &xrender_eventbase, &xrender_errorbase) +- && XRenderQueryExtension(X11->display, &xrender_eventbase, +- &xrender_errorbase)) { ++ if (X11->use_xrender) { + // XRender is supported, let's see if we have a PictFormat for the + // default visual + XRenderPictFormat *format = + XRenderFindVisualFormat(X11->display, + (Visual *) QX11Info::appVisual(X11->defaultScreen)); +- // Check the version as well - we need v0.4 or higher +- int major = 0; +- int minor = 0; +- XRenderQueryVersion(X11->display, &major, &minor); +- if (qgetenv("QT_X11_NO_XRENDER").isNull() && format != 0) { +- X11->use_xrender = (major >= 0 && minor >= 5); +- X11->xrender_version = major*100+minor; +- // workaround for broken XServer on Ubuntu Breezy (6.8 compiled with 7.0 +- // protocol headers) +- if (X11->xrender_version == 10 +- && VendorRelease(X11->display) < 60900000 +- && QByteArray(ServerVendor(X11->display)).contains("X.Org")) +- X11->xrender_version = 9; ++ ++ if (!format) { ++ X11->use_xrender = false; + } + } + #endif // QT_NO_XRENDER +diff -urNad qt4-x11-4.3.0~/src/gui/kernel/qwidget_x11.cpp qt4-x11-4.3.0/src/gui/kernel/qwidget_x11.cpp +--- qt4-x11-4.3.0~/src/gui/kernel/qwidget_x11.cpp 2007-05-25 15:24:19.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/kernel/qwidget_x11.cpp 2007-06-26 20:05:47.000000000 +0200 +@@ -503,7 +503,7 @@ + picture = 0; + } + +- if (X11->use_xrender) { ++ if (X11->use_xrender && !desktop) { + XRenderPictFormat *format = XRenderFindVisualFormat(dpy, (Visual *) xinfo.visual()); + if (format) + picture = XRenderCreatePicture(dpy, id, format, 0, 0); +diff -urNad qt4-x11-4.3.0~/src/gui/painting/qcolormap_x11.cpp qt4-x11-4.3.0/src/gui/painting/qcolormap_x11.cpp +--- qt4-x11-4.3.0~/src/gui/painting/qcolormap_x11.cpp 2007-05-25 15:24:12.000000000 +0200 ++++ qt4-x11-4.3.0/src/gui/painting/qcolormap_x11.cpp 2007-06-26 20:05:47.000000000 +0200 +@@ -386,7 +386,33 @@ + } else if (!X11->custom_cmap) { + XStandardColormap *stdcmap = 0; + int ncmaps = 0; +- if (XGetRGBColormaps(display, RootWindow(display, i), ++ ++ bool foundArgbVisual = false; ++#ifndef QT_NO_XRENDER ++ if (X11->use_xrender) { ++ int nvi; ++ XVisualInfo templ; ++ templ.screen = i; ++ templ.depth = 32; ++ templ.c_class = TrueColor; ++ XVisualInfo *xvi = XGetVisualInfo(X11->display, VisualScreenMask | ++ VisualDepthMask | ++ VisualClassMask, &templ, &nvi); ++ for (int idx = 0; idx < nvi; ++idx) { ++ XRenderPictFormat *format = XRenderFindVisualFormat(X11->display, ++ xvi[idx].visual); ++ if (format->type == PictTypeDirect && format->direct.alphaMask) { ++ d->visual = xvi[idx].visual; ++ d->depth = 32; ++ d->defaultVisual = false; ++ foundArgbVisual = true; ++ break; ++ } ++ } ++ } ++#endif ++ if (!foundArgbVisual && ++ XGetRGBColormaps(display, RootWindow(display, i), + &stdcmap, &ncmaps, XA_RGB_DEFAULT_MAP)) { + if (stdcmap) { + for (int c = 0; c < ncmaps; ++c) { +@@ -444,7 +470,6 @@ + } + } + } +- + if (!use_stdcmap) { + switch (d->visual->c_class) { + case StaticGray: diff --git a/debian/patches/00list b/debian/patches/00list index 09fd9f8..c6c0715 100644 --- a/debian/patches/00list +++ b/debian/patches/00list @@ -2,6 +2,11 @@ 00_0167-fix-group-reading 00_0175-fix-s390-qatomic 00_0176-coverity-fixes +00_0178-transparency-window-types +00_0179-transient-hack +00_0180-window-role +00_0181-qdnd-x11-fix +00_0182-argb-visuals-default 01_qmake_for_debian 02_launch_assistant-qt4 03_launch_moc-qt4 |