diff --git a/CHANGES.md b/CHANGES.md index cd7b88e..f0d3157 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,10 @@ causing some floating windows to be smaller/larger than the size they requested. + * Added `Typeable layout` constraint to `LayoutClass`, making it possible to + cast `Layout` back into a concrete type and extract current layout state + from it. + ## 0.15 (September 30, 2018) * Reimplement `sendMessage` to deal properly with windowset changes made diff --git a/src/XMonad/Core.hs b/src/XMonad/Core.hs index 7810522..96a9878 100644 --- a/src/XMonad/Core.hs +++ b/src/XMonad/Core.hs @@ -271,7 +271,7 @@ readsLayout (Layout l) s = [(Layout (asTypeOf x l), rs) | (x, rs) <- reads s] -- 'runLayout', 'handleMessage', and so on. This ensures that the -- proper methods will be used, regardless of the particular methods -- that any 'LayoutClass' instance chooses to define. -class Show (layout a) => LayoutClass layout a where +class (Show (layout a), Typeable layout) => LayoutClass layout a where -- | By default, 'runLayout' calls 'doLayout' if there are any -- windows to be laid out, and 'emptyLayout' otherwise. Most