Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unshading a window with WindowShade function sometimes makes the window lose "true input focus". #671

Closed
nguyenhuy-hoanganh opened this issue Jun 17, 2022 · 1 comment · Fixed by #672
Labels
type:bug Something's broken!
Milestone

Comments

@nguyenhuy-hoanganh
Copy link

Upfront Information

  • Fvwm3 version: 1.0.5 (1.0.4-128-gc7b41a03) , installed from the fvwm3-git AUR package
  • Linux distribution: EndeavourOS Linux x86_64
  • Platform: Linux
  • Kernel: 5.18.3-arch1-1

Expected Behaviour

My current focus style is SloppyFocus

I bound my WindowShade command to a hotkey (Super+S) to shade/unshade a window.

Normally a shading/unshading operation works as expected if I select it from a WindowOps Menu with my mouse. I should be able to immediately issue keyboard commands to the application inside the window. (which is expected since pressing the Shade button from the WindowOps menu requires my cursor to be inside of where the window would be unshaded back anyways)

Actual Behaviour

But when I use the keyboard to unshade a window, it sometimes does not grant input focus to the window. This means that I can still close the window with Fvwm functions like Close with a keyboard binding just fine, but I cannot interact with the content inside of the window itself.

A terminal emulator shows its cursor as if the window is unfocused, and I cannot type anything to it. Same goes for a Firefox window, I cannot send shortcuts like Ctrl-N to open a new tab.

Steps to Reproduce

Step 1: Set the focus style for windows to either SloppyFocus or ClickToFocus (this issue persists when tested with both styles)

Step 2: Set the keyboard binding for the WindowShade command
Key S A 4 Silent WindowShade

Step 3: Attempt to shade and unshade a window with the keyboard binding. In certain situations, input focus will not be gained.
I tried the following methods to regain input focus:

  • After unshading, hover the cursor down from the window's titlebar to the inside of the application window.
  • Either before or after unshading, hover the cursor out of the window's titlebar and back into the window's titlebar again (or any part of the window for that matter)
  • Either before or after unshading, drag the titlebar and begin moving it. (Simply pressing the titlebar does not work)
  • If, after first shading the window, I hover over another window to focus it (even the root window), then go back to the shaded window's titlebar and unshading it, then I can regain input focus just fine.

From this I can determine that: this issue occurs if my cursor remains on the window's titlebar throughout the whole shade/unshade operation.

This issue can be replicated with the default configuration in /usr/share/fvwm3/default-config/config that comes with Fvwm3, but here's my current config file just in case: https://pastebin.com/Dj5NTq1v

As you can see, this can be an issue for keyboard-centric users who would rather not have to use a mouse to regain focus on a window.

@nguyenhuy-hoanganh nguyenhuy-hoanganh added the type:bug Something's broken! label Jun 17, 2022
ThomasAdam added a commit that referenced this issue Jun 17, 2022
When shading/unshading a window which might still be focused, still tell
the window this to avoid only redrawing the window borders without
having set the focus first.

Fixes #671
@ThomasAdam
Copy link
Member

Hi @kittywritescode

Thanks for the report. Please try the ta/fix-671 branch to see if this improves things for you.

ThomasAdam added a commit that referenced this issue Aug 8, 2022
When shading/unshading a window which might still be focused, still tell
the window this to avoid only redrawing the window borders without
having set the focus first.

Fixes #671
@ThomasAdam ThomasAdam added this to the 1.0.5 milestone Aug 8, 2022
@ThomasAdam ThomasAdam moved this to To do in FVWM3 Sep 18, 2022
@ThomasAdam ThomasAdam added this to FVWM3 Sep 18, 2022
@ThomasAdam ThomasAdam moved this from To do to Done in FVWM3 Sep 18, 2022
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Oct 19, 2022
(One of the more significant changes is that locking issues with libX11
1.8.1 are fixed.)

## [1.0.5](https://github.com/fvwmorg/fvwm3/tree/1.0.5) (2022-09-28)

[Full Changelog](fvwmorg/fvwm3@1.0.4...1.0.5)

**Breaking changes:**

- Function parser rewrite & Repeat command deprecation [\#642](fvwmorg/fvwm3#642)
- MapRequest: don't fake map/unmap events [\#703](fvwmorg/fvwm3#703) ([ThomasAdam](https://github.com/ThomasAdam))
- Rewrite function parser and remove the Repeat command [\#643](fvwmorg/fvwm3#643) ([ThomasAdam](https://github.com/ThomasAdam))
- Update and cleanup SnapAttract code. [\#641](fvwmorg/fvwm3#641) ([somiaj](https://github.com/somiaj))
- Doc: split manpages into sections [\#637](fvwmorg/fvwm3#637) ([ThomasAdam](https://github.com/ThomasAdam))
- Remove Efence and Dmalloc support [\#635](fvwmorg/fvwm3#635) ([ThomasAdam](https://github.com/ThomasAdam))

**Implemented enhancements:**

- A better ManualPlacement that allows drawing the geometry of the new window. [\#674](fvwmorg/fvwm3#674)
- expand: add monitor.prev variable [\#699](fvwmorg/fvwm3#699) ([ThomasAdam](https://github.com/ThomasAdam))
- Add AnyScreen to conditional in IconManClick [\#696](fvwmorg/fvwm3#696) ([somiaj](https://github.com/somiaj))
- \_NET\_WM\_NAME: update to fvwm3 [\#609](fvwmorg/fvwm3#609) ([ThomasAdam](https://github.com/ThomasAdam))

**Fixed bugs:**

- Style \* Icon cause Fvwm3 stuck in loading when restart. [\#681](fvwmorg/fvwm3#681)
- Recaptured windows can have a negative offset away from the page they should be on [\#678](fvwmorg/fvwm3#678)
- VLC still decorates its transient window even when explicitly given the NakedTransient style [\#673](fvwmorg/fvwm3#673)
- configuring with `--disable-png` causes builds to fail [\#669](fvwmorg/fvwm3#669)
- Emoji in window titles make FvwmIconMan stop showing window names. [\#654](fvwmorg/fvwm3#654)
- Unable to initialize RandR [\#650](fvwmorg/fvwm3#650)
- PipeRead when called from a function cannot grab pointer [\#610](fvwmorg/fvwm3#610)
- Man Pages Cleanup [\#554](fvwmorg/fvwm3#554)
- Windows from various pages are moved to page 0 0 on fvwm3 restart [\#694](fvwmorg/fvwm3#694)
- Separator in menu gets focus [\#675](fvwmorg/fvwm3#675)
- Unshading a window with WindowShade function sometimes makes the window lose "true input focus". [\#671](fvwmorg/fvwm3#671)
- When configured with `--disable-xft` fvwm3 fails to build. [\#667](fvwmorg/fvwm3#667)
- my fvwm config does not work with recent chromium [\#663](fvwmorg/fvwm3#663)
- FvwmEvent event new\_desk gets triggered multiple times in multi-monitor shared setup [\#655](fvwmorg/fvwm3#655)
- Windows with style "PositionPlacement Center" split between monitors [\#648](fvwmorg/fvwm3#648)
- FVWM branch dv/pager-noaspect crashes with core dump [\#647](fvwmorg/fvwm3#647)
- SnapAttraction prefers wrong window [\#631](fvwmorg/fvwm3#631)
- FvwmPrompt is installed unstripped [\#618](fvwmorg/fvwm3#618)
- DesktopName fails to set desktop name under described circumstances [\#606](fvwmorg/fvwm3#606)
- FvwmEvent event monitor\_focus broken in FVWM3 1.0.4 [\#604](fvwmorg/fvwm3#604)
- Building FvwmPrompt disables FvwmConsole, but still installs manual page. [\#597](fvwmorg/fvwm3#597)
- Wait command in configuration file can cause unexpected issues with GeometryWindow. [\#590](fvwmorg/fvwm3#590)
- "GeometryWindow Hide" doesn't work [\#589](fvwmorg/fvwm3#589)
- Special characters \(umlauts\) are sometimes not displayed correctly in the window title [\#482](fvwmorg/fvwm3#482)
- FvwmEvent: handle previous\_monitor and no longer passthrough ID  [\#701](fvwmorg/fvwm3#701) ([ThomasAdam](https://github.com/ThomasAdam))
- doc: don't build FvwmConsole.1 if FvwmPrompt enabled [\#700](fvwmorg/fvwm3#700) ([ThomasAdam](https://github.com/ThomasAdam))
- DesktopConfiguration shared: keep windows in-situ [\#697](fvwmorg/fvwm3#697) ([ThomasAdam](https://github.com/ThomasAdam))
- desk\_add: fix starting desk/monitor [\#689](fvwmorg/fvwm3#689) ([ThomasAdam](https://github.com/ThomasAdam))
- shared: fix flagging of new\_desk [\#687](fvwmorg/fvwm3#687) ([ThomasAdam](https://github.com/ThomasAdam))
- Fix for lock recusion in handle\_all\_expose\(\) [\#683](fvwmorg/fvwm3#683) ([mherrb](https://github.com/mherrb))
- Asciidoc fixes [\#676](fvwmorg/fvwm3#676) ([topcat001](https://github.com/topcat001))
- grow: ignore transient windows [\#627](fvwmorg/fvwm3#627) ([ThomasAdam](https://github.com/ThomasAdam))
- MoveToScreen: fix NULL-dereference [\#605](fvwmorg/fvwm3#605) ([ThomasAdam](https://github.com/ThomasAdam))
- Bugfix: fvwm-menu-desktop --get-menus [\#593](fvwmorg/fvwm3#593) ([somiaj](https://github.com/somiaj))

**Closed issues:**

- Code Cleanup: Codacy issues list [\#107](fvwmorg/fvwm3#107)

**Merged pull requests:**

- avoid sprintf\(%n\) [\#653](fvwmorg/fvwm3#653) ([omar-polo](https://github.com/omar-polo))
- FvwmPrompt: add GOFLAGS to build stripped [\#619](fvwmorg/fvwm3#619) ([Zirias](https://github.com/Zirias))
- Wait: don't run until windows are captured [\#592](fvwmorg/fvwm3#592) ([ThomasAdam](https://github.com/ThomasAdam))
- CMD\_GeometryWindow: Move NULL check. [\#591](fvwmorg/fvwm3#591) ([somiaj](https://github.com/somiaj))
- cleanup: address warnings [\#705](fvwmorg/fvwm3#705) ([ThomasAdam](https://github.com/ThomasAdam))
- modconf: disable debug [\#698](fvwmorg/fvwm3#698) ([ThomasAdam](https://github.com/ThomasAdam))
- GotoDesk: avoid over-eager matching [\#695](fvwmorg/fvwm3#695) ([ThomasAdam](https://github.com/ThomasAdam))
- update\_fvwm\_monitor: cosmetic change [\#692](fvwmorg/fvwm3#692) ([ThomasAdam](https://github.com/ThomasAdam))
- menuitem: set selectable when not a separator [\#690](fvwmorg/fvwm3#690) ([ThomasAdam](https://github.com/ThomasAdam))
- Windowshade: explicitly set input focus [\#672](fvwmorg/fvwm3#672) ([ThomasAdam](https://github.com/ThomasAdam))
- FvwmPrompt: update core modules [\#665](fvwmorg/fvwm3#665) ([ThomasAdam](https://github.com/ThomasAdam))
- FvwmPrompt: update vendor deps [\#664](fvwmorg/fvwm3#664) ([ThomasAdam](https://github.com/ThomasAdam))
- Fix selectable flag for the Resize window operation menu item [\#656](fvwmorg/fvwm3#656) ([topcat001](https://github.com/topcat001))
- Fix ExitFunction [\#651](fvwmorg/fvwm3#651) ([pghvlaans](https://github.com/pghvlaans))
- DisplayPosition: fix segfault [\#645](fvwmorg/fvwm3#645) ([ThomasAdam](https://github.com/ThomasAdam))
- convert UPDATE\_FVWM\_SCREEN from macro to function [\#644](fvwmorg/fvwm3#644) ([ThomasAdam](https://github.com/ThomasAdam))
- ta/dv logfile [\#640](fvwmorg/fvwm3#640) ([ThomasAdam](https://github.com/ThomasAdam))
- Resize: fix resize bounds [\#638](fvwmorg/fvwm3#638) ([ThomasAdam](https://github.com/ThomasAdam))
- ta/dv2 [\#636](fvwmorg/fvwm3#636) ([ThomasAdam](https://github.com/ThomasAdam))
- ta/dv misc [\#634](fvwmorg/fvwm3#634) ([ThomasAdam](https://github.com/ThomasAdam))
- Reject out of range windows for Move and Resize commands. [\#633](fvwmorg/fvwm3#633) ([ThomasAdam](https://github.com/ThomasAdam))
- FVWMMFL: ignore SIGPIPE [\#632](fvwmorg/fvwm3#632) ([ThomasAdam](https://github.com/ThomasAdam))
- ta/dv ifdev [\#630](fvwmorg/fvwm3#630) ([ThomasAdam](https://github.com/ThomasAdam))
- ta/from dv [\#629](fvwmorg/fvwm3#629) ([ThomasAdam](https://github.com/ThomasAdam))
- DesktopName: don't duplicate entries with same name [\#607](fvwmorg/fvwm3#607) ([ThomasAdam](https://github.com/ThomasAdam))
- Patches from Debian [\#599](fvwmorg/fvwm3#599) ([ThomasAdam](https://github.com/ThomasAdam))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:bug Something's broken!
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants