From 5debbd2c24803baf46060cf114d65c6ca1a1ae6f Mon Sep 17 00:00:00 2001 From: trustable-code Date: Sat, 15 Feb 2020 23:49:03 +0100 Subject: Gtk: Update scrollbars after scrollbar size was determined --- src/nigui/private/gtk3/platform_impl.nim | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/nigui/private/gtk3/platform_impl.nim') 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 -- cgit v1.2.3