diff options
| -rw-r--r-- | XMobar.hs | 34 | 
1 files changed, 19 insertions, 15 deletions
| @@ -90,10 +90,10 @@ createWin config =       let dflt = defaultScreen dpy       rootw  <- rootWindow dpy dflt       win <- mkUnmanagedWindow dpy (defaultScreenOfDisplay dpy) rootw  -            (fromIntegral $ xPos config)  -            (fromIntegral $ yPos config)  -            (fromIntegral $ width config)  -            (fromIntegral $ height config) +            (fi $ xPos config)  +            (fi $ yPos config)  +            (fi $ width config)  +            (fi $ height config)       mapWindow dpy win       return (dpy,win) @@ -113,22 +113,22 @@ drawInWin str =         io $ setFont dpy gc (fontFromFontStruct fontst)         -- create a pixmap to write to and fill it with a rectangle:         p <- io $ createPixmap dpy win  -            (fromIntegral (width config))  -            (fromIntegral (height config))  +            (fi (width config))  +            (fi (height config))               (defaultDepthOfScreen (defaultScreenOfDisplay dpy))          io $ setForeground dpy gc bgcolor         io $ fillRectangle dpy p gc 0 0  -              (fromIntegral $ width config)  -              (fromIntegral $ height config) +              (fi $ width config)  +              (fi $ height config)         -- write to the pixmap the new string:         let strWithLenth = map (\(s,c) -> (s,c,textWidth fontst s)) str         p' <- printStrings p gc fontst 1 strWithLenth          -- copy the pixmap with the new string to the window.         io $ copyArea dpy p' win gc  -              (fromIntegral (xPos config))  -              (fromIntegral (yPos config))  -              (fromIntegral (width config))  -              (fromIntegral (height config)) 0 0 +              (fi (xPos config))  +              (fi (yPos config))  +              (fi (width config))  +              (fi (height config)) 0 0         -- free up everything (we do not want to leak memory!)         io $ freeFont dpy fontst         io $ freeGC dpy gc @@ -149,15 +149,15 @@ printStrings p gc fontst offs sl@((s,c,l):xs) =         st <- get         let (_,asc,_,_) = textExtents fontst s             totSLen = foldr (\(_,_,len) -> (+) len) 0 sl -           valign = (fromIntegral (height config) + fromIntegral asc) `div` 2 -           remWidth = fromIntegral (width config) - fromIntegral totSLen +           valign = (fi (height config) + fi asc) `div` 2 +           remWidth = fi (width config) - fi totSLen             offset = case (align config) of                        "center" -> (remWidth + offs) `div` 2                        "right" -> remWidth - 1                        "left" -> offs                        _ -> offs         fgcolor <- io $ initColor (display st) c -       bgcolor  <-  io $ initColor (display st) (bgColor config) +       bgcolor <- io $ initColor (display st) (bgColor config)         io $ setForeground (display st) gc fgcolor         io $ setBackground (display st) gc bgcolor         io $ drawImageString (display st) p gc offset valign s @@ -259,3 +259,7 @@ tenthSeconds s | s >= x = do threadDelay y                 | otherwise = threadDelay (s * 100000)                 where y = (maxBound :: Int)                       x = y `div` 100000 + +-- | Short-hand for 'fromIntegral' +fi :: (Integral a, Num b) => a -> b +fi = fromIntegral | 
