Correctly handle widgets with zero weight
This commit is contained in:
parent
022783f4a7
commit
ddca7c3ec5
1 changed files with 15 additions and 14 deletions
|
@ -30,7 +30,7 @@ import Phi.Phi
|
||||||
import qualified Phi.Types as Phi
|
import qualified Phi.Types as Phi
|
||||||
import qualified Phi.Panel as Panel
|
import qualified Phi.Panel as Panel
|
||||||
import qualified Phi.Widget as Widget
|
import qualified Phi.Widget as Widget
|
||||||
import Phi.Widget (Widget)
|
import Phi.Widget hiding (Display, handleMessage)
|
||||||
import Phi.X11.Atoms
|
import Phi.X11.Atoms
|
||||||
import qualified Phi.Bindings.Util as Util
|
import qualified Phi.Bindings.Util as Util
|
||||||
|
|
||||||
|
@ -39,19 +39,19 @@ data XConfig = XConfig { phiXScreenInfo :: !(Display -> IO [Rectangle])
|
||||||
}
|
}
|
||||||
|
|
||||||
data PhiState w d = (Widget.Widget w d) => PhiState { phiRootImage :: !Surface
|
data PhiState w d = (Widget.Widget w d) => PhiState { phiRootImage :: !Surface
|
||||||
, phiPanels :: ![PanelState w d]
|
, phiPanels :: ![PanelState w d]
|
||||||
, phiRepaint :: !Bool
|
, phiRepaint :: !Bool
|
||||||
, phiShutdown :: !Bool
|
, phiShutdown :: !Bool
|
||||||
, phiShutdownHold :: !Int
|
, phiShutdownHold :: !Int
|
||||||
}
|
}
|
||||||
|
|
||||||
data PanelState w d = (Widget.Widget w d) => PanelState { panelWindow :: !Window
|
data PanelState w d = (Widget.Widget w d) => PanelState { panelWindow :: !Window
|
||||||
, panelPixmap :: !Pixmap
|
, panelPixmap :: !Pixmap
|
||||||
, panelArea :: !Rectangle
|
, panelArea :: !Rectangle
|
||||||
, panelScreenArea :: !Rectangle
|
, panelScreenArea :: !Rectangle
|
||||||
, panelWidget :: !w
|
, panelWidget :: !w
|
||||||
, panelWidgetState :: !d
|
, panelWidgetState :: !d
|
||||||
}
|
}
|
||||||
|
|
||||||
data PhiConfig = PhiConfig { phiPhi :: !Phi
|
data PhiConfig = PhiConfig { phiPhi :: !Phi
|
||||||
, phiPanelConfig :: !Panel.PanelConfig
|
, phiPanelConfig :: !Panel.PanelConfig
|
||||||
|
@ -110,10 +110,11 @@ runPhi xconfig config widget = do
|
||||||
dispmvar <- liftIO $ newMVar disp
|
dispmvar <- liftIO $ newMVar disp
|
||||||
let screenPanels = zip screens panelWindows
|
let screenPanels = zip screens panelWindows
|
||||||
dispvar = Widget.Display dispmvar atoms screenPanels
|
dispvar = Widget.Display dispmvar atoms screenPanels
|
||||||
widgetState <- liftIO $ Widget.initWidget widget phi dispvar
|
widget' = widget <~> separator 0 (if weight widget > 0 then 0 else 1)
|
||||||
|
widgetState <- liftIO $ Widget.initWidget widget' phi dispvar
|
||||||
|
|
||||||
Widget.withDisplay dispvar $ \disp -> do
|
Widget.withDisplay dispvar $ \disp -> do
|
||||||
panels <- mapM (\(screen, window) -> createPanel disp window widget widgetState screen) screenPanels
|
panels <- mapM (\(screen, window) -> createPanel disp window widget' widgetState screen) screenPanels
|
||||||
|
|
||||||
forM_ panels $ \panel -> do
|
forM_ panels $ \panel -> do
|
||||||
setPanelProperties disp panel
|
setPanelProperties disp panel
|
||||||
|
|
Reference in a new issue