public bool begin(ref bool closed) { if (closed == true) { return(false); } UI.idStack.push(id); if (flags.HasFlag(Flags.Modal)) { makeLastSibling(); } //process the setNextWindow* functions if (UI.setNextWindowPositionCondition != 0) { bool shouldSet = (mySetPositionAllowFlags.HasFlag(UI.setNextWindowPositionCondition)); if (shouldSet && (UI.setNextWindowPositionValue != UI.theInvalidVec2)) { setPosition(UI.setNextWindowPositionValue, UI.setNextWindowPositionCondition); UI.setNextWindowPositionCondition = 0; UI.setNextWindowPositionValue = UI.theInvalidVec2; } } if (UI.setNextWindowSizeCondition != 0) { bool shouldSet = (mySetSizeAllowFlags.HasFlag(UI.setNextWindowSizeCondition)); if (shouldSet && (UI.setNextWindowSizeValue != UI.theInvalidVec2)) { setSize(UI.setNextWindowSizeValue, UI.setNextWindowSizeCondition); UI.setNextWindowSizeCondition = 0; UI.setNextWindowSizeValue = UI.theInvalidVec2; } } //setup the layout for a window beginLayout(Layout.Direction.Vertical); //is this the first time we've begun this window? if (lastFrameActive != UI.frame) { lastFrameActive = UI.frame; active = true; } if (UI.currentWindow != this) { UI.pushWindow(this); } //check for collapsing window if (flags.HasFlag(Flags.TitleBar) && flags.HasFlag(Flags.Collapsable)) { Rect r = titleBarRect; if (UI.myHoveredWindow == this && r.containsPoint(UI.mouse.pos) && UI.mouse.buttons[(int)MouseButton.Left].doubleClicked) { myIsCollapsed = !myIsCollapsed; } } else { myIsCollapsed = false; } //check for moving window UI.keepAliveId(moveId); if (UI.activeId == moveId) { if (UI.mouse.buttonIsDown(MouseButton.Middle) == true) { if (flags.HasFlag(Flags.Movable) == true) { myPosition += UI.mouse.delta; } UI.focusWindow(this); } else { UI.activeId = 0; } } drawWindowBackground(); skipItems = myIsCollapsed; drawWindowForeground(); return(true); }
public bool begin(ref bool closed) { if (closed == true) { return(false); } //is this the first time we've begun this window? if (lastFrameActive != ImGui.frame) { if (flags.HasFlag(Flags.AutoResize)) { //from the previous frame size = myGroupStack.Peek().mySize + ImGui.style.displayWindowPadding; } lastFrameActive = ImGui.frame; active = true; myGroupStack.Peek().myCursorPos = new Vector2(0, titleBarHeight + menuBarHeight); myGroupStack.Peek().mySize = new Vector2(0, 0); myGroupStack.Peek().myLayout = Layout.Vertical; } if (ImGui.currentWindow != this) { ImGui.pushWindow(this); } //process the setNextWindow* functions if (ImGui.setNextWindowPositionCondition != 0) { bool shouldSet = (mySetPositionAllowFlags.HasFlag(ImGui.setNextWindowPositionCondition)); if (shouldSet && (ImGui.setNextWindowPositionValue != ImGui.theInvalidVec2)) { setPosition(ImGui.setNextWindowPositionValue, ImGui.setNextWindowPositionCondition); ImGui.setNextWindowPositionCondition = 0; ImGui.setNextWindowPositionValue = ImGui.theInvalidVec2; } } if (ImGui.setNextWindowSizeCondition != 0) { bool shouldSet = (mySetSizeAllowFlags.HasFlag(ImGui.setNextWindowSizeCondition)); if (shouldSet && (ImGui.setNextWindowSizeValue != ImGui.theInvalidVec2)) { setSize(ImGui.setNextWindowSizeValue, ImGui.setNextWindowSizeCondition); ImGui.setNextWindowSizeCondition = 0; ImGui.setNextWindowSizeValue = ImGui.theInvalidVec2; } } //check for collapsing window if (flags.HasFlag(Flags.TitleBar) && flags.HasFlag(Flags.Collapsable)) { Rect r = titleBarRect; if (ImGui.myHoveredWindow == this && r.containsPoint(ImGui.mouse.pos) && ImGui.mouse.buttonDoubleClicked[(int)MouseButton.Left]) { myIsCollapsed = !myIsCollapsed; } } else { myIsCollapsed = false; } //check for moving window ImGui.keepAliveId(moveId); if (ImGui.activeId == moveId) { if (ImGui.mouse.buttonDown[(int)MouseButton.Middle] == true) { if (flags.HasFlag(Flags.Movable) == true) { myPosition += ImGui.mouse.posDelta; } ImGui.focusWindow(this); } else { ImGui.activeId = 0; } } drawWindowBackground(); skipItems = myIsCollapsed; return(true); }