diff options
Diffstat (limited to 'lib/Phi/Widgets')
-rw-r--r-- | lib/Phi/Widgets/Systray.hs | 9 |
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 |