summaryrefslogtreecommitdiffstats
path: root/lib/Phi/Border.hs
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2011-07-14 20:21:30 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2011-07-14 20:21:30 +0200
commit861fa81d8503b64023777ec815845361bbcc2885 (patch)
treec194a5bbd4c839eb4ccf5b933d5abebcb3368385 /lib/Phi/Border.hs
parent7c0f602343e84823d370c8742716ce6b7a8b9850 (diff)
downloadphi-861fa81d8503b64023777ec815845361bbcc2885.tar
phi-861fa81d8503b64023777ec815845361bbcc2885.zip
Added clock widget
Diffstat (limited to 'lib/Phi/Border.hs')
-rw-r--r--lib/Phi/Border.hs11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/Phi/Border.hs b/lib/Phi/Border.hs
index 53f31a2..1994724 100644
--- a/lib/Phi/Border.hs
+++ b/lib/Phi/Border.hs
@@ -10,6 +10,8 @@ module Phi.Border ( BorderWidth(..)
import Phi.Types
import Phi.Widget
+import Control.Monad
+
import Graphics.Rendering.Cairo
@@ -52,7 +54,7 @@ data Border = Border BorderConfig [Widget] deriving Show
instance WidgetClass Border where
type WidgetData Border = BorderState
- initialState (Border _ widgets) = BorderState $ map createWidgetState widgets
+ initWidget (Border _ widgets) phi disp = liftM BorderState $ mapM (createWidgetState phi disp) widgets
minSize (Border config widgets) = sum (map (\(Widget w) -> minSize w) widgets) + borderH p + 2*bw + borderH m
where
@@ -74,7 +76,6 @@ instance WidgetClass Border where
height' = height - borderV m - 2*bw - borderV p
render (Border config _) (BorderState widgetStates) w h = do
- save
newPath
arc (x + width - radius) (y + radius) radius (-pi/2) 0
arc (x + width - radius) (y + height - radius) radius 0 (pi/2)
@@ -82,14 +83,16 @@ instance WidgetClass Border where
arc (x + radius) (y + radius) radius pi (pi*3/2)
closePath
+ save
setSourceRGBA fr fg fb fa
fillPreserve
setSourceRGBA br bg bb ba
setLineWidth $ fromIntegral bw
- stroke
+ strokePreserve
restore
+ clip
renderWidgets widgetStates
where
@@ -105,6 +108,8 @@ instance WidgetClass Border where
(br, bg, bb, ba) = borderColor config
(fr, fg, fb, fa) = backgroundColor config
+
+ handleMessage _ (BorderState widgetStates) m = BorderState $ handleMessageWidgets m widgetStates
border :: BorderConfig -> [Widget] -> Widget