diff options
Diffstat (limited to 'src/mainwindow.h')
| -rw-r--r-- | src/mainwindow.h | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/src/mainwindow.h b/src/mainwindow.h index d4b0975..87ed171 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -143,8 +143,8 @@ public: /// against a running window means "raise yourself", and a raise is not a /// navigation. The user is looking at something. /// - /// A selector that matches nothing leaves the window on its configured - /// view and names the miss in the status bar. Not an empty result, which + /// A selector that matches nothing leaves the window on the view it was + /// showing and names the miss in the status bar. Not an empty result, which /// makes a stale link look like a broken client; not a refusal, which is /// right for a script and wrong for a desktop launch. /// @@ -758,6 +758,10 @@ private slots: /// drive it through the meta-object. void showTransientStatus(const QString &text); + /// Names a launch selector's miss and puts back the view m_launchView + /// recorded, re-running its query only when the list has since changed. + void reportLaunchMiss(const QString &text); + /// Announces an action that has just been sent, saying so when a sync is /// holding it rather than claiming it landed. /// @@ -1850,6 +1854,41 @@ private: QString m_recoverThreadId; QString m_recoverMessageId; + /// What was on screen before a launch's selectors started changing it, so + /// a miss can put it back (item 200: "the startup view stays and the miss + /// is named"). + /// + /// The bar's text and the query the list was built from are BOTH kept: + /// the scope a re-run needs is read off whether they differ. Equal means + /// the text was already scoped (a filter, or All accounts); different + /// means runQuery() wrapped it in the dropdown's account. + struct LaunchView + { + int accountIndex = -1; + QString queryText; + QString lastQuery; + bool flat = false; + }; + LaunchView m_launchView; + + /// Whether the launch that set m_launchView named an account that exists. + /// Read when a --message resolve lands, which is after applySelectors() + /// has returned: without --account the conversation is looked for in + /// every account, with it the given scope is kept. + bool m_launchAccountGiven = false; + + /// The miss to report if the selector's own thread:<id> query returns no + /// rows. Set AFTER recoverStaleThread(), for the reason the recovery target + /// is, and cleared by runQuery(), so only the selector's query is judged + /// by it and the stale-thread notice and double-click, which share the + /// recovery, keep their behaviour. + QString m_launchMiss; + + /// A miss waiting for the restored view's query to land, since that + /// query's own row count is written to the status bar when it does and + /// would cover a notice shown any earlier. + QString m_launchMissNotice; + /// The thread the pane's current MESSAGE belongs to. /// /// Selecting a message row clears m_currentThreadId (the pane shows one |
