diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-07-15 09:17:57 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-07-15 09:17:57 +0200 |
commit | 465d7579868b66d7076446744f1d80d2b272aca8 (patch) | |
tree | 61cefdcf7fc85e17c8ab2e7175478aa290ecf3fc /lib/Phi/Widget.hs | |
parent | c6e57070ab4ca1fdaddf816208aef24f38aecaba (diff) | |
download | phi-465d7579868b66d7076446744f1d80d2b272aca8.tar phi-465d7579868b66d7076446744f1d80d2b272aca8.zip |
Some more work on the taskbar
Diffstat (limited to 'lib/Phi/Widget.hs')
-rw-r--r-- | lib/Phi/Widget.hs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/Phi/Widget.hs b/lib/Phi/Widget.hs index 9534c8c..218dea1 100644 --- a/lib/Phi/Widget.hs +++ b/lib/Phi/Widget.hs @@ -2,6 +2,7 @@ module Phi.Widget ( Display(..) , withDisplay + , getAtoms , Widget(..) , WidgetClass(..) , WidgetState(..) @@ -14,6 +15,7 @@ module Phi.Widget ( Display(..) import Control.Concurrent.MVar import Control.Monad +import Control.Monad.IO.Class import Data.Traversable @@ -21,17 +23,21 @@ import qualified Graphics.X11.Xlib import Graphics.Rendering.Cairo import Phi.Phi +import Phi.X11.Atoms -newtype Display = Display (MVar Graphics.X11.Xlib.Display) +data Display = Display (MVar Graphics.X11.Xlib.Display) Atoms -withDisplay :: Display -> (Graphics.X11.Xlib.Display -> IO a) -> IO a -withDisplay (Display dispvar) f = do - disp <- takeMVar dispvar +withDisplay :: MonadIO m => Display -> (Graphics.X11.Xlib.Display -> m a) -> m a +withDisplay (Display dispvar _) f = do + disp <- liftIO $ takeMVar dispvar a <- f disp - putMVar dispvar disp + liftIO $ putMVar dispvar disp return a +getAtoms :: Display -> Atoms +getAtoms (Display _ atoms) = atoms + class Show a => WidgetClass a where type WidgetData a :: * |