[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#809367: marked as done (libqt5gui5: XEMBED interop with gtksocket broken)



Your message dated Thu, 10 Aug 2023 15:45:12 -0300
with message-id <2725206.mvXUDI8C0e@minerva>
and subject line Re: Bug#809367: libqt5gui5: XEMBED interop with gtksocket broken
has caused the Debian Bug report #809367,
regarding libqt5gui5: XEMBED interop with gtksocket broken
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
809367: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809367
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: libqt5gui5
Version: 5.5.1+dfsg-10
Severity: normal

This bug appears when one embeds a QWindow inside a GTK socket container
using the functions QWindow::setParent and QWindow::fromWinId().
According to the doc, the size of the QWindow should track the size of the container.
This used to work with Qt-5.2 and no longer works with this version of Qt.

Here are the replication instructions:

* The following python program creates a window with a gtk socket
  and prints the window id of the socket

-------------------
#!/usr/bin/env python

import gtk, sys, string

class Socket:
    def __init__(self):
        window = gtk.Window()     
        window.set_default_size(200, 200) 
        socket = gtk.Socket()
        window.add(socket)
        print(socket.get_id())
        window.connect("destroy", lambda w: gtk.main_quit())
        socket.connect("destroy", lambda w: gtk.main_quit())
        socket.connect("plug-added", self.plugged_event)
        socket.connect("plug-removed", self.unplugged_event)
        window.show_all()
        
    def plugged_event(self, widget):
        print "A plug has been inserted."
            
    def unplugged_event(self, widget):
        print "A plug has been removed."
        return True

Socket()
gtk.main()
-------------------

* The following Qt program tries to embed itself
  into the container whose id is passed on the command line.

-------------------
#include <QWidget>
#include <QWindow>
#include <QApplication>
#include <QLabel>
#include <QString>
#include <cstdio>

int main(int argc, char **argv)
{
  QApplication app(argc,argv);
  long wid = app.arguments().at(1).toLong(0,0);
  QLabel *lbl = new QLabel();
  lbl->setText("here");
  lbl->setAlignment(Qt::AlignCenter);
  lbl->winId();
  QWindow *wlbl = lbl->windowHandle();
  wlbl->setParent(QWindow::fromWinId(wid));
  lbl->show();
  app.exec();
}
-------------------

* To reproduce, open a terminal window, run "gtksocket.py"
  and record the printed socket window id. This creates
  a toplevel window containing the socket. In a second terminal window,
  run "plug <socketwindowid>".
  The label text "here" appears in socket window.

* Under Qt-5.2, the label text appears in the middle of
  the window because the QLabel widget has the same size
  as the gtksocket window.  Resizing the gtksocket window
  keeps the text "here" in the middle of the window because
  the QLabel widget size tracks that of the socker.

* Under Qt-5.5.1+dfsg-10, the label text appears in the top left
  corner of the window and stays there. Using program "xwininfo"
  shows that the size of the underlying X11 window effectively
  tracks the size of the gtksocket. But it appears that
  the size of the QWindow and of the associated QLabel
  remains stuck to its initial value.


As a consequence, XEMBED interop is broken in this version of Qt.




-- System Information:
Debian Release: stretch/sid
  APT prefers testing-updates
  APT policy: (500, 'testing-updates'), (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.3.0-1-amd64 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages libqt5gui5 depends on:
ii  fontconfig                       2.11.0-6.3
ii  libc6                            2.21-4
ii  libegl1-mesa [libegl1-x11]       11.0.8-1
ii  libfontconfig1                   2.11.0-6.3
ii  libfreetype6                     2.6.1-0.1
ii  libgl1-mesa-glx [libgl1]         11.0.8-1
ii  libglib2.0-0                     2.46.2-1
ii  libharfbuzz0b                    1.0.1-1+b1
ii  libinput10                       1.1.3-1
ii  libjpeg62-turbo                  1:1.4.1-2
ii  libmtdev1                        1.1.5-1
ii  libpng12-0                       1.2.54-1
ii  libqt5core5a [qtbase-abi-5-5-1]  5.5.1+dfsg-10
ii  libqt5dbus5                      5.5.1+dfsg-10
ii  libqt5network5                   5.5.1+dfsg-10
ii  libstdc++6                       5.3.1-4
ii  libudev1                         228-2+b1
ii  libx11-6                         2:1.6.3-1
ii  libxkbcommon0                    0.5.0-1
ii  libxrender1                      1:0.9.9-2
ii  zlib1g                           1:1.2.8.dfsg-2+b1

Versions of packages libqt5gui5 recommends:
ii  libqt5svg5     5.5.1-2
ii  libqt5xcbqpa5  5.5.1+dfsg-10

Versions of packages libqt5gui5 suggests:
pn  libqt5libqgtk2             <none>
pn  qt5-image-formats-plugins  <none>
pn  qtwayland5                 <none>

-- no debconf information

--- End Message ---
--- Begin Message ---
Version: 5.15.2+dfsg-9

According to the upstream bug report this bug seems no longer reproducible. 
I'm using Qt 5.15 in order to close the bug. If you still can reproduce it 
then we will probably need a new bug... but better check with Qt 6, if 
applicable.

Regards, Lisandro.

Attachment: signature.asc
Description: This is a digitally signed message part.


--- End Message ---

Reply to: