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

--- Comment #35 from Chris Holland <zrenf...@gmail.com> ---
I tried using `xprop` and `xwininfo` then clicking the bottom left corner to
find out it's properties.

    $ xprop
    XdndAware(ATOM) = ATOM

    $ xwininfo
    xwininfo: Window id: 0xbfaa2f8 (has no name)
      Absolute upper-left X:  0
      Absolute upper-left Y:  -16255
      Relative upper-left X:  0
      Relative upper-left Y:  -16255
      Width: 1
      Height: 33590
      Depth: 0
      Visual: 0x21
      Visual Class: TrueColor
      Border width: 0
      Class: InputOnly
      Colormap: 0x0 (not installed)
      Bit Gravity State: ForgetGravity
      Window Gravity State: NorthWestGravity
      Backing Store State: NotUseful
      Save Under State: no
      Map State: IsViewable
      Override Redirect State: yes
      Corners:  +0+-16255  -1919+-16255  -1919--16255  +0--16255
      -geometry 1x33590+0+-16255

A 1x33590 window? Oh: 33590-16255-16255=1080

    $ xwininfo -root -tree | grep 33590 -B10 -A10
         0x1800004 "Qt Selection Owner for xembedsniproxy": ()  3x3+0+0  +0+0
         0x1a00004 "Qt Selection Owner for kaccess": ()  3x3+0+0  +0+0
         0xa00004 "Qt Selection Owner for kwalletd5": ()  3x3+0+0  +0+0
         0x1600005 (has no name): ()  1x1+0+0  +0+0
         0x1600004 "Qt Selection Owner for ksmserver": ()  3x3+0+0  +0+0
         0x1200004 "Qt Selection Owner for kglobalaccel5": ()  3x3+0+0  +0+0
         0xe00005 (has no name): ()  1x1+0+0  +0+0
         0xe00004 "Qt Selection Owner for kactivitymanagerd": ()  3x3+0+0  +0+0
         0xc00004 "Qt Selection Owner for kded5": ()  3x3+0+0  +0+0
         0xbe00007 "KWin": ()  1x1+0+0  +0+0
         0xbfaa2f8 (has no name): ()  1x33590+0+-16255  +0+-16255
         0xbfaaf6e (has no name): ()  1920x525+0+0  +0+0
            1 child:
            0xbfaaf6f (has no name): ()  1920x525+0+0  +0+0
               1 child:
               0x2600007 "kwin : bash — Yakuake": ("yakuake" "yakuake") 
1920x525+0+0  +0+0
         0xbe00036 (has no name): ()  1920x30+0+1050  +0+1050
            1 child:
            0xbe00037 (has no name): ()  1920x30+0+0  +0+1050
               1 child:
               0x1e00034 "Plasma": ("plasmashell" "plasmashell")  1920x30+0+0 
+0+1050

Testing an old neon-testing-20200512-1045.iso (Plasma 5.18.5?), the bug doesn't
exist. The Bottom Left corner works. Also, by hiding the titlebar in breeze
deco, I confirmed that kwin isn't treating titlebars special, the dead zone
just doesn't cover the top corners.

Here's `xwininfo` from clicking the middle-left of the screen from the ISO:

    $ xwininfo
    xwininfo: Window id: 0x2600024 (has no name)
      Absolute upper-left X:  0
      Absolute upper-left Y:  32
      Relative upper-left X:  0
      Relative upper-left Y:  32
      Width: 1
      Height: 1016
      Depth: 0
      Visual: 0x21
      Visual Class: TrueColor
      Border width: 0
      Class: InputOnly
      Colormap: 0x0 (not installed)
      Bit Gravity State: ForgetGravity
      Window Gravity State: NorthWestGravity
      Backing Store State: NotUseful
      Save Under State: no
      Map State: IsViewable
      Override Redirect State: yes
      Corners:  +0+32  -1919+32  -1919-32  +0-32
      -geometry 1x1016+0+32

So calculating 1080-1016 = 64. 64/2 = 32.

    $ xwininfo -root -tree | grep 0x2600024 -B10 -A10
         ...
         0x2600007 "KWin": ()  1x1+0+0  +0+0
         0x260002f (has no name): ()  1x1+0+0  +0+0
         0x2600030 (has no name): ()  32x32+0+0  +0+0
         0x2600024 (has no name): ()  1x1016+0+32  +0+32

The 1x1 is probably the "screen edge" click hotspot.

32x32+0+0 could be the default top-left "screen edge" hover effect, as it
disappears when disable screenedge in system settings. It only appears for the
"Toggle Window Switching" option. The 32x32 window isn't created for the "Show
Desktop" option, even though the hover/glow effect is still drawn. So it's
**not** the glow.

So lets git clone kwin, then checkout the `Plasma/5.19` branch.

* https://invent.kde.org/plasma/kwin/-/blob/master/screenedge.cpp
* https://invent.kde.org/plasma/kwin/-/blob/master/screens.cpp
* https://invent.kde.org/plasma/kwin/-/blob/master/outputscreens.cpp

Looking at the logic of `m_cornerOffset`, this is what is intended assuming dpi
is the default `96`:

    ScreenEdges::ScreenEdges(...)
      m_cornerOffset = (Screens::self()->physicalDpiX(0) +
Screens::self()->physicalDpiX(0) + 5) / 6
      m_cornerOffset = (96 + 96 + 5) / 6
      m_cornerOffset = (int)32.83333333333333
      m_cornerOffset = 32

Adding some logging to `screenedge.cpp` and `screens.cpp` and
`outputscreens.cpp`, we get:

    kwin.screens: size(screen) QSize(1920, 1080)
    kwin.outputscreens: OutputScreens::physicalSize output
KWin::X11Output(0x5645237ce1a0)
    kwin.outputscreens: OutputScreens::physicalSize return
output->physicalSize() QSize(-1, -1)
    kwin.screens: physicalSize(screen) QSizeF(-1, -1)
    kwin.screenedge: Screens::self()->physicalDpiX(0) -48768
    kwin.screenedge: Screens::self()->physicalDpiY(0) -27432
    kwin.screenedge: ScreenEdge::m_cornerOffset -16255


TLDR:
So `X11Output::physicalSize()` is returning `(-1,-1)`. This calculates a
`m_cornerOffset` of `-16255`. So the 1px Left ScreenEdge "dead zone" is scaled
into where the top-left and bottom-left corners should be.

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

Reply via email to