{-# LANGUAGE DeriveDataTypeable #-}
----------------------------------------------------------------------------
-- |
-- Module      :  XMonad.Util.Minimize
-- Copyright   :  (c) Bogdan Sinitsyn (2016)
-- License     :  BSD3-style (see LICENSE)
--
-- Maintainer  :  bogdan.sinitsyn@gmail.com
-- Stability   :  unstable
-- Portability :  not portable
--
-- Stores some common utilities for modules used for window minimizing/maximizing
--
-----------------------------------------------------------------------------
module XMonad.Util.Minimize
  ( RectMap
  , Minimized(..)
  ) where

import XMonad
import qualified XMonad.StackSet as W

import qualified Data.Map as M

type RectMap = M.Map Window (Maybe W.RationalRect)

data Minimized = Minimized
    { rectMap :: RectMap
    , minimizedStack :: [Window]
    }
    deriving (Eq, Typeable, Read, Show)

instance ExtensionClass Minimized where
  initialValue = Minimized { rectMap = M.empty
                           , minimizedStack = []
                           }
  extensionType = PersistentExtension