From 9afb1a6a5e652519758e467a630b4a636a7850e2 Mon Sep 17 00:00:00 2001 From: ChrisRfr Date: Thu, 29 Jan 2026 14:19:46 +0100 Subject: [PATCH] Less resize on splitters changes UpdateSourceContainer() on splitters changes only if there is a real change in the splitters positions. For fewer processes, resizing, redraw. However, wouldn't it be better if, in the Gadget Library, only Splitter events with a real change of status (position) were processed? --- PureBasicIDE/UserInterface.pb | 57 +++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 13 deletions(-) diff --git a/PureBasicIDE/UserInterface.pb b/PureBasicIDE/UserInterface.pb index 828a7016..eb71af54 100644 --- a/PureBasicIDE/UserInterface.pb +++ b/PureBasicIDE/UserInterface.pb @@ -1974,6 +1974,7 @@ EndProcedure Procedure MainWindowEvents(EventID) + Static LogSplitterState, ToolsSplitterState Quit = 0 If EventID = #PB_Event_ActivateWindow @@ -2068,24 +2069,54 @@ Procedure MainWindowEvents(EventID) EventGadgetID = EventGadget() Select EventGadgetID - Case #GADGET_ToolsSplitter ; Resize current ToolsPanel Item - If ToolsPanelVisible And CurrentTool - CurrentTool\ResizeHandler(GetPanelWidth(#GADGET_ToolsPanel), GetPanelHeight(#GADGET_ToolsPanel)) + Case #GADGET_ToolsSplitter ; Resize current ToolsPanel Item only if there is a real change in the splitter position (uncomment debug to check) + ToolsSplitterCurrentState = GetGadgetState(#GADGET_ToolsSplitter) + If ToolsSplitterCurrentState <> ToolsSplitterState + ;Debug "ToolsSplitter State: " +#TAB$+ ToolsSplitterCurrentState +#TAB$+ " New: " + ToolsSplitterState + ToolsSplitterState = ToolsSplitterCurrentState + + If ToolsPanelVisible And CurrentTool + CurrentTool\ResizeHandler(GetPanelWidth(#GADGET_ToolsPanel), GetPanelHeight(#GADGET_ToolsPanel)) + EndIf + + If ErrorLogVisible = 0 + UpdateSourceContainer() + EndIf + ;Else + ;Debug "ToolsSplitter State: " +#TAB$+ ToolsSplitterState +#TAB$+ " (No Change)" EndIf - - If ErrorLogVisible = 0 - UpdateSourceContainer() + + Case #GADGET_LogSplitter ; Resize current LogPanel Item only if there is a real change in the splitter position (uncomment debug to check) + LogSplitterCurrentState = GetGadgetState(#GADGET_LogSplitter) + If LogSplitterCurrentState <> LogSplitterState + ;Debug "LogSplitter State: " +#TAB$+ LogSplitterCurrentState +#TAB$+ " New: " + LogSplitterState + LogSplitterState = LogSplitterCurrentState + + If ErrorLogVisible + UpdateSourceContainer() + EndIf + ;Else + ;Debug "LogSplitter State: " +#TAB$+ LogSplitterState +#TAB$+ " (No Change)" EndIf - - Case #GADGET_LogSplitter - If ErrorLogVisible + + Case #GADGET_SourceContainer ; Resize Item only if there is a real change in the splitters positions (uncomment debug to check) + LogSplitterCurrentState = GetGadgetState(#GADGET_LogSplitter) + ToolsSplitterCurrentState = GetGadgetState(#GADGET_ToolsSplitter) + If LogSplitterCurrentState <> LogSplitterState + ;Debug "LogSplitter State: " +#TAB$+ LogSplitterCurrentState +#TAB$+ " New: " + LogSplitterState + LogSplitterState = LogSplitterCurrentState + UpdateSourceContainer() + ElseIf ToolsSplitterCurrentState <> ToolsSplitterState + ;Debug "ToolsSplitter State: " +#TAB$+ ToolsSplitterCurrentState +#TAB$+ " New: " + ToolsSplitterState + ToolsSplitterState = ToolsSplitterCurrentState + + UpdateSourceContainer() + ;Else + ;Debug "ToolsSplitter State: " +#TAB$+ ToolsSplitterState +#TAB$+ " (No Change)" + ;Debug "LogSplitter State: " +#TAB$+ LogSplitterState +#TAB$+ " (No Change)" EndIf - Case #GADGET_SourceContainer - ; only has a resize event - UpdateSourceContainer() - Case #GADGET_FilesPanel Select EventType() Case #PB_EventType_RightClick