Author: rinrab
Date: Fri Apr 10 10:14:43 2026
New Revision: 1932956
Log:
svnbrowse: When going up a directory, select the recently visited node in the
list.
* subversion/svnbrowse/model.c
(svn_browse__model_go_up): Loop through all items in the list to find the
node with the same matching name as the name we obtained from
svn_relpath_split(). In case if no items were found with this name (which is
possible as it could be deleted by now), just select the first element.
* subversion/svnbrowse/svnbrowse.c
(view_on_event): Center the view after executing go_up action; The exact same
code as in 'z' handling.
Modified:
subversion/trunk/subversion/svnbrowse/model.c
subversion/trunk/subversion/svnbrowse/svnbrowse.c
Modified: subversion/trunk/subversion/svnbrowse/model.c
==============================================================================
--- subversion/trunk/subversion/svnbrowse/model.c Fri Apr 10 10:01:25
2026 (r1932955)
+++ subversion/trunk/subversion/svnbrowse/model.c Fri Apr 10 10:14:43
2026 (r1932956)
@@ -165,10 +165,27 @@ svn_browse__model_go_enter(svn_browse__m
svn_error_t *
svn_browse__model_go_up(svn_browse__model_t *model, apr_pool_t *scratch_pool)
{
- const char *new_url = svn_relpath_dirname(model->current->relpath,
- scratch_pool);
- return svn_error_trace(svn_browse__model_enter_path(model, new_url,
- scratch_pool));
+ const char *dirpath, *name;
+ int i;
+
+ svn_relpath_split(&dirpath, &name, model->current->relpath, scratch_pool);
+
+ SVN_ERR(svn_browse__model_enter_path(model, dirpath, scratch_pool));
+
+ /* find previously visited node in the list to select it as we go a dir up */
+ for (i = 0; i < model->current->list->nelts; i++)
+ {
+ svn_browse__item_t *item = APR_ARRAY_IDX(model->current->list, i,
+ svn_browse__item_t *);
+
+ if (strcmp(item->name, name) == 0)
+ {
+ model->current->selection = i;
+ break;
+ }
+ }
+
+ return SVN_NO_ERROR;
}
svn_error_t *
Modified: subversion/trunk/subversion/svnbrowse/svnbrowse.c
==============================================================================
--- subversion/trunk/subversion/svnbrowse/svnbrowse.c Fri Apr 10 10:01:25
2026 (r1932955)
+++ subversion/trunk/subversion/svnbrowse/svnbrowse.c Fri Apr 10 10:14:43
2026 (r1932956)
@@ -158,6 +158,8 @@ view_on_event(svn_browse__view_t *view,
case '-':
case 'u':
SVN_ERR(svn_browse__model_go_up(view->model, scratch_pool));
+ view->model->current->scroller_offset =
+ view->model->current->selection - scrollsize / 2;
break;
case CTRL('e'):
view->model->current->scroller_offset += 1;