diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-07-18 20:57:19 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-07-18 20:57:19 +0200 |
commit | 581e1f9c63101fd2a00711748415997b0c20b793 (patch) | |
tree | ab2ee291354819727939593655e0a53383870b03 /lib/Phi/Widgets/Systray.hs | |
parent | 4cc0f0f2ee44aa5c65b8b7f759620b5de0c874a3 (diff) | |
download | phi-581e1f9c63101fd2a00711748415997b0c20b793.tar phi-581e1f9c63101fd2a00711748415997b0c20b793.zip |
Make minSize depend on the screen if necessary
Diffstat (limited to 'lib/Phi/Widgets/Systray.hs')
-rw-r--r-- | lib/Phi/Widgets/Systray.hs | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/lib/Phi/Widgets/Systray.hs b/lib/Phi/Widgets/Systray.hs index 26ff0a4..e1ab198 100644 --- a/lib/Phi/Widgets/Systray.hs +++ b/lib/Phi/Widgets/Systray.hs @@ -24,7 +24,7 @@ import Phi.X11.Atoms data SystrayIconState = SystrayIconState deriving Show -data SystrayState = SystrayState [SystrayIconState] deriving Show +data SystrayState = SystrayState Rectangle [SystrayIconState] deriving Show data Systray = Systray deriving Show @@ -35,13 +35,18 @@ instance WidgetClass Systray where initWidget (Systray) phi dispvar = do forkIO $ systrayRunner phi dispvar - return $ SystrayState [] + return $ SystrayState (head . getScreens $ dispvar) [] - minSize _ (SystrayState icons) height = (length icons)*height + minSize _ (SystrayState systrayScreen icons) height screen = case True of + _ | screen == systrayScreen -> (length icons)*height + | otherwise -> 0 + weight _ = 0 - render Systray (SystrayState icons) w h screen = do - return () + render Systray (SystrayState systrayScreen icons) w h screen = case True of + _ | screen == systrayScreen -> do + return () + | otherwise -> return () systrayRunner :: Phi -> Display -> IO () @@ -117,21 +122,27 @@ handleEvent ClientMessageEvent { ev_message_type = message_type, ev_data = messa case messageData of (_:opcode:iconID:_) -> do case True of - _ | opcode == sYSTEM_TRAY_REQUEST_DOCK -> do - return () + _ | opcode == sYSTEM_TRAY_REQUEST_DOCK -> + when (iconID /= 0) $ addIcon phi dispvar $ fromIntegral iconID - | opcode == sYSTEM_TRAY_BEGIN_MESSAGE || opcode == sYSTEM_TRAY_CANCEL_MESSAGE -> do + | opcode == sYSTEM_TRAY_BEGIN_MESSAGE || opcode == sYSTEM_TRAY_CANCEL_MESSAGE -> return () | otherwise -> do + putStrLn "Phi: unknown tray message" return () _ -> return () - - + handleEvent _ _ _ _ = return () + +addIcon :: Phi -> Display -> Window -> IO () +addIcon phi display window = do + return () + + systray :: Widget systray = Widget $ Systray |