• Bug#1109279: xfwm4: Fullscreen toggle for Picture-in-Picture video play

    From =?utf-8?q?Uwe_Kr=C3=BCger?=@21:1/5 to All on Mon Jul 14 17:40:02 2025
    This is a multi-part MIME message sent by reportbug.


    Package: xfwm4
    Version: 4.20.0-1
    Severity: normal
    Tags: patch upstream
    X-Debbugs-Cc: [email protected]

    Dear Maintainer,

    in Firefox a video in a web page can be separated to an undecorated window called
    "Picture-in-Picture" by clicking a button on the right side of the video or in the URL field.

    Expected behaviour:
    The Picture-in-Picture window (when entered with the mouse cursor) has a double-arrow icon in the lower right corner that should toggle the fullscreen state. Alternatively it should be possible to change this state (and the stacking state) using the right click context menu.

    Observed behaviour:
    Nothing happens when the toggle icon is clicked. The relevant fields in the right click context menu are greyed out. With most other window managers (e.g. marco) toggling fullscreen mode works fine, so it's not a bug in Firefox.

    Investigation of the Problem:
    I've found out, that the Picture-in-Picture window has the properties "transient"
    and "WINDOW_UTILITY" (under some circumstances "WINDOW_NORMAL"). Unfortunately the code of xfwm4 does not allow transient (or modal) windows to become fullscreen.

    Possible Solution:
    The attached patch changes this restriction in a way that only modal windows are
    prevented from becoming fullscreen whereas transient windows aren't. In my tests
    this results in the expected behaviour.


    -- System Information:
    Debian Release: 13.0
    APT prefers testing
    APT policy: (500, 'testing')
    Architecture: amd64 (x86_64)

    Kernel: Linux 6.12.35+deb13-amd64 (SMP w/4 CPU threads; PREEMPT)
    Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
    Shell: /bin/sh linked to /usr/bin/dash
    Init: systemd (via /run/systemd/system)
    LSM: AppArmor: enabled

    Versions of packages xfwm4 depends on:
    ii libc6 2.41-9
    ii libcairo2 1.18.4-1+b1
    ii libepoxy0 1.5.10-2
    ii libgdk-pixbuf-2.0-0 2.42.12+dfsg-3
    ii libglib2.0-0t64 2.84.3-1
    ii libgtk-3-0t64 3.24.49-3
    ii libpango-1.0-0 1.56.3-1
    ii libpangocairo-1.0-0 1.56.3-1
    ii libstartup-notification0 0.12-8
    ii libwnck-3-0 43.2-1
    ii libx11-6 2:1.8.12-1
    ii libxcomposite1 1:0.4.6-1
    ii libxdamage1 1:1.1.6-1+b2
    ii libxext6 2:1.3.4-1+b3
    ii libxfce4ui-2-0 4.20.1-1
    ii libxfce4util7 4.20.1-1
    ii libxfconf-0-3 4.20.0-1
    ii libxfixes3 1:6.0.0-2+b4
    ii libxinerama1 2:1.1.4-3+b4
    ii libxpresent1 1.0.1-1+b2
    ii libxrandr2 2:1.5.4-1+b3
    ii libxrender1 1:0.9.12-1
    ii libxres1 2:1.2.1-1+b2

    Versions of packages xfwm4 recommends:
    ii librsvg2-common 2.60.0+dfsg-1

    Versions of packages xfwm4 suggests:
    ii xfce4 4.20

    -- no debconf information

    QXV0aG9yOiBVd2UgS3LDvGdlciA8dXdlX2RlYmJ1Z0BhcmNvci5kZT4KRGVzY3JpcHRpb246IEFs bG93IGZ1bGxzY3JlZW4vYWJvdmUvYmVsb3cgZm9yIHRyYW5zaWVudHMgKGUuZyBGaXJlZm94IFBJ UCkKCmRpZmYgLU51ciB4ZndtNC00LjIwLjAub3JpZy9zcmMvY2xpZW50LmMgeGZ3bTQtNC4yMC4w L3NyYy9jbGllbnQuYwotLS0geGZ3bTQtNC4yMC4wLm9yaWcvc3JjL2NsaWVudC5jCTIwMjQtMTIt MTUgMTA6Mzg6NDcuMDAwMDAwMDAwICswMTAwCisrKyB4ZndtNC00LjIwLjAvc3JjL2NsaWVudC5j CTIwMjUtMDctMTQgMTM6MjQ6NTIuNzI0NzE5NTQ4ICswMjAwCkBAIC0zMTA4LDcgKzMxMDgsOSBA QAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFjbGllbnRJc1RyYW5zaWVudE9yTW9kYWwg KGMpICYmIChjLT50eXBlID09IFdJTkRPV19OT1JNQUwpICYmICFGTEFHX1RFU1QgKGMtPmZsYWdz LCBDTElFTlRfRkxBR19TSEFERUQpKQorICAgIGlmICghY2xpZW50SXNNb2RhbCAoYykgJiYKKyAg ICAgICAgKGMtPnR5cGUgPT0gV0lORE9XX05PUk1BTCB8fCBjLT50eXBlID09IFdJTkRPV19VVElM SVRZKSAmJgorICAgICAgICAhRkxBR19URVNUIChjLT5mbGFncywgQ0xJRU5UX0ZMQUdfU0hBREVE KSkKICAgICB7CiAgICAgICAgIEZMQUdfVE9HR0xFIChjLT5mbGFncywgQ0xJRU5UX0ZMQUdfRlVM TFNDUkVFTik7CiAgICAgICAgIGNsaWVudFVwZGF0ZUZ1bGxzY3JlZW5TdGF0ZSAoYyk7CkBAIC0z MTYzLDcgKzMxNjUsNyBAQAogICAgIFRSQUNFICgiY2xpZW50IFwiJXNcIiAoMHglbHgpIiwgYy0+ bmFtZSwgYy0+d2luZG93KTsKIAogICAgIGlmICgoYy0+dHlwZSAmIFdJTkRPV19SRUdVTEFSX0ZP Q1VTQUJMRSkgJiYKLSAgICAgICAgIWNsaWVudElzVmFsaWRUcmFuc2llbnRPck1vZGFsIChjKSAm JgorICAgICAgICAhY2xpZW50SXNNb2RhbCAoYykgJiYKICAgICAgICAgIUZMQUdfVEVTVCAoYy0+ ZmxhZ3MsIENMSUVOVF9GTEFHX0ZVTExTQ1JFRU4pKQogICAgIHsKICAgICAgICAgRkxBR19VTlNF VCAoYy0+ZmxhZ3MsIENMSUVOVF9GTEFHX0JFTE9XKTsKQEAgLTMxNzgsNyArMzE4MCw3IEBACiAg ICAgVFJBQ0UgKCJjbGllbnQgXCIlc1wiICgweCVseCkiLCBjLT5uYW1lLCBjLT53aW5kb3cpOwog CiAgICAgaWYgKChjLT50eXBlICYgV0lORE9XX1JFR1VMQVJfRk9DVVNBQkxFKSAmJgotICAgICAg ICAhY2xpZW50SXNWYWxpZFRyYW5zaWVudE9yTW9kYWwgKGMpICYmCisgICAgICAgICFjbGllbnRJ c01vZGFsIChjKSAmJgogICAgICAgICAhRkxBR19URVNUIChjLT5mbGFncywgQ0xJRU5UX0ZMQUdf RlVMTFNDUkVFTikpCiAgICAgewogICAgICAgICBGTEFHX1VOU0VUIChjLT5mbGFncywgQ0xJRU5U X0ZMQUdfQUJPVkUpOwpkaWZmIC1OdXIgeGZ3bTQtNC4yMC4wLm9yaWcvc3JjL2V2ZW50cy5jIHhm d200LTQuMjAuMC9zcmMvZXZlbnRzLmMKLS0tIHhmd200LTQuMjAuMC5vcmlnL3NyYy9ldmVudHMu YwkyMDI0LTEyLTE1IDEwOjM4OjQ3LjAwMDAwMDAwMCArMDEwMAorKysgeGZ3bTQtNC4yMC4wL3Ny Yy9ldmVudHMuYwkyMDI1LTA3LTE0IDEzOjE1OjE0Ljk1MzUwOTk2MCArMDIwMApAQCAtMjU1MSw3 ICsyNTUxLDcgQEAKICAgICAgICAgb3BzIHw9IE1FTlVfT1BfRlVMTFNDUkVFTjsKICAgICB9CiAK LSAgICBpZiAoaXNfdHJhbnNpZW50IHx8IChjLT50eXBlICE9IFdJTkRPV19OT1JNQUwpKQorICAg IGlmICghKGMtPnR5cGUgJiBXSU5ET1dfUkVHVUxBUl9GT0NVU0FCTEUpIHx8IChjLT50eXBlICYg V0lORE9XX01PREFMX0RJQUxPRykpCiAgICAgewogICAgICAgICBpbnNlbnNpdGl2ZSB8PSBNRU5V X09QX0ZVTExTQ1JFRU4gfCBNRU5VX09QX1VORlVMTFNDUkVFTjsKICAgICB9CkBAIC0yNTY5LDgg KzI1NjksOCBAQAogICAgICAgICBvcHMgfD0gTUVOVV9PUF9BQk9WRSB8IE1FTlVfT1BfQkVMT1c7 CiAgICAgfQogCi0gICAgaWYgKGlzX3RyYW5zaWVudCB8fAotICAgICAgICAhKGMtPnR5cGUgJiBX SU5ET1dfUkVHVUxBUl9GT0NVU0FCTEUpIHx8CisgICAgaWYgKCEoYy0+dHlwZSAmIFdJTkRPV19S RUdVTEFSX0ZPQ1VTQUJMRSkgfHwKKyAgICAgICAgKGMtPnR5cGUgJiBXSU5ET1dfTU9EQUxfRElB TE9HKSB8fAogICAgICAgICBGTEFHX1RFU1QgKGMtPmZsYWdzLCBDTElFTlRfRkxBR19GVUxMU0NS RUVOKSkKICAgICB7CiAgICAgICAgIGluc2Vuc2l0aXZlIHw9IE1FTlVfT1BfTk9STUFMIHwgTUVO VV9PUF9BQk9WRSB8IE1FTlVfT1BfQkVMT1c7CmRpZmYgLU51ciB4ZndtNC00LjIwLjAub3JpZy9z cmMvbmV0d20uYyB4ZndtNC00LjIwLjAvc3JjL25ldHdtLmMKLS0tIHhmd200LTQuMjAuMC5vcmln L3NyYy9uZXR3bS5jCTIwMjQtMTItMTUgMTA6Mzg6NDcuMDAwMDAwMDAwICswMTAwCisrKyB4Zndt NC00LjIwLjAvc3JjL25ldHdtLmMJMjAyNS0wNy0xNCAxMzoyODoyNy4zNTI5NjU5OTMgKzAyMDAK QEAgLTIxNCwxMSArMjE0LDEwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlm IChhdG9tc1tpXSA9PSBkaXNwbGF5X2luZm8tPmF0b21zW05FVF9XTV9TVEFURV9GVUxMU0NSRUVO XSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIUZMQUdfVEVTVF9BTEwgKGMt PmZsYWdzLCBDTElFTlRfRkxBR19BQk9WRSB8IENMSUVOVF9GTEFHX0JFTE9XKSkKLSAgICAgICAg ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIFRSQUNFICgiZnVsbHNjcmVlbiIpOwotICAg ICAgICAgICAgICAgICAgICBGTEFHX1NFVCAoYy0+ZmxhZ3MsIENMSUVOVF9GTEFHX0ZVTExTQ1JF RU4pOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBUUkFDRSAoImZ1bGxzY3Jl ZW4iKTsKKyAgICAgICAgICAgICAgICBGTEFHX1VOU0VUIChjLT5mbGFncywgQ0xJRU5UX0ZMQUdf QUJPVkUpOworICAgICAgICAgICAgICAgIEZMQUdfVU5TRVQgKGMtPmZsYWdzLCBDTElFTlRfRkxB R19CRUxPVyk7CisgICAgICAgICAgICAgICAgRkxBR19TRVQgKGMtPmZsYWdzLCBDTElFTlRfRkxB R19GVUxMU0NSRUVOKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGF0b21z W2ldID09IGRpc3BsYXlfaW5mby0+YXRvbXNbTkVUX1dNX1NUQVRFX0FCT1ZFXSkKICAgICAgICAg ICAgIHsKQEAgLTQ4NCw3ICs0ODMsNyBAQAogICAgIGlmICgoZmlyc3QgID09IGRpc3BsYXlfaW5m by0+YXRvbXNbTkVUX1dNX1NUQVRFX0ZVTExTQ1JFRU5dKSB8fAogICAgICAgICAoc2Vjb25kID09 IGRpc3BsYXlfaW5mby0+YXRvbXNbTkVUX1dNX1NUQVRFX0ZVTExTQ1JFRU5dKSkKICAgICB7Ci0g ICAgICAgIGlmICghY2xpZW50SXNWYWxpZFRyYW5zaWVudE9yTW9kYWwgKGMpKQorICAgICAgICBp ZiAoIWNsaWVudElzTW9kYWwgKGMpKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoKGFjdGlv biA9PSBORVRfV01fU1RBVEVfQUREKSAmJiAhRkxBR19URVNUIChjLT5mbGFncywgQ0xJRU5UX0ZM QUdfRlVMTFNDUkVFTikpCiAgICAgICAgICAgICB7Cg==

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Uwe_Kr=C3=BCger?=@21:1/5 to All on Mon Jul 14 18:00:01 2025
    The issue has also been reported upstream 10 months ago: https://gitlab.xfce.org/xfce/xfwm4/-/issues/809

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)