https://bugs.kde.org/show_bug.cgi?id=439137

--- Comment #10 from qydwhotm...@gmail.com ---
I guess the window does change its WM_TRANSIENT_FOR property after its
initialization if I add debug messages to the right places.

I use a custom patch to add more debug information to
KWin.(https://build.opensuse.org/package/view_file/home:fusionfuture:branches:KDE:Frameworks5/kwin5/enable-debug.patch?expand=1)

Below are debug logs.
=============Top-left START=============
kwin_core: fetchTransient(): window() = 8388672
kwin_core: manage(): calling readTransientProperty(transientCookie)
kwin_core: readTransientProperty(): transientFor.getTransientFor() returns
False. "Dialogs <2>\u200E"
kwin_core: verifyTransientFor(): new_transient_for == XCB_WINDOW_NONE and set
is False. "Dialogs <2>\u200E"
kwin_core: readTransientProperty(): (2)new_transient_for_id =  0
kwin_core: User timestamp, ASN: 10647473
kwin_core: User timestamp, final: KWin::X11lCient(0x5576a65c3b40,
windowId=0x800040, caption="Dialogs <2>\u200E") : 10647473
kwin_core: Activation: Belongs to active application
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: fetchTransient(): window() = 8388672
kwin_core: readTransient(): calling readTransientProperty(transientFor)
kwin_core: readTransientProperty(): (1)new_transient_for_id =  8388612
kwin_core: readTransientProperty(): transientFor.getTransientFor() returns
True. "Dialogs <2>\u200E"
kwin_core: readTransientProperty(): (2)new_transient_for_id =  8388612
kwin_core: setTransient(): new_transient_for_id ( 8388612 ) !=
m_transientForId( 0 ) is True.
kwin_core: setTransient(): m_transientForId != XCB_WINDOW_NONE &&
!groupTransient() is True. "Dialogs <2>\u200E"
=============Top-left END=============

It can be seen from the log and the source code that readTransient() is called
by propertyNotifyEvent(xcb_property_notify_event_t *e), and the case is
XCB_ATOM_WM_TRANSIENT_FOR.


=============Center START=============
kwin_core: fetchTransient(): window() = 8388759
kwin_core: manage(): calling readTransientProperty(transientCookie)
kwin_core: readTransientProperty(): (1)new_transient_for_id =  8388612
kwin_core: readTransientProperty(): transientFor.getTransientFor() returns
True. "Dialogs <2>\u200E"
kwin_core: readTransientProperty(): (2)new_transient_for_id =  8388612
kwin_core: setTransient(): new_transient_for_id ( 8388612 ) !=
m_transientForId( 0 ) is True.
kwin_core: setTransient(): m_transientForId != XCB_WINDOW_NONE &&
!groupTransient() is True. "Dialogs <2>\u200E"
kwin_core: User timestamp, ASN: 10694350
kwin_core: User timestamp, final: KWin::X11Client(0x5576a6f708e0,
windowId=0x800097, caption="Dialogs <2>\u200E",
transientFor=KWin::X11Client(0x5576a664eed0, windowId=0x800004,
caption="Dialogs")) : 10694350
kwin_core: Activation: Belongs to active application
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
kwin_core: checkTransient(): m_originalTransientForId != w
=============Center END=============

Here, readTransient() is not called.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to