Author Topic: Scenario where TabSession cannot be closed  (Read 1276 times)

Lob

  • Newbie
  • *
  • Posts: 6
    • View Profile
Scenario where TabSession cannot be closed
« on: April 16, 2020, 17:29:10 »
If Multi Commander is closed while a TabSession is open, the TabSession re-opens on startup (which is fine). Unfortunately, after doing so, "File > Tab Sessions > Close Current TabSession" has the effect of re-loading that same tab session (I'd imagine because it's loading the auto-saved session information from when the program was last closed).

As far as I can tell, this makes it (nearly) impossible to get back into a state outside of tab sessions, which also prevents the most recent tab layout from being dynamically saved and re-opened upon program start.

The only workaround I've found once in this state is to delete all saved TabSessions. To avoid this state, I must always remember to use "File > Tab Sessions > Close Current TabSession" before exiting. I'd imagine that disabling the save on exit setting would prevent this behavior, but I'd like to keep that setting enabled.

I'm currently running MultiCommander v9.6.1 (Build 2582) (64 bit).
« Last Edit: April 16, 2020, 19:34:32 by Lob »

Lob

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: Scenario where TabSession cannot be closed
« Reply #1 on: May 14, 2020, 23:02:11 »
Is this a bug, or am I doing something wrong? Here are the steps I'm using to reproduce the issue (now using version 9.7):
  • Open some tabs
  • File > Tab Sessions > Save As... > test > OK
  • File > Tab Sessions > Session #1 : test
  • Close and reopen Multi Commander (TabSession test is loaded automatically)
  • File > Tab Sessions > Close Current TabSession (TabSession does not close)

Lob

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: Scenario where TabSession cannot be closed
« Reply #2 on: October 19, 2020, 21:03:46 »
Bump.

AlanJB

  • Power Member
  • ****
  • Posts: 317
  • VERY old Programmer
    • View Profile
Re: Scenario where TabSession cannot be closed
« Reply #3 on: October 20, 2020, 00:21:48 »
By default MC will open the previous tab session layout.

What settings do you have under Configuration > Core Settings > Startup?

Lob

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: Scenario where TabSession cannot be closed
« Reply #4 on: October 20, 2020, 04:55:49 »
By default MC will open the previous tab session layout.

What settings do you have under Configuration > Core Settings > Startup?

Configuration > Core Settings > Startup:
Autoload last used tab session
"Start minimized" is unchecked

Starting up with the last used tab session behaves as expected; the problem is when I then choose "File > Tab Sessions > Close Current TabSession", the tabsession does not close (bug #1).

This also prevents me from recovering previously remembered tabs that were not saved as part of any session (bug #2) - (I think this might be "Configuration > Explorer Panel settings > Display Save on exit", which I have checked and my tabs are usually remembered).

Do you also get the same behaviors?

AlanJB

  • Power Member
  • ****
  • Posts: 317
  • VERY old Programmer
    • View Profile
Re: Scenario where TabSession cannot be closed
« Reply #5 on: October 20, 2020, 10:50:09 »
I don't get the same behavior.

Why are you closing the tab session?

Mathias (Author)

  • Administrator
  • Elite Member
  • *****
  • Posts: 3671
    • View Profile
    • Multi Commander
Re: Scenario where TabSession cannot be closed
« Reply #6 on: October 20, 2020, 16:47:27 »
Close TabSession will unload current tab session and then reload autoload configuartion. And if you got a TabSession set to autoload it will be reloaded,
Not sure what you expect to happen when you close a tabsession. Close all tabs and not open any new tabs ?
Normally you have many different tab session and you switch between them, Not sure what purpose a 'close tabsession' would solve.

Lob

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: Scenario where TabSession cannot be closed
« Reply #7 on: October 20, 2020, 19:21:02 »
I propose that when a user in a non-tabsession state loads a saved tab session, the previously open non-session tabs get saved to disk. When a tab session is closed, those tabs could be reloaded instead of relying entirely on the previous autoload configuration (which causes the issues described below in bold). I believe this would give a much better experience to users who switch in and out of tab sessions: when closing a tab session, I think it makes sense to always return the user to their previous tabs.

Scenario #1: Without program restart
  • Have non-session tabs open, then load saved tab session.
  • Close tab session. Autoload tabs are restored and I am once again outside any tab session, which allows me to continue to modify these tabs and have them dynamically saved and re-loaded on program stop/start.
Scenario #2: With program restart
  • Have non-session tabs open, then load saved tab session.
  • Close and reopen program.
  • Close tab session. Tab session is effectively not closed, previous tabs are not restored, and I now cannot return to a state outside tab sessions without deleting the current tab session. This does not seem intended.

I now see that Scenario #1 also reloads the autoload configuration (as you pointed out). It would be nice if the previous tabs were restored instead, which would also be addressed by my proposal.

To answer the question on why I am closing TabSessions: I enjoy the dynamic save behavior outside tab sessions. I have tab sessions saved for long-term recurring tasks. I could create a general purpose TabSession, but the tabs would change very frequently and I may forget to always manually save that TabSession before closing the program.
« Last Edit: October 21, 2020, 06:07:57 by Lob »

Mathias (Author)

  • Administrator
  • Elite Member
  • *****
  • Posts: 3671
    • View Profile
    • Multi Commander
Re: Scenario where TabSession cannot be closed
« Reply #8 on: October 21, 2020, 07:35:02 »
I propose that when a user in a non-tabsession state loads a saved tab session, the previously open non-session tabs get saved to disk. When a tab session is closed, those tabs could be reloaded instead of relying entirely on the previous autoload configuration (which causes the issues described below in bold). I believe this would give a much better experience to users who switch in and out of tab sessions: when closing a tab session, I think it makes sense to always return the user to their previous tabs.

Scenario #1: Without program restart
  • Have non-session tabs open, then load saved tab session.
  • Close tab session. Autoload tabs are restored and I am once again outside any tab session, which allows me to continue to modify these tabs and have them dynamically saved and re-loaded on program stop/start.
Scenario #2: With program restart
  • Have non-session tabs open, then load saved tab session.
  • Close and reopen program.
  • Close tab session. Tab session is effectively not closed, previous tabs are not restored, and I now cannot return to a state outside tab sessions without deleting the current tab session. This does not seem intended.

I now see that Scenario #1 also reloads the autoload configuration (as you pointed out). It would be nice if the previous tabs were restored instead, which would also be addressed by my proposal.

To answer the question on why I am closing TabSessions: I enjoy the dynamic save behavior outside tab sessions. I have tab sessions saved for long-term recurring tasks. I could create a general purpose TabSession, but the tabs would change very frequently and I may forget to always manually save that TabSession before closing the program.

Sould like you don't want it to autoload a tabsession at all, If you uncheck that the tabsession will autoload. Would not that solve your case. Because then when you close a tabsession it will return to previous state

Lob

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: Scenario where TabSession cannot be closed
« Reply #9 on: October 21, 2020, 17:57:03 »
Uncheck "Configuration > Explorer Panel settings > Display > Save on exit"? That is behavior I want to keep; I see it as one of the most useful features. I want my tab state to be saved and reloaded on program stop/start, and this works fine until it gets the user stuck in tab sessions. It seems like the current design expects users to operate only within tab sessions or not use them at all. The bug is that, in the scenario I previously described as #2, the user becomes stuck within tab sessions with no way out other than to modify settings or delete the current TabSession.

Personal use cases aside, a user who clicks "Close Current TabSession" certainly wants any result other than the same TabSession being reloaded.

Also, even when opening and closing a TabSession without exiting the program, the previous state that is restored appears to be the set of tabs that was open the last time the program was closed. This could be a very old set of tabs.

I'm proposing that "Close Current TabSession" restores the tabs a user had open when they entered the TabSession experience (I imagine those tabs would have to be persisted separately from the autoload config). This corrects the issue where the UI becomes unable to truly close the current TabSession, and I believe improves the behavior in the case where the program is not restarted.

The user is returned to their previous tab state when opening the program. I think a typical user would similarly expect to be returned to their previous tab state when closing a TabSession. There are two cases where this does not happen:

  • User opens program. Autoload opens their previous tabs (tabs open: 5).
  • User does additional navigation (tabs open: 7).
  • User enters TabSession.
  • User closes TabSession.
  • Only 5 tabs are restored (the tabs from step 1). The most recent set of tabs from step 2 is lost. Proposal: load tabs from step 2.
  • User opens program. Autoload opens their previous tabs (tabs open: 5).
  • User does additional navigation (tabs open: 7).
  • User enters TabSession.
  • User restarts program.
  • User closes TabSession.
  • The same TabSession is restored. "Close Current TabSession" has effectively failed from a user perspective, and all previous state has been lost. Proposal: load tabs from step 2.