Closed Bug 1919115 Opened 2 months ago Closed 1 months ago

[KDE] Tiling in KDE Plasma not handled correctly (Client-Side Decorations)

Categories

(Core :: Widget: Gtk, enhancement, P3)

Firefox 130
enhancement

Tracking

()

RESOLVED FIXED
133 Branch
Tracking Status
firefox133 --- fixed

People

(Reporter: breakingspell, Assigned: emilio)

References

(Blocks 1 open bug)

Details

Attachments

(6 files)

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:130.0) Gecko/20100101 Firefox/130.0

Steps to reproduce:

Hello, raising this bug for two related tiling issues in KDE Plasma (X11 and Wayland) when using Client-Side Decorations (CSD).

This was reported downstream under https://bugs.kde.org/show_bug.cgi?id=466451 along with Chrome and other CSD apps, now Firefox is the last remaining application that needs addressed upstream.


Easy indicator of the issue is presence of left tab spacer UI element (it disappears when properly tiled), or modifying the value of gtktiledwindow in the Browser Toolbox.

This may be difficult to fix unless the QT/Kwin tiled state can be read from X/Wayland hints, but once the tiled state can be determined, setting gtktiledwindow=true would theme the Browser Chrome correctly, thanks to the existing routine for GNOME.


In my tests, the forced 1px resize border is the cause of the bug and the tiled windows work much better without this handle.
The line at https://hg.mozilla.org/releases/mozilla-beta/rev/a18dbf2a4053#l2.33 is the core switch for this behavior, I disabled it in a local build and it seems to fix this issue exactly.

The resize handles are still drawn where expected due to the serverside Kwin compositor/custom tiler. When in a quick or custom tile, the resizers are still drawn as they should be on the open edge, not the edges shared with a screen.

The Firefox windows stay tiled unless manually untiled, and most importantly for usability: the top pixels can be used to select tabs.


Both of these tweaks improve usability immensely and seem to behave as they should, bringing Firefox behavior in KDE to alignment with GNOME.

Screenshots attached of both issues with the actual and expected behaviors.

Let me know if there are any additional details I should provide, or if users encounter similar or different behavior on KDE Plasma 5 and 6.

The Bugbug bot thinks this bug should belong to the 'Core::Widget: Gtk' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → Widget: Gtk
Product: Firefox → Core

Do I understand correctly that tiled mode is not properly detected by Firefox on KDE?
We already support it so it may be just a matter of getting that info from KDE.
Thanks.

Flags: needinfo?(breakingspell)
Summary: Tiling in KDE Plasma not handled correctly (Client-Side Decorations) → [KDE] Tiling in KDE Plasma not handled correctly (Client-Side Decorations)

Hello Martin,

Yes, this is accurate. It seems Firefox is simply not detecting the tiled state from KDE/Kwin compositor. I can confirm it does detect the KDE platform (IsKdeDesktopEnvironment).
When snapped into a tile, Firefox's header does not adapt. Browser Toolbox shows the value of gtktiledwindow=false throughout, forcing it to true displays the proper behavior.

This occurs with both Kwin's legacy "Quick Tiling" (Meta+Arrows), and the newer "Custom Tiling" (similar to FancyZones).
Just tested again to confirm that both X11 and Wayland sessions display the same behavior.

I ran xprop -spy on a Firefox window while performing several operations (maximize, minimize, quick tile, custom tile, untile) but none of the returned WM hints concerned tiling. I'm not familiar with how Firefox interfaces with Window Managers so I may be going up an entirely wrong tree here:

WM_HINTS(WM_HINTS):
                Client accepts input or input focus: True
                Initial state is Normal State.
                bitmap id #
                ...

Maximized:
_NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ

Snapped in any fashion:
_NET_WM_STATE(ATOM) =

Flags: needinfo?(breakingspell)
Flags: needinfo?(stransky)

Hm, I tested default KDE installation on Fedora 40 / Wayland / Firefox 130 and it works as expected. If Firefox is tiled (Window + Arrow key) it behaves as well as on Gnome - it's in tilled mode. I wonder if you use old KDE version or so?

Flags: needinfo?(stransky)

Please run on terminal as:

MOZ_LOG="Widget:5" ./firefox 

it produces log about window states and I can see there:

[Parent 57775: Main Thread]: D/Widget [7fa9e0cb4700]: nsWindow::OnWindowStateEvent for 7fa9e5956b60 changed 0x7f00 new_window_state 0x12b80
[Parent 57775: Main Thread]: D/Widget [7fa9e0cb4700]:   Normal
[Parent 57775: Main Thread]: D/Widget [7fa9e0cb4700]:   Tiled: 1

when window is tilled. Can you attach the log if tilling is broken for you?
Thanks.

Flags: needinfo?(breakingspell)

I'm able to reproduce this issue with git master of Plasma and KWin. The issue isn't that the window fails to tile, but rather it still behaves in some ways as if it's windowed: it preserves the window drag space on the left, and the top pixel of the window can be used to drag and resize the window, rather than moving tabs.

Here is the log from MOZ_LOG="Widget:5" firefox

[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: enter notify (win=7f8022753280, sub=0): 760.128906, 361.718750 mode 0, detail 3
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: OnEnterNotify
[Parent 282738: Main Thread]: D/Widget KeymapWrapper::SetFocusIn() surface 7f80108a2e80 ID 57 serial 154196
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: OnContainerFocusInEvent
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:   nsWindow::SetUrgencyHint widget 7f8022fe8f60
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::SetFocus Raise 0
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:   gFocusWindow [0]
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:   mContainer [7f802e5fd9d0]
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:   Toplevel widget [7f8022fe8f60]
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:   widget now has focus in SetFocus()
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: Events sent from focus in event
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: Button 1 press
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::CheckForRollup() aAlwaysRollup 0
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: configure event 0,0 -> 858 x 884 direct mGdkWindow scale 3 (scaled size 2574 x 2652)
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnWindowStateEvent for 7f8022fe8f60 changed 0x80 new_window_state 0x15480
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:  early return because no interesting bits changed
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnWindowStateEvent for 7f802e5fd9d0 changed 0x80 new_window_state 0x15480
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::SetHasMappedToplevel(1)
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:  quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnExposeEvent GdkWindow [7f8022753280] XID [0x0]
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::RequestRepaint()
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: needs composite, ScheduleComposite() call
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: redirect painting to OMTC rendering...
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: Button 1 release
[Parent 282738: Main Thread]: D/Widget key_press_event_cb
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: OnKeyPressEvent
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: configure event 0,0 -> 943 x 1050 direct mGdkWindow scale 3 (scaled size 2829 x 3150)
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnWindowStateEvent for 7f8022fe8f60 changed 0x1e700 new_window_state 0xb380
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:  Normal
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:  Tiled: 1
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnWindowStateEvent for 7f802e5fd9d0 changed 0x1e700 new_window_state 0xb380
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::SetHasMappedToplevel(1)
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:  quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 282738: Main Thread]: D/Widget moz_container_wayland_size_allocate [7f80226fb300] 45,45 -> 853 x 960
[Parent 282738: Main Thread]: D/Widget moz_container_wayland_move [7f80226fb300] 45,45
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnSizeAllocate 45,45 -> 853 x 960
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnExposeEvent GdkWindow [7f8022753280] XID [0x0]
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: GtkCompositorWidget::NotifyClientSizeChanged() to 2559 x 2880
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::DispatchResized() size [2559, 2880]
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::RequestRepaint()
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: GetScreenBounds 135,135 -> 2559 x 2880, unscaled 45,45 -> 853 x 960
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: redirect painting to OMTC rendering...
[Parent 282738: Renderer]: D/Widget [7f80226fb300]: nsWindow::SetEGLNativeWindowSize() 2559 x 2880 scale 3 (unscaled 853 x 960)
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: configure event 0,0 -> 893 x 1050 direct mGdkWindow scale 3 (scaled size 2679 x 3150)
[Parent 282738: Main Thread]: D/Widget moz_container_wayland_size_allocate [7f80226fb300] 45,45 -> 803 x 960
[Parent 282738: Main Thread]: D/Widget moz_container_wayland_move [7f80226fb300] 45,45
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnSizeAllocate 45,45 -> 803 x 960
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnExposeEvent GdkWindow [7f8022753280] XID [0x0]
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: GtkCompositorWidget::NotifyClientSizeChanged() to 2409 x 2880
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::DispatchResized() size [2409, 2880]
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::RequestRepaint()
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: GetScreenBounds 135,135 -> 2409 x 2880, unscaled 45,45 -> 803 x 960
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: redirect painting to OMTC rendering...
[Parent 282738: Renderer]: D/Widget [7f80226fb300]: nsWindow::SetEGLNativeWindowSize() 2409 x 2880 scale 3 (unscaled 803 x 960)
[Parent 282738: Main Thread]: D/Widget key_release_event_cb
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: OnKeyReleaseEvent
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: leave notify (win=7f8022753280, sub=0): 623.183594, 262.781250 mode 0, detail 3
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: OnLeaveNotify
[Parent 282738: Main Thread]: D/Widget KeymapWrapper::SetFocusOut surface 7f80108a2e80 ID 57
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: OnContainerFocusOutEvent
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: Done with container focus out
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: configure event 0,0 -> 893 x 1050 direct mGdkWindow scale 3 (scaled size 2679 x 3150)
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnWindowStateEvent for 7f8022fe8f60 changed 0x80 new_window_state 0xb300
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:  early return because no interesting bits changed
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnWindowStateEvent for 7f802e5fd9d0 changed 0x80 new_window_state 0xb300
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::SetHasMappedToplevel(1)
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]:  quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::OnExposeEvent GdkWindow [7f8022753280] XID [0x0]
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: nsWindow::RequestRepaint()
[Parent 282738: Main Thread]: D/Widget [7f80226fb300]: redirect painting to OMTC rendering...

So it shows "Tiled: 1" but the actual behavior is not correct with respect to the above-mentioned issues.

And also, this issue reproduces at 100% scale as well as higher scale factors, as well as with the default Adwaita GTK theme and KDE's own Breeze GTK theme.

Thanks for the information, Martin and Nate.

The environments i'm testing, all using Firefox 130.0.1:

  • Fedora 40 Live ISO (KDE 6.0.3) (Wayland)
  • Fedora 40 Virtual Machine (6.1.5) (Wayland)
  • KDE Neon Live ISO (6.2 Beta) (Wayland)
  • Arch Linux (6.1.5) (X11 + Wayland)

In Fedora 40 6.0.3 (as the Live ISO is shipped), Widget:5 returns Tiled: 0 and the window does not adapt to the tile (gtktiledwindow). Updating Firefox from the shipped 124.0 to 130 does not change behavior.

In Wayland 6.0.3:

[Parent 14370: Renderer]: D/Widget [7f47100de300]: nsWindow::SetEGLNativeWindowSize() 3072 x 1832 scale 2 (unscaled 1536 x 916)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: configure event 0,0 -> 768 x 916 direct mGdkWindow scale 2 (scaled size 1536 x 1832)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnWindowStateEvent for 7f4712524560 changed 0x4 new_window_state 0x80
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: 	Normal
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: 	Tiled: 0
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnWindowStateEvent for 7f4710125d10 changed 0x4 new_window_state 0x80
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::SetHasMappedToplevel(1)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_size_allocate [7f47100de300] 45,45 -> 678 x 826
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_move [7f47100de300] 45,45
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnSizeAllocate 45,45 -> 678 x 826
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: GetScreenBounds 90,90 -> 3072 x 1832, unscaled 45,45 -> 1536 x 916
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_size_allocate [7f47100de300] 45,45 -> 768 x 916
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_move [7f47100de300] 45,45
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnSizeAllocate 45,45 -> 768 x 916
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: GtkCompositorWidget::NotifyClientSizeChanged() to 1536 x 1832
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::DispatchResized() size [1536, 1832]
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnExposeEvent GdkWindow [7f471016d0a0] XID [0x0]
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: GetScreenBounds 90,90 -> 1536 x 1832, unscaled 45,45 -> 768 x 916
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: configure event 0,0 -> 858 x 1006 direct mGdkWindow scale 2 (scaled size 1716 x 2012)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: leave notify (win=7f471016d0a0, sub=0): 1033.960938, 566.046875 mode 0, detail 0
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: OnLeaveNotify
[Parent 14370: Renderer]: D/Widget [7f47100de300]: nsWindow::SetEGLNativeWindowSize() 1536 x 1832 scale 2 (unscaled 768 x 916)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: configure event 0,0 -> 1626 x 1006 direct mGdkWindow scale 2 (scaled size 3252 x 2012)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnWindowStateEvent for 7f4712524560 changed 0x4 new_window_state 0x84
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: 	Maximized
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: 	Tiled: 0
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnWindowStateEvent for 7f4710125d10 changed 0x4 new_window_state 0x84
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::SetHasMappedToplevel(1)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_size_allocate [7f47100de300] 0,0 -> 1626 x 1006
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_move [7f47100de300] 0,0
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnSizeAllocate 0,0 -> 1626 x 1006
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: GetScreenBounds 0,0 -> 1536 x 1832, unscaled 0,0 -> 768 x 916
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_size_allocate [7f47100de300] 0,0 -> 1536 x 916
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_move [7f47100de300] 0,0
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnSizeAllocate 0,0 -> 1536 x 916
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: GtkCompositorWidget::NotifyClientSizeChanged() to 3072 x 1832
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::DispatchResized() size [3072, 1832]
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnExposeEvent GdkWindow [7f471016d0a0] XID [0x0]
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: GetScreenBounds 0,0 -> 3072 x 1832, unscaled 0,0 -> 1536 x 916
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: configure event 0,0 -> 1536 x 916 direct mGdkWindow scale 2 (scaled size 3072 x 1832)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: enter notify (win=7f471016d0a0, sub=0): 1078.960938, 611.046875 mode 0, detail 0
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: OnEnterNotify
[Parent 14370: Renderer]: D/Widget [7f47100de300]: nsWindow::SetEGLNativeWindowSize() 3072 x 1832 scale 2 (unscaled 1536 x 916)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: configure event 0,0 -> 768 x 916 direct mGdkWindow scale 2 (scaled size 1536 x 1832)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnWindowStateEvent for 7f4712524560 changed 0x4 new_window_state 0x80
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: 	Normal
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: 	Tiled: 0
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnWindowStateEvent for 7f4710125d10 changed 0x4 new_window_state 0x80
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::SetHasMappedToplevel(1)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_size_allocate [7f47100de300] 45,45 -> 678 x 826
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_move [7f47100de300] 45,45
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnSizeAllocate 45,45 -> 678 x 826
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: GetScreenBounds 90,90 -> 3072 x 1832, unscaled 45,45 -> 1536 x 916
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_size_allocate [7f47100de300] 45,45 -> 768 x 916
[Parent 14370: Main Thread]: D/Widget moz_container_wayland_move [7f47100de300] 45,45
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnSizeAllocate 45,45 -> 768 x 916
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: GtkCompositorWidget::NotifyClientSizeChanged() to 1536 x 1832
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::DispatchResized() size [1536, 1832]
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::OnExposeEvent GdkWindow [7f471016d0a0] XID [0x0]
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: GetScreenBounds 90,90 -> 1536 x 1832, unscaled 45,45 -> 768 x 916
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: configure event 0,0 -> 858 x 1006 direct mGdkWindow scale 2 (scaled size 1716 x 2012)
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: leave notify (win=7f471016d0a0, sub=0): 1033.960938, 566.046875 mode 0, detail 0
[Parent 14370: Main Thread]: D/Widget [7f47100de300]: OnLeaveNotify

X11 (6.1.5)

[Parent 468779: Main Thread]: D/Widget moz_container_size_allocate [79b7a8636500] 0,0 -> 2560 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnSizeAllocate 0,0 -> 2560 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnExposeEvent GdkWindow [79b7a872e3e0] XID [0x5000064]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GtkCompositorWidget::NotifyClientSizeChanged() to 2560 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::DispatchResized() size [2560, 1396]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::RequestRepaint()
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GetScreenBounds 1440,340 -> 2560 x 1396, unscaled 1440,340 -> 2560 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: redirect painting to OMTC rendering...
[Parent 468779: Main Thread]: D/Widget key_release_event_cb
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: OnKeyReleaseEvent
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: OnContainerFocusOutEvent
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: Done with container focus out
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: OnContainerFocusInEvent
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   nsWindow::SetUrgencyHint widget 79b7b3351660
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::SetFocus Raise 0
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   gFocusWindow [0]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   mContainer [79b7b32f2ad0]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   Toplevel widget [79b7b3351660]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   widget now has focus in SetFocus()
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: Events sent from focus in event
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnWindowStateEvent for 79b7b3351660 changed 0x4 new_window_state 0x80
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: 	Normal
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: 	Tiled: 0
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnWindowStateEvent for 79b7b32f2ad0 changed 0x4 new_window_state 0x80
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::SetHasMappedToplevel(1)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnVisibilityNotifyEvent [79b7a8636500] state 0x1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 2720,340 -> 1280 x 1396 direct mGdkWindow scale 1 (scaled size 1280 x 1396)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GetScreenBounds 2720,340 -> 2560 x 1396, unscaled 2720,340 -> 2560 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnVisibilityNotifyEvent [79b7a8636500] state 0x0
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 1560,461 -> 1280 x 1396 direct mGdkWindow scale 1 (scaled size 1280 x 1396)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: leave notify (win=79b7a872e3e0, sub=0): -738.000000, 454.000000 mode 0, detail 3
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: OnLeaveNotify
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 2720,340 -> 1280 x 1440 direct mGdkWindow scale 1 (scaled size 1280 x 1440)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 2720,340 -> 1280 x 1440 direct mGdkWindow scale 1 (scaled size 1280 x 1440)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnVisibilityNotifyEvent [79b7a8636500] state 0x1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 2720,340 -> 1280 x 1396 direct mGdkWindow scale 1 (scaled size 1280 x 1396)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnVisibilityNotifyEvent [79b7a8636500] state 0x0
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 2720,340 -> 1280 x 1396 direct mGdkWindow scale 1 (scaled size 1280 x 1396)
[Parent 468779: Main Thread]: D/Widget moz_container_size_allocate [79b7a8636500] 45,45 -> 1190 x 1306
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnSizeAllocate 45,45 -> 1190 x 1306
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GetScreenBounds 2675,295 -> 2560 x 1396, unscaled 2675,295 -> 2560 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnExposeEvent GdkWindow [79b7a872e3e0] XID [0x5000064]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GtkCompositorWidget::NotifyClientSizeChanged() to 1190 x 1306
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::DispatchResized() size [1190, 1306]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::RequestRepaint()
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GetScreenBounds 2675,295 -> 1190 x 1306, unscaled 2675,295 -> 1190 x 1306
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: redirect painting to OMTC rendering...
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 2675,295 -> 1370 x 1486 direct mGdkWindow scale 1 (scaled size 1370 x 1486)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 2675,295 -> 1370 x 1486 direct mGdkWindow scale 1 (scaled size 1370 x 1486)
[Parent 468779: Main Thread]: D/Widget moz_container_size_allocate [79b7a8636500] 45,45 -> 1280 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnSizeAllocate 45,45 -> 1280 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnExposeEvent GdkWindow [79b7a872e3e0] XID [0x5000064]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GtkCompositorWidget::NotifyClientSizeChanged() to 1280 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::DispatchResized() size [1280, 1396]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::RequestRepaint()
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GetScreenBounds 2675,295 -> 1280 x 1396, unscaled 2675,295 -> 1280 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: redirect painting to OMTC rendering...
[Parent 468779: Main Thread]: D/Widget key_release_event_cb
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: OnKeyReleaseEvent
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: OnContainerFocusOutEvent
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: Done with container focus out
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: OnContainerFocusInEvent
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   nsWindow::SetUrgencyHint widget 79b7b3351660
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::SetFocus Raise 0
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   gFocusWindow [0]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   mContainer [79b7b32f2ad0]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   Toplevel widget [79b7b3351660]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   widget now has focus in SetFocus()
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: Events sent from focus in event
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnWindowStateEvent for 79b7b3351660 changed 0x4 new_window_state 0x84
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: 	Maximized
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: 	Tiled: 0
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnWindowStateEvent for 79b7b32f2ad0 changed 0x4 new_window_state 0x84
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::SetHasMappedToplevel(1)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: enter notify (win=79b7a872e3e0, sub=0): 542.000000, 454.000000 mode 0, detail 3
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: OnEnterNotify
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 1395,295 -> 2650 x 1486 direct mGdkWindow scale 1 (scaled size 2650 x 1486)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GetScreenBounds 1395,295 -> 1280 x 1396, unscaled 1395,295 -> 1280 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 1395,295 -> 2650 x 1486 direct mGdkWindow scale 1 (scaled size 2650 x 1486)
[Parent 468779: Main Thread]: D/Widget moz_container_size_allocate [79b7a8636500] 0,0 -> 2650 x 1486
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnSizeAllocate 0,0 -> 2650 x 1486
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnExposeEvent GdkWindow [79b7a872e3e0] XID [0x5000064]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GtkCompositorWidget::NotifyClientSizeChanged() to 2650 x 1486
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::DispatchResized() size [2650, 1486]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::RequestRepaint()
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GetScreenBounds 1395,295 -> 2650 x 1486, unscaled 1395,295 -> 2650 x 1486
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: redirect painting to OMTC rendering...
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnVisibilityNotifyEvent [79b7a8636500] state 0x1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 1440,340 -> 2560 x 1396 direct mGdkWindow scale 1 (scaled size 2560 x 1396)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GetScreenBounds 1440,340 -> 2650 x 1486, unscaled 1440,340 -> 2650 x 1486
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnVisibilityNotifyEvent [79b7a8636500] state 0x0
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 1440,340 -> 2560 x 1396 direct mGdkWindow scale 1 (scaled size 2560 x 1396)
[Parent 468779: Main Thread]: D/Widget moz_container_size_allocate [79b7a8636500] 0,0 -> 2560 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnSizeAllocate 0,0 -> 2560 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnExposeEvent GdkWindow [79b7a872e3e0] XID [0x5000064]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GtkCompositorWidget::NotifyClientSizeChanged() to 2560 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::DispatchResized() size [2560, 1396]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::RequestRepaint()
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: GetScreenBounds 1440,340 -> 2560 x 1396, unscaled 1440,340 -> 2560 x 1396
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: redirect painting to OMTC rendering...
[Parent 468779: Main Thread]: D/Widget key_release_event_cb
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: OnKeyReleaseEvent
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: OnContainerFocusOutEvent
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: Done with container focus out
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: OnContainerFocusInEvent
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   nsWindow::SetUrgencyHint widget 79b7b3351660
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::SetFocus Raise 0
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   gFocusWindow [0]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   mContainer [79b7b32f2ad0]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   Toplevel widget [79b7b3351660]
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]:   widget now has focus in SetFocus()
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: Events sent from focus in event
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnWindowStateEvent for 79b7b3351660 changed 0x4 new_window_state 0x80
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: 	Normal
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: 	Tiled: 0
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnWindowStateEvent for 79b7b32f2ad0 changed 0x4 new_window_state 0x80
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::SetHasMappedToplevel(1)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnVisibilityNotifyEvent [79b7a8636500] state 0x1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 1440,340 -> 1280 x 1396 direct mGdkWindow scale 1 (scaled size 1280 x 1396)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnVisibilityNotifyEvent [79b7a8636500] state 0x0
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 1560,461 -> 1280 x 1396 direct mGdkWindow scale 1 (scaled size 1280 x 1396)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 1440,340 -> 1280 x 1440 direct mGdkWindow scale 1 (scaled size 1280 x 1440)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 1440,340 -> 1280 x 1440 direct mGdkWindow scale 1 (scaled size 1280 x 1440)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnVisibilityNotifyEvent [79b7a8636500] state 0x1
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 1440,340 -> 1280 x 1396 direct mGdkWindow scale 1 (scaled size 1280 x 1396)
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: nsWindow::OnVisibilityNotifyEvent [79b7a8636500] state 0x0
[Parent 468779: Main Thread]: D/Widget [79b7a8636500]: configure event 1440,340 -> 1280 x 1396 direct mGdkWindow scale 1 (scaled size 1280 x 1396)

Very interestingly, installing Fedora to disk and updating from 6.0.3 to 6.1.5 does change the behavior, the Firefox window adapts to the tile properly: Widget:5 returns Tiled: 1 and the window spacer handle auto-hides (albeit with a noticable delay that also occurs in GNOME). The resize handler hitbox/untiling issue still occurs.


[Parent 2834: Main Thread]: D/Widget moz_container_wayland_size_allocate [7fadaf07a000] 0,0 -> 1280 x 756
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_move [7fadaf07a000] 0,0
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnSizeAllocate 0,0 -> 1280 x 756
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnExposeEvent GdkWindow [7fadd3f7bcc0] XID [0x0]
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GtkCompositorWidget::NotifyClientSizeChanged() to 1280 x 756
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::DispatchResized() size [1280, 756]
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::RequestRepaint()
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GetScreenBounds 0,0 -> 1280 x 756, unscaled 0,0 -> 1280 x 756
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: redirect painting to OMTC rendering...
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: configure event 0,0 -> 1280 x 400 direct mGdkWindow scale 1 (scaled size 1280 x 400)
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnWindowStateEvent for 7fadaf63a560 changed 0xcb04 new_window_state 0xcb80
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	Normal
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	Tiled: 1
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnWindowStateEvent for 7fadaff07d40 changed 0xcb04 new_window_state 0xcb80
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::SetHasMappedToplevel(1)
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_size_allocate [7fadaf07a000] 45,45 -> 1190 x 310
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_move [7fadaf07a000] 45,45
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnSizeAllocate 45,45 -> 1190 x 310
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GetScreenBounds 45,45 -> 1280 x 756, unscaled 45,45 -> 1280 x 756
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_size_allocate [7fadaf07a000] 45,45 -> 1280 x 400
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_move [7fadaf07a000] 45,45
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnSizeAllocate 45,45 -> 1280 x 400
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnExposeEvent GdkWindow [7fadd3f7bcc0] XID [0x0]
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GtkCompositorWidget::NotifyClientSizeChanged() to 1280 x 400
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::DispatchResized() size [1280, 400]
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::RequestRepaint()
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GetScreenBounds 45,45 -> 1280 x 400, unscaled 45,45 -> 1280 x 400
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: redirect painting to OMTC rendering...
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: configure event 0,0 -> 1370 x 490 direct mGdkWindow scale 1 (scaled size 1370 x 490)
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 2834: Main Thread]: D/Widget key_release_event_cb
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: OnKeyReleaseEvent
[Parent 2834: Main Thread]: D/Widget key_press_event_cb
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: OnKeyPressEvent
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: configure event 0,0 -> 730 x 846 direct mGdkWindow scale 1 (scaled size 730 x 846)
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnWindowStateEvent for 7fadaf63a560 changed 0x19f00 new_window_state 0x15480
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	Normal
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	Tiled: 0
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnWindowStateEvent for 7fadaff07d40 changed 0x19f00 new_window_state 0x15480
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::SetHasMappedToplevel(1)
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_size_allocate [7fadaf07a000] 45,45 -> 640 x 756
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_move [7fadaf07a000] 45,45
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnSizeAllocate 45,45 -> 640 x 756
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnExposeEvent GdkWindow [7fadd3f7bcc0] XID [0x0]
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GtkCompositorWidget::NotifyClientSizeChanged() to 640 x 756
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::DispatchResized() size [640, 756]
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::RequestRepaint()
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GetScreenBounds 45,45 -> 640 x 756, unscaled 45,45 -> 640 x 756
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: redirect painting to OMTC rendering...
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: configure event 0,0 -> 1370 x 846 direct mGdkWindow scale 1 (scaled size 1370 x 846)
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnWindowStateEvent for 7fadaf63a560 changed 0x15404 new_window_state 0x84
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	Maximized
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	Tiled: 0
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnWindowStateEvent for 7fadaff07d40 changed 0x15404 new_window_state 0x84
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::SetHasMappedToplevel(1)
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_size_allocate [7fadaf07a000] 0,0 -> 1370 x 846
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_move [7fadaf07a000] 0,0
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnSizeAllocate 0,0 -> 1370 x 846
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GetScreenBounds 0,0 -> 640 x 756, unscaled 0,0 -> 640 x 756
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_size_allocate [7fadaf07a000] 0,0 -> 1280 x 756
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_move [7fadaf07a000] 0,0
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnSizeAllocate 0,0 -> 1280 x 756
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnExposeEvent GdkWindow [7fadd3f7bcc0] XID [0x0]
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GtkCompositorWidget::NotifyClientSizeChanged() to 1280 x 756
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::DispatchResized() size [1280, 756]
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::RequestRepaint()
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GetScreenBounds 0,0 -> 1280 x 756, unscaled 0,0 -> 1280 x 756
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: redirect painting to OMTC rendering...
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: configure event 0,0 -> 1280 x 756 direct mGdkWindow scale 1 (scaled size 1280 x 756)
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 2834: Main Thread]: D/Widget key_release_event_cb
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: OnKeyReleaseEvent
[Parent 2834: Main Thread]: D/Widget key_press_event_cb
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: OnKeyPressEvent
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: configure event 0,0 -> 1280 x 400 direct mGdkWindow scale 1 (scaled size 1280 x 400)
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnWindowStateEvent for 7fadaf63a560 changed 0xcb04 new_window_state 0xcb80
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	Normal
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	Tiled: 1
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnWindowStateEvent for 7fadaff07d40 changed 0xcb04 new_window_state 0xcb80
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::SetHasMappedToplevel(1)
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_size_allocate [7fadaf07a000] 45,45 -> 1190 x 310
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_move [7fadaf07a000] 45,45
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnSizeAllocate 45,45 -> 1190 x 310
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GetScreenBounds 45,45 -> 1280 x 756, unscaled 45,45 -> 1280 x 756
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_size_allocate [7fadaf07a000] 45,45 -> 1280 x 400
[Parent 2834: Main Thread]: D/Widget moz_container_wayland_move [7fadaf07a000] 45,45
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnSizeAllocate 45,45 -> 1280 x 400
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::OnExposeEvent GdkWindow [7fadd3f7bcc0] XID [0x0]
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GtkCompositorWidget::NotifyClientSizeChanged() to 1280 x 400
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::DispatchResized() size [1280, 400]
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::RequestRepaint()
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: GetScreenBounds 45,45 -> 1280 x 400, unscaled 45,45 -> 1280 x 400
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: redirect painting to OMTC rendering...
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: configure event 0,0 -> 1370 x 490 direct mGdkWindow scale 1 (scaled size 1370 x 490)
[Parent 2834: Main Thread]: D/Widget [7fadaf07a000]: nsWindow::CheckForRollup() aAlwaysRollup 1
[Parent 2834: Main Thread]: D/Widget key_release_event_cb

I cannot reproduce this fixed behavior on KDE Neon (6.2 Beta) or my Arch Linux system (6.1.5) with latest Firefox on X11 or Wayland. Curious if Fedora's Firefox package is being built with a patch or other format (flatpak) is a factor, going to be looking into this next.


More crucially, the resize handler untiling/pop issue is reproducable in all cases, even on the updated Fedora.
Interaction with the resize handlers will cause a tiled window to untile. This is triggered by simply clicking any tab within the top edge of the tile.

Recording of the untiling behavior in Fedora Wayland 40 Live ISO is attached, along with it's log.

Attached file resizer_unsnap.log
Flags: needinfo?(breakingspell)

Fedora Firefox doesn't ship any related patches, it may be reproducible with stock Mozilla binaries as well:
https://fedoraproject.org/wiki/How_to_debug_Firefox_problems#Testing_Mozilla_binaries

Blocks: gtk-kde
Priority: -- → P3
Flags: needinfo?(stransky)

Will test it tomorrow. We need to get 'Tiled: 1' state from system and then we can fix potential styling bug. If we get 'Tiled: 0' Firefox doesn't get such info from OS, not sure why.

Tested latest Mozilla nightly binaries on Fedora 40 / KDE and I'm getting:

[Parent 88710: Main Thread]: D/Widget [7f827a733000]: configure event 0,0 -> 1428 x 1204 direct mGdkWindow scale 2 (scaled size 2856 x 2408)
[Parent 88710: Main Thread]: D/Widget [7f827a733000]: nsWindow::OnWindowStateEvent for 7f82a0a22760 changed 0x7f00 new_window_state 0x12b80
[Parent 88710: Main Thread]: D/Widget [7f827a733000]:   Normal 
[Parent 88710: Main Thread]: D/Widget [7f827a733000]:   Tiled: 1
[Parent 88710: Main Thread]: D/Widget [7f827a733000]: nsWindow::OnWindowStateEvent for 7f82a0a25d50 changed 0x7f00 new_window_state 0x12b80
[Parent 88710: Main Thread]: D/Widget [7f827a733000]: nsWindow::SetHasMappedToplevel(1)
[Parent 88710: Main Thread]: D/Widget [7f827a733000]:   quick return because IS_MOZ_CONTAINER(aWidget) is true

I don't know if Fedora KDE is patched somehow....adding Jan for more info.

Flags: needinfo?(stransky) → needinfo?(jgrulich)

(In reply to Martin Stránský [:stransky] (ni? me) from comment #15)

I don't know if Fedora KDE is patched somehow....adding Jan for more info.

We don't have any KWin patch in Fedora related to tiling.

Flags: needinfo?(jgrulich)

Thanks much for looking into this.

Fedora on KDE 6.0 (ISO) notably did not work on Firefox 130 before updating to 6.1. Not sure why the latest KDE Neon builds and Arch packages aren't showing this behavior.
I ran an attempt at bisecting Kwin/Kwindowsystem between 6.0 and 6.1 to find the change that affected this, but wasn't well-suited to test the changes in a Fedora environment at a good pace (Plasma's dependencies often need rebuilt too during bisect).

Even with the tiling mode properly detected and set (Normal, Tiled: 1), the resize handle bug is the real breaker, it's a fix from years past which was removed from GNOME once it no longer helped, and retained for KDE because it did require it at the time.
Looks like KDE no longer needs it either, removing the one line referenced in the OP does seem to correct this behavior whether the window is tiled, floating, maximized. Brainstorming that once the tile detection method is ironed out, it can conditionally disable this behavior.

Bug 1822764 was created by Emilio and he uses KDE afaik so he may be the better person here.

Flags: needinfo?(emilio)
Assignee: nobody → emilio
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true

Thrilled to report that https://phabricator.services.mozilla.com/D223977 has resolved most of this. Tested on Arch Linux with Plasma 6.1.5 (X11+Wayland):

  • Resizers are fixed in X11 and Wayland, no popping or adverse experience (tab bar allows interaction with top pixels).

  • Plasma 6.1.5 Wayland on Arch Linux now reports Tiled: 1 correctly.

    • X11 still incorrectly reports Tiled: 0. Perhaps a GDK_WINDOW hint?

I may have spoken too soon:

In X11, individual windows can lose the Resizer fix (https://phabricator.services.mozilla.com/D223977) and will incorrectly display the handlers, causing the same untiling issue with top-pixel tab interaction lost again.

Re-snapping/tiling the window and untiling does not help, closing and re-opening the window will correct it. I'll often have multiple Firefox windows open, and the regression only occurs in one window while others in the stack are unaffected and don't draw the handlers.

This has happened several times, but I haven't yet pinned the cause. Are there particular debug flags I can run and log to file that will help pin this behavior?

Attached image Testing-D223977-1a.gif

Two windows are tiled, left behaves properly and right demonstrates broken tab interaction

Pushed by ealvarez@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/71eff8a27139 Check per-edge resizability in CheckResizerEdge(). r=stransky
Status: ASSIGNED → RESOLVED
Closed: 1 months ago
Resolution: --- → FIXED
Target Milestone: --- → 133 Branch

Hmm, based on https://phabricator.services.mozilla.com/D223977#7703777, the issue is handled in Wayland but not confirmed in X11.

I can still reproduce in X11 on Firefox 131 using this patch. Should we open a new bug to track X11 support specifically, or re-open this ticket?

Flags: needinfo?(smolnar)

(In reply to breakingspell from comment #25)

Hmm, based on https://phabricator.services.mozilla.com/D223977#7703777, the issue is handled in Wayland but not confirmed in X11.

I can still reproduce in X11 on Firefox 131 using this patch. Should we open a new bug to track X11 support specifically, or re-open this ticket?

hi, we can open a new bug for the X11 support.

Flags: needinfo?(smolnar)

According to mozregression, this broke picture-in-picture resizing for me in X11 using gnome.
I no longer see a resize pointer when hovering over the edges of the picture-in-picture window.

Can you file a separate bug for that? Happy to look into it.

Regressions: 1924387

Done! I assume it affects other things besides picture-in-picture, so I assigned it to the same component as this one.

Sorry for the delay here, opened BUG 1924616 to track the X11 fix.

See Also: → 1924616
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: