summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/nigui.nim13
-rwxr-xr-xsrc/nigui/private/gtk3/platform_impl.nim11
2 files changed, 19 insertions, 5 deletions
diff --git a/src/nigui.nim b/src/nigui.nim
index 3529965..b70d5b0 100755
--- a/src/nigui.nim
+++ b/src/nigui.nim
@@ -1044,7 +1044,9 @@ proc triggerRelayout(window: Window)
method destroy(control: Control) {.base, locks: "unknown".}
-proc triggerRelayout(control: Control)
+method triggerRelayout(control: Control)
+
+method triggerRelayoutDownwards(control: Control)
proc triggerRelayoutIfModeIsAuto(control: Control)
@@ -1699,7 +1701,7 @@ method parentWindow(control: Control): WindowImpl =
else:
result = control.parentControl.parentWindow
-proc triggerRelayout(control: Control) =
+method triggerRelayout(control: Control) =
var con = control
while con.parentControl != nil:
con = con.parentControl
@@ -1709,6 +1711,9 @@ proc triggerRelayout(control: Control) =
control.parentControl.triggerRelayout()
control.realignChildControls()
+method triggerRelayoutDownwards(control: Control) =
+ control.triggerRelayout()
+
proc triggerRelayoutIfModeIsAuto(control: Control) =
if control.widthMode == WidthMode_Auto or control.heightMode == HeightMode_Auto:
control.triggerRelayout()
@@ -2083,6 +2088,10 @@ method realignChildControls(container: Container) =
innerHeight = container.height
container.updateInnerSize(innerWidth - padding.left - padding.right - container.xScrollbarSpace, innerHeight - padding.top - padding.bottom - container.yScrollbarSpace)
+method triggerRelayoutDownwards(container: Container) =
+ for control in container.childControls:
+ control.triggerRelayoutDownwards()
+
method `onDraw=`(container: ContainerImpl, callback: DrawProc) = raiseError("ContainerImpl does not allow onDraw.")
diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim
index 7f17bf2..c3df5f7 100755
--- a/src/nigui/private/gtk3/platform_impl.nim
+++ b/src/nigui/private/gtk3/platform_impl.nim
@@ -781,6 +781,9 @@ proc pMainScrollbarDraw(widget: pointer, cr: pointer, data: pointer): Gboolean {
gtk_widget_get_allocation(scrollbar, allocation)
gtk_scrolled_window_set_policy(widget, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC)
fScrollbarSize = allocation.height
+ for window in windowList:
+ if window.control != nil:
+ window.control.triggerRelayoutDownwards()
proc pWindowStateEventSignal(widget: pointer, event: var GdkEventWindowState, user_data: pointer): Gboolean {.cdecl.} =
let window = cast[WindowImpl](user_data)
@@ -901,6 +904,10 @@ method `iconPath=`(window: WindowImpl, iconPath: string) =
method pUpdateScrollBar(control: ControlImpl) {.base.}
+method triggerRelayout(control: ControlImpl) =
+ procCall control.Control.triggerRelayout()
+ control.pUpdateScrollBar()
+
proc pControlDrawSignal(widget: pointer, cr: pointer, data: pointer): Gboolean {.cdecl.} =
let control = cast[ControlImpl](data)
@@ -1226,9 +1233,7 @@ method pUpdateScrollBar(container: ContainerImpl) =
return
if fScrollbarSize == -1:
- return
-
- # echo "container.pUpdateScrollBar"
+ return
container.fXScrollEnabled = false
container.fYScrollEnabled = false