diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 426073a83..5d0b57f0e 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -9,6 +9,7 @@ and this project adheres to http://semver.org/spec/v2.0.0.html[Semantic Versioni == https://github.com/robotframework/RIDE[Unreleased] === Fixed +- Fixed extra scrolling bars in Grid Editor. - Fixed broken directory selection dialog when opening Test Suite directory on first RIDE execution after install. - Fixed disappering Project Explorer tree elements, after editing directory elements (i.e. variable or keyword). - Fixed blank Project Explorer panel when docking. Long time existing issue. diff --git a/README.adoc b/README.adoc index 7e78e2c05..8db91baf8 100644 --- a/README.adoc +++ b/README.adoc @@ -46,7 +46,7 @@ Likewise, the current version of wxPython, is 4.2.5, but RIDE is known to work w `pip install -U robotframework-ride` -(3.9 <= python <= 3.14) Install current development version (**2.2.5dev10**) with: +(3.9 <= python <= 3.14) Install current development version (**2.2.5dev11**) with: `pip install -U https://github.com/robotframework/RIDE/archive/develop.zip` diff --git a/src/robotide/application/CHANGELOG.html b/src/robotide/application/CHANGELOG.html index e3e5a3be8..ecd0c4a08 100644 --- a/src/robotide/application/CHANGELOG.html +++ b/src/robotide/application/CHANGELOG.html @@ -1,6 +1,8 @@ Changelog

_Changelog


All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

_1.1. Fixed

  • +Fixed extra scrolling bars in Grid Editor. +
  • Fixed broken directory selection dialog when opening Test Suite directory on first RIDE execution after install.
  • Fixed disappering Project Explorer tree elements, after editing directory elements (i.e. variable or keyword). diff --git a/src/robotide/application/releasenotes.py b/src/robotide/application/releasenotes.py index 7a10e8888..08a62bd6d 100644 --- a/src/robotide/application/releasenotes.py +++ b/src/robotide/application/releasenotes.py @@ -175,6 +175,7 @@ def set_content(self, html_win, content):

New Features and Fixes Highlights

    +
  • Fixed extra scrolling bars in Grid Editor.
  • Fixed broken directory selection dialog when opening Test Suite directory on first RIDE execution after install.
  • Fixed disappering Project Explorer tree elements, after editing directory elements (i.e. variable or keyword).
  • Fixed blank Project Explorer panel when docking. Long time existing issue.
  • diff --git a/src/robotide/editor/__init__.py b/src/robotide/editor/__init__.py index bb9f6f710..62100f51c 100644 --- a/src/robotide/editor/__init__.py +++ b/src/robotide/editor/__init__.py @@ -194,10 +194,10 @@ def on_file_deleted(self, message): self._create_editor() -class _EditorTab(wx.ScrolledWindow): +class _EditorTab(wx.Panel): def __init__(self, plugin): - wx.ScrolledWindow.__init__(self, plugin.notebook, style=wx.SUNKEN_BORDER) + wx.Panel.__init__(self, parent=plugin.notebook, style=wx.SUNKEN_BORDER) self.plugin = plugin self.sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(self.sizer) diff --git a/src/robotide/editor/editors.py b/src/robotide/editor/editors.py index 55d0fc578..8d462f863 100644 --- a/src/robotide/editor/editors.py +++ b/src/robotide/editor/editors.py @@ -193,7 +193,7 @@ def _collabsible_changed(self, event=None): self.EnableScrolling(True, True) self.Refresh() self.Parent.GetSizer().Layout() - self.Parent.EnableScrolling(True, True) + # self.Parent.EnableScrolling(True, True) self.Parent.Refresh() if event: event.Skip() diff --git a/src/robotide/ui/mainframe.py b/src/robotide/ui/mainframe.py index 8d81ee8bf..25539b5ee 100644 --- a/src/robotide/ui/mainframe.py +++ b/src/robotide/ui/mainframe.py @@ -296,19 +296,25 @@ def _init_ui(self): """ # DEBUG: self.leftpanel = wx.Panel(self, name="left_panel", size = (275, 250)) if new_ui: # Only when creating UI we add panes - # Tree is always created here - self.tree = Tree(self, self.actions, self._application.settings) + # Tree is always created here, inside a plain panel. AUI must manage the holder and + # never the Tree itself: docking a floating pane reparents the managed window, and a + # reparented wx.ScrolledWindow (which CustomTreeCtrl is) stops receiving paint events + # on wxGTK, leaving a correctly sized but permanently blank panel. The Files pane uses + # the same idiom (FileExplorer is a wx.Panel wrapping its tree_ctrl). + self.tree_holder = wx.Panel(self) + self.tree = Tree(self.tree_holder, self.actions, self._application.settings) self.tree.SetMinSize(wx.Size(275, 250)) self.tree.SetFont(wx.Font(self.fontinfo)) - # self.leftpanel.Bind(wx.EVT_SIZE, self.tree.OnSize) - # self.aui_mgr.AddPane(self.leftpanel, aui.AuiPaneInfo().Name("left_panel").Caption("left_panel").Left()) + tree_sizer = wx.BoxSizer(wx.VERTICAL) + tree_sizer.Add(self.tree, 1, wx.EXPAND) + self.tree_holder.SetSizer(tree_sizer) + self.tree_holder.SetMinSize(wx.Size(275, 250)) # DEBUG: Next was already called from application.py # print(f"DEBUG: mainframe.py RideFrame NEW UI tree caption {_('Test Suites')}") - self.aui_mgr.AddPane(self.tree, + self.aui_mgr.AddPane(self.tree_holder, aui.AuiPaneInfo().Name("tree_content").Caption(_('Test Suites')).CloseButton(True) .LeftDockable(True) ) # DEBUG: remove .CloseButton(False) when restore is fixed - # DEBUG: self.aui_mgr.GetPane(self.tree).DestroyOnClose() # TreePlugin will manage showing the Tree self.actions.register_actions(action_info_collection(_menudata, self, data_nt=self._menudata_nt, container=self.tree)) @@ -502,14 +508,16 @@ def OnFloatDock(self, event): # panelabel = event.pane.caption etype = event.GetEventType() # strs = "Pane %s "%panelabel + # Only the persisted docked/floating state is recorded here. The tree keeps its nodes and + # repaints by itself across the transition, so rebuilding it would just discard the current + # selection; and calling into the AUI manager from these events re-enters its own drag + # handling. if etype == aui.wxEVT_AUI_PANE_FLOATING: # strs += "is about to be floated" if event.pane.name == "file_manager": self.filemgr.update_tree() elif event.pane.name == "tree_content": self._application.treeplugin.set_float_docked(False) - self._application.treeplugin.on_show_tree(None) - self.tree.refresh_view() # elif etype == aui.wxEVT_AUI_PANE_FLOATED: # strs += "has been floated" elif etype == aui.wxEVT_AUI_PANE_DOCKING: @@ -518,8 +526,6 @@ def OnFloatDock(self, event): self.filemgr.update_tree() elif event.pane.name == "tree_content": self._application.treeplugin.set_float_docked(True) - self._application.treeplugin.on_show_tree(None) - self.tree.refresh_view() # elif etype == aui.wxEVT_AUI_PANE_DOCKED: # strs += "has been docked" # print("DEBUG: " + strs + "\n") diff --git a/src/robotide/version.py b/src/robotide/version.py index 2b90747b2..26b88895a 100644 --- a/src/robotide/version.py +++ b/src/robotide/version.py @@ -15,5 +15,5 @@ # # Automatically generated by `tasks.py`. -VERSION = 'v2.2.5dev10' +VERSION = 'v2.2.5dev11'