Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,52 @@
|
|||
import Graphics.UI.Gtk
|
||||
import Control.Monad (when)
|
||||
import Control.Monad.Trans (liftIO)
|
||||
|
||||
maximumWindowDimensions :: IO ()
|
||||
maximumWindowDimensions = do
|
||||
-- initialize the internal state of the GTK toolkit
|
||||
initGUI
|
||||
-- create a window
|
||||
window <- windowNew
|
||||
-- quit the application when the window is closed
|
||||
on window objectDestroy mainQuit
|
||||
-- query the size of the window when its dimensions change
|
||||
on window configureEvent printSize
|
||||
-- get the screen the window will be drawn upon
|
||||
screen <- windowGetScreen window
|
||||
-- get the size of the screen
|
||||
x <- screenGetWidth screen
|
||||
y <- screenGetHeight screen
|
||||
-- print the dimensions of the screen
|
||||
putStrLn ("The screen is " ++ show x ++ " pixels wide and " ++
|
||||
show y ++ " pixels tall for an undecorated fullscreen window.")
|
||||
-- maximize the window and show it. printSize will then be called
|
||||
windowMaximize window
|
||||
widgetShowAll window
|
||||
-- run the main GTK loop.
|
||||
-- close the window manually.
|
||||
mainGUI
|
||||
|
||||
-- On my Xfce4 desktop, the configure_event is called three times when a
|
||||
-- top level window is maximized. The first time, the window size
|
||||
-- returned is the size prior to maximizing, and the last two times
|
||||
-- it is the size after maximizing.
|
||||
-- If the window is (un)maximized manually, the size returned is always
|
||||
-- the size of the unmaximized window.
|
||||
-- That means: either GTK or Xfce4 does not handle window maximization
|
||||
-- correctly, or the GTK bindings for Haskell are buggy, or there is an
|
||||
-- error in this program.
|
||||
|
||||
printSize :: EventM EConfigure Bool
|
||||
printSize = do
|
||||
-- get the window that has been resized
|
||||
w <- eventWindow
|
||||
-- is the window maximized?
|
||||
s <- liftIO $ drawWindowGetState w
|
||||
when (WindowStateMaximized `elem` s) $ do
|
||||
-- get the size of the window that has been resized
|
||||
(x, y) <- eventSize
|
||||
-- print the dimensions out
|
||||
liftIO $ putStrLn ("The inner window region is now " ++ show x ++
|
||||
" pixels wide and " ++ show y ++ " pixels tall.")
|
||||
return True
|
||||
Loading…
Add table
Add a link
Reference in a new issue