[xmonad] darcs patch: Correctly implement section 4.1.7 of ICCCM
Don Stewart
dons at galois.com
Tue Nov 25 17:09:25 EST 2008
Oh? Is there a patch to getWMHints I should be applying?
roma:
> * Spencer Janssen <spencerjanssen at gmail.com> [2008-11-25 04:57:47-0600]
> > WMHints has a bitmask that indicates which WM_HINTS are actually present. I
> > believe the correct solution is to simply check whether inputHintBit is set on
> > wmh_flags.
>
> Here's amended patch.
>
> 2 all: feel free to test/use it, but be aware that it will leak
> memory until getWMHints is fixed in X11.
>
> --
> Roman I. Cheplyaka (aka Feuerbach @ IRC)
> Tue Nov 25 23:19:44 EET 2008 Roman Cheplyaka <roma at ro-che.info>
> * Correctly implement section 4.1.7 of ICCCM
> Based on patch and investigation by Ivan Tarasov. Fixes #177.
> - do setInputFocus unless application explicitly asks not to do so
> - send WM_TAKE_FOCUS if needed
>
> New patches:
>
> [Correctly implement section 4.1.7 of ICCCM
> Roman Cheplyaka <roma at ro-che.info>**20081125211944
> Based on patch and investigation by Ivan Tarasov. Fixes #177.
> - do setInputFocus unless application explicitly asks not to do so
> - send WM_TAKE_FOCUS if needed
> ] {
> hunk ./XMonad/Core.hs 30
> - atom_WM_STATE, atom_WM_PROTOCOLS, atom_WM_DELETE_WINDOW, ManageHook, Query(..), runQuery
> + atom_WM_STATE, atom_WM_PROTOCOLS, atom_WM_DELETE_WINDOW, atom_WM_TAKE_FOCUS, ManageHook, Query(..), runQuery
> hunk ./XMonad/Core.hs 189
> -atom_WM_PROTOCOLS, atom_WM_DELETE_WINDOW, atom_WM_STATE :: X Atom
> +atom_WM_PROTOCOLS, atom_WM_DELETE_WINDOW, atom_WM_STATE, atom_WM_TAKE_FOCUS :: X Atom
> hunk ./XMonad/Core.hs 193
> +atom_WM_TAKE_FOCUS = getAtom "WM_TAKE_FOCUS"
> hunk ./XMonad/Operations.hs 28
> -import Data.Bits ((.|.), (.&.), complement)
> +import Data.Bits ((.|.), (.&.), complement, testBit)
> hunk ./XMonad/Operations.hs 325
> - io $ do setInputFocus dpy w revertToPointerRoot 0
> + -- do setInputFocus unless application explicitly asks not to do so
> + wmhints <- io $ getWMHints dpy w
> + when (not (testBit (wmh_flags wmhints) inputHintBit) || wmh_input wmhints) $
> + io $ setInputFocus dpy w revertToPointerRoot 0
> hunk ./XMonad/Operations.hs 330
> +
> + -- send WM_TAKE_FOCUS if needed
> + wmtakef <- atom_WM_TAKE_FOCUS
> + wmprot <- atom_WM_PROTOCOLS
> +
> + protocols <- io $ getWMProtocols dpy w
> + when (wmtakef `elem` protocols) $ do
> + io $ allocaXEvent $ \ev -> do
> + setEventType ev clientMessage
> + setClientMessageEvent ev w wmprot 32 wmtakef currentTime
> + sendEvent dpy w False noEventMask ev
> }
>
> Context:
>
> [Fix #192.
> Spencer Janssen <spencerjanssen at gmail.com>**20081021220059]
> [select base < 4 for building on ghc 6.10
> Adam Vogt <vogt.adam at gmail.com>**20081013214509]
> [add killWindow function
> Joachim Breitner <mail at joachim-breitner.de>**20081005001804
> This is required to kill anything that is not focused, without
> having to focus it first.
> ]
> [add'l documentation
> Devin Mullins <me at twifkak.com>**20080927234639]
> [Regression: ungrab buttons on *non* root windows
> Spencer Janssen <spencerjanssen at gmail.com>**20081007214351]
> [Partial fix for #40
> Spencer Janssen <spencerjanssen at gmail.com>**20081007212053
> Improvements:
> - clicking on the root will change focus to that screen
> - moving the mouse from a window on a screen to an empty screen changes focus
> to that screen
> The only remaining issue is that moving the mouse between two empty screens
> does not change focus. In order to solve this, we'd have to select motion events
> on the root window, which is potentially expensive.
> ]
> [Track mouse position via events received
> Spencer Janssen <spencerjanssen at gmail.com>**20081007203953]
> [Fix haddock
> Spencer Janssen <spencerjanssen at gmail.com>**20081007094641]
> [Move screen locating code into pointScreen
> Spencer Janssen <spencerjanssen at gmail.com>**20081007094207]
> [Make pointWithin a top-level binding
> Spencer Janssen <spencerjanssen at gmail.com>**20081007090229]
> [sp README, CONFIG, STYLE, TODO
> gwern0 at gmail.com**20080913024457]
> [Use the same X11 dependency as xmonad-contrib
> Spencer Janssen <spencerjanssen at gmail.com>**20080921061508]
> [Export focusUp' and focusDown' -- work entirely on stacks
> Spencer Janssen <spencerjanssen at gmail.com>**20080911214803]
> [add W.shiftMaster, fix float/tile-reordering bug
> Devin Mullins <me at twifkak.com>**20080911053909]
> [TAG 0.8
> Spencer Janssen <spencerjanssen at gmail.com>**20080905195412]
> [Spelling. Any bets on how long this has been there?
> Spencer Janssen <spencerjanssen at gmail.com>**20080905195211]
> [Bump version to 0.8
> Spencer Janssen <spencerjanssen at gmail.com>**20080905194225]
> [Remove obsolete comments about darcs X11
> Spencer Janssen <spencerjanssen at gmail.com>**20080905194915]
> [Recommend latest packages rather than specific versions
> Spencer Janssen <spencerjanssen at gmail.com>**20080905194837]
> [Also remove -optl from the executable section
> Spencer Janssen <spencerjanssen at gmail.com>**20080820210023]
> [-optl-Wl,-s is not needed with recent Cabal versions
> Spencer Janssen <spencerjanssen at gmail.com>**20080820204102]
> [Haddock links
> Malebria <malebria at riseup.net>**20080601212515]
> [Haddock syntax for enumeration
> Malebria <malebria at riseup.net>**20080601204951]
> [I prefer the spencerjanssen at gmail.com address now
> Spencer Janssen <spencerjanssen at gmail.com>**20080714202650]
> [Raise windows in the floating layer when moving or resizing
> Trevor Elliott <trevor at galois.com>**20080521215057]
> [add currentTag convenience function
> Devin Mullins <me at twifkak.com>**20080511224258]
> [Make Mirror a newtype
> Spencer Janssen <sjanssen at cse.unl.edu>**20080508104640]
> [Comments
> Spencer Janssen <sjanssen at cse.unl.edu>**20080507013122]
> [Break long line
> Spencer Janssen <sjanssen at cse.unl.edu>**20080507012608]
> [Style
> Spencer Janssen <sjanssen at cse.unl.edu>**20080507012519]
> [Simplify
> Spencer Janssen <sjanssen at cse.unl.edu>**20080507011309]
> [Overhaul Choose, fixes issue 183
> Spencer Janssen <sjanssen at cse.unl.edu>**20080506220809]
> [Remember if focus changes were caused by mouse actions or by key commands
> Klaus Weidner <kweidner at pobox.com>**20080502175603
>
> If the user used the mouse to change window focus (moving into or clicking on a
> window), this should be handled differently than focus changes due to keyboard
> commands. Specifically, it's inappropriate to discard window enter/leave events
> while the mouse is moving. This fixes the bug where a fast mouse motion across
> multiple windows resulted in the wrong window keeping focus.
>
> It's also helpful information for contrib modules such as UpdatePointer - it's
> supposed to move the mouse pointer only in response to keyboard actions, not if
> the user was moving the mouse.
> ]
> [Wibble
> Spencer Janssen <sjanssen at cse.unl.edu>**20080506203840]
> [Added doShift function for more user-friendly hooks
> Ivan N. Veselov <veselov at gmail.com>**20080506185757]
> [use named colours. fixes startup failure on the XO
> Don Stewart <dons at galois.com>**20080502210149]
> [Set focus *after* revealing windows
> Spencer Janssen <sjanssen at cse.unl.edu>**20080407222559]
> [Reveal windows after moving/resizing them.
> Spencer Janssen <sjanssen at cse.unl.edu>**20080407220756
> This should reduce the number of repaints for newly visible windows.
> ]
> [Hide newly created but non-visible windows (fixes bug #172)
> Spencer Janssen <sjanssen at cse.unl.edu>**20080430014012]
> [formatting, eta expansion
> Don Stewart <dons at galois.com>**20080418184337]
> [XMonad.ManageHook: add 'appName', another name for 'resource'
> Lukas Mai <l.mai at web.de>**20080406012006]
> [XMonad.ManageHook: make 'title' locale-aware; haddock cleanup
> Lukas Mai <l.mai at web.de>**20080406011338
>
> The code for 'title' was stolen from getname.patch (bug #44).
> ]
> [XMonad.Main: call setlocale on startup
> Lukas Mai <l.mai at web.de>**20080406011234]
> [floats always use current screen (with less bugs)
> robreim at bobturf.org**20080405135009]
> [XMonad.Operations: applySizeHint reshuffle
> Lukas Mai <l.mai at web.de>**20080404215615
>
> Make applySizeHints take window borders into account. Move old functionality
> to applySizeHintsContents. Add new mkAdjust function that generates a custom
> autohinter for a window.
> ]
> [XMonad.Layout: documentation cleanup
> Lukas Mai <l.mai at web.de>**20080404215444]
> [Remove gaps from the example config
> Spencer Janssen <sjanssen at cse.unl.edu>**20080329232959]
> [Remove gaps
> Spencer Janssen <sjanssen at cse.unl.edu>**20080325091526]
> [TAG 0.7
> Spencer Janssen <sjanssen at cse.unl.edu>**20080329210249]
> Patch bundle hash:
> 895e2b0a4240849ced9aaf3bdb9165b6943d610e
> _______________________________________________
> xmonad mailing list
> xmonad at haskell.org
> http://www.haskell.org/mailman/listinfo/xmonad
More information about the xmonad
mailing list