mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 21:53:23 +00:00
cleanup: remove Command::inCommand()
This was used by the divelist to check wether a selection change is programmatical or user-initiated. However, since there is only one entry point for programmatical selection changes, this is not needed anymore. Remove it - this removes an inter-module dependency. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
2ad3696230
commit
f43b3f56b2
2 changed files with 0 additions and 58 deletions
|
@ -381,7 +381,6 @@ void DiveListBase::finishWork()
|
||||||
|
|
||||||
void DiveListBase::undo()
|
void DiveListBase::undo()
|
||||||
{
|
{
|
||||||
auto marker = diveListNotifier.enterCommand();
|
|
||||||
initWork();
|
initWork();
|
||||||
undoit();
|
undoit();
|
||||||
finishWork();
|
finishWork();
|
||||||
|
@ -389,7 +388,6 @@ void DiveListBase::undo()
|
||||||
|
|
||||||
void DiveListBase::redo()
|
void DiveListBase::redo()
|
||||||
{
|
{
|
||||||
auto marker = diveListNotifier.enterCommand();
|
|
||||||
initWork();
|
initWork();
|
||||||
redoit();
|
redoit();
|
||||||
finishWork();
|
finishWork();
|
||||||
|
|
|
@ -121,68 +121,12 @@ signals:
|
||||||
// This is necessary, so that the user can't click on the "undo" button and undo
|
// This is necessary, so that the user can't click on the "undo" button and undo
|
||||||
// an unrelated command.
|
// an unrelated command.
|
||||||
void commandExecuted();
|
void commandExecuted();
|
||||||
public:
|
|
||||||
// Desktop uses the QTreeView class to present the list of dives. The layout
|
|
||||||
// of this class gives us a very fundamental problem, as we can not easily
|
|
||||||
// distinguish between user-initiated changes of the selection and changes
|
|
||||||
// that are due to actions of the Command-classes. To solve this problem,
|
|
||||||
// the frontend can use this function to query whether a dive list-modifying
|
|
||||||
// command is currently executed. If this function returns true, the
|
|
||||||
// frontend is supposed to not modify the selection.
|
|
||||||
bool inCommand() const;
|
|
||||||
|
|
||||||
// The following class and function are used by divelist-modifying commands
|
|
||||||
// to signal that they are in-flight. If the returned object goes out of scope,
|
|
||||||
// the command-in-flight status is reset to its previous value. Thus, the
|
|
||||||
// function can be called recursively.
|
|
||||||
class InCommandMarker {
|
|
||||||
DiveListNotifier ¬ifier;
|
|
||||||
bool oldValue;
|
|
||||||
InCommandMarker(DiveListNotifier &);
|
|
||||||
friend DiveListNotifier;
|
|
||||||
public:
|
|
||||||
~InCommandMarker();
|
|
||||||
};
|
|
||||||
|
|
||||||
// Usage:
|
|
||||||
// void doWork()
|
|
||||||
// {
|
|
||||||
// auto marker = diveListNotifier.enterCommand();
|
|
||||||
// ... do work ...
|
|
||||||
// }
|
|
||||||
InCommandMarker enterCommand();
|
|
||||||
private:
|
|
||||||
friend InCommandMarker;
|
|
||||||
bool commandExecuting;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// The DiveListNotifier class has only trivial state.
|
// The DiveListNotifier class has only trivial state.
|
||||||
// We can simply define it as a global object.
|
// We can simply define it as a global object.
|
||||||
extern DiveListNotifier diveListNotifier;
|
extern DiveListNotifier diveListNotifier;
|
||||||
|
|
||||||
// InCommandMarker is so trivial that the functions can be inlined.
|
|
||||||
// TODO: perhaps move this into own header-file.
|
|
||||||
inline DiveListNotifier::InCommandMarker::InCommandMarker(DiveListNotifier ¬ifierIn) : notifier(notifierIn),
|
|
||||||
oldValue(notifier.commandExecuting)
|
|
||||||
{
|
|
||||||
notifier.commandExecuting = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline DiveListNotifier::InCommandMarker::~InCommandMarker()
|
|
||||||
{
|
|
||||||
notifier.commandExecuting = oldValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool DiveListNotifier::inCommand() const
|
|
||||||
{
|
|
||||||
return commandExecuting;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline DiveListNotifier::InCommandMarker DiveListNotifier::enterCommand()
|
|
||||||
{
|
|
||||||
return InCommandMarker(*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline DiveField::DiveField(int flags) :
|
inline DiveField::DiveField(int flags) :
|
||||||
nr((flags & NR) != 0),
|
nr((flags & NR) != 0),
|
||||||
datetime((flags & DATETIME) != 0),
|
datetime((flags & DATETIME) != 0),
|
||||||
|
|
Loading…
Add table
Reference in a new issue