summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFathi Boudra <fabo@debian.org>2007-06-26 19:02:24 +0000
committerFathi Boudra <fabo@debian.org>2007-06-26 19:02:24 +0000
commit601607d4c3f4ac37ad663ef7fd2b4b7c933e2a2a (patch)
tree85b6c60a4612cb479a3e16b8366b8d1574f20a63
parentb9c388d955255dfd9f727493c92592fa2ee7329d (diff)
downloadqt4-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/changelog24
-rw-r--r--debian/control2
-rwxr-xr-xdebian/patches/00_0163-fix-gcc43-support.dpatch72
-rwxr-xr-xdebian/patches/00_0167-fix-group-reading.dpatch6
-rwxr-xr-xdebian/patches/00_0175-fix-s390-qatomic.dpatch6
-rwxr-xr-xdebian/patches/00_0176-coverity-fixes.dpatch32
-rw-r--r--debian/patches/00_0178-transparency-window-types.dpatch340
-rw-r--r--debian/patches/00_0179-transient-hack.dpatch22
-rw-r--r--debian/patches/00_0180-window-role.dpatch92
-rw-r--r--debian/patches/00_0181-qdnd-x11-fix.dpatch94
-rw-r--r--debian/patches/00_0182-argb-visuals-default.dpatch135
-rw-r--r--debian/patches/00list5
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