summaryrefslogtreecommitdiffstats
path: root/lib/Phi/Widgets/Systray.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Phi/Widgets/Systray.hs')
-rw-r--r--lib/Phi/Widgets/Systray.hs9
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/Phi/Widgets/Systray.hs b/lib/Phi/Widgets/Systray.hs
index e11e58d..0d14f0e 100644
--- a/lib/Phi/Widgets/Systray.hs
+++ b/lib/Phi/Widgets/Systray.hs
@@ -61,7 +61,7 @@ instance WidgetClass Systray where
return $ SystrayState phi (head . getScreens $ dispvar) 0 lastReset []
minSize _ (SystrayState _ systrayScreen _ _ icons) height screen = case True of
- _ | screen == systrayScreen -> (length icons)*height
+ _ | screen == systrayScreen -> max 0 $ (length icons)*(height+2)-1
| otherwise -> 0
weight _ = 0
@@ -72,7 +72,7 @@ instance WidgetClass Systray where
liftIO $ writeIORef lastResetRef reset
Matrix _ _ _ _ dx dy <- getMatrix
forM_ (zip [0..] icons) $ \(i, SystrayIconState midParent window) -> do
- let x = round dx + i*h
+ let x = round dx + i*(h+2)
y = round dy
sendMessage phi $ RenderIcon midParent window x y h h (lastReset /= reset)
@@ -115,16 +115,15 @@ systrayRunner phi dispvar = do
writeIORef errorWindowRef (ev_resourceid event:errorWindows)
(_, x', y', w', h', _, _) <- getGeometry disp midParent
+ (_, _, _, w'', h'', _, _) <- getGeometry disp window
let resize = (fromIntegral x) /= x' || (fromIntegral y) /= y' || (fromIntegral w) /= w' || (fromIntegral h) /= h'
+ || (fromIntegral w) /= w'' || (fromIntegral h) /= h''
when resize $ do
moveResizeWindow disp midParent (fromIntegral x) (fromIntegral y) (fromIntegral w) (fromIntegral h)
resizeWindow disp window (fromIntegral w) (fromIntegral h)
sync disp False
- clearArea disp midParent 0 0 (fromIntegral w) (fromIntegral h) True
- sync disp False
-
when (resize || reset) $ do
clearArea disp window 0 0 (fromIntegral w) (fromIntegral h) True
sync disp False