module Manatee.Toolkit.Gtk.Struct where
import Data.Function
import Data.Ord
import Graphics.UI.Gtk.Gdk.DrawWindow (NativeWindowId, fromNativeWindowId, toNativeWindowId)
newtype GWindowId = GWindowId NativeWindowId
instance Show GWindowId where
show = show . fromNativeWindowId . getInternalWindowId
instance Eq GWindowId where
(==) = (==) `on` getInternalWindowId
instance Ord GWindowId where
compare = comparing (fromIntegral . fromNativeWindowId . getInternalWindowId)
instance Read GWindowId where
readsPrec _ str = [(GWindowId (toNativeWindowId id), idStr)
| (id, idStr) <- reads str]
instance Num GWindowId where
(+) = (+) `on` fromIntegral . fromNativeWindowId . getInternalWindowId
(*) = (*) `on` fromIntegral . fromNativeWindowId . getInternalWindowId
abs = abs . fromIntegral . fromNativeWindowId . getInternalWindowId
signum = signum . fromIntegral . fromNativeWindowId . getInternalWindowId
fromInteger = GWindowId . toNativeWindowId
getInternalWindowId :: GWindowId -> NativeWindowId
getInternalWindowId (GWindowId id) = id