summaryrefslogtreecommitdiffstats
path: root/lib/Phi/Widget.hs
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2011-07-15 09:17:57 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2011-07-15 09:17:57 +0200
commit465d7579868b66d7076446744f1d80d2b272aca8 (patch)
tree61cefdcf7fc85e17c8ab2e7175478aa290ecf3fc /lib/Phi/Widget.hs
parentc6e57070ab4ca1fdaddf816208aef24f38aecaba (diff)
downloadphi-465d7579868b66d7076446744f1d80d2b272aca8.tar
phi-465d7579868b66d7076446744f1d80d2b272aca8.zip
Some more work on the taskbar
Diffstat (limited to 'lib/Phi/Widget.hs')
-rw-r--r--lib/Phi/Widget.hs16
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 :: *