Fix CutterSeekable isSynchronized() and signal on de-syncing (#1121)

Also fixes incorrect "(unsynced)" in the graph widget's title.
This commit is contained in:
Florian Märkl 2019-01-20 12:19:51 +01:00 committed by GitHub
parent 5a97fd496e
commit d74d30e10f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 6 deletions

View File

@ -16,17 +16,15 @@ CutterSeekable::~CutterSeekable() {}
void CutterSeekable::onCoreSeekChanged(RVA addr) void CutterSeekable::onCoreSeekChanged(RVA addr)
{ {
if (synchronized && widgetOffset != addr) { if (synchronized && widgetOffset != addr) {
synchronized = false; updateSeek(addr, true);
seek(addr);
synchronized = true;
} }
} }
void CutterSeekable::seek(RVA addr) void CutterSeekable::updateSeek(RVA addr, bool localOnly)
{ {
previousOffset = widgetOffset; previousOffset = widgetOffset;
widgetOffset = addr; widgetOffset = addr;
if (synchronized) { if (synchronized && !localOnly) {
Core()->seek(addr); Core()->seek(addr);
} }
@ -51,6 +49,7 @@ RVA CutterSeekable::getOffset()
void CutterSeekable::toggleSynchronization() void CutterSeekable::toggleSynchronization()
{ {
synchronized = !synchronized; synchronized = !synchronized;
onCoreSeekChanged(Core()->getOffset());
} }
bool CutterSeekable::isSynchronized() bool CutterSeekable::isSynchronized()

View File

@ -20,7 +20,7 @@ public:
* In any case, CutterSeekable::seekableSeekChanged is emitted. * In any case, CutterSeekable::seekableSeekChanged is emitted.
* @param addr the location to seek at. * @param addr the location to seek at.
*/ */
void seek(RVA addr); void seek(RVA addr) { updateSeek(addr, false); }
/** /**
* @brief toggleSyncWithCore toggles * @brief toggleSyncWithCore toggles
@ -74,6 +74,12 @@ private:
*/ */
bool synchronized = true; bool synchronized = true;
/**
* @brief internal method for changing the seek
* @param localOnly whether the seek should be updated globally if synchronized
*/
void updateSeek(RVA addr, bool localOnly);
signals: signals:
void seekableSeekChanged(RVA addr); void seekableSeekChanged(RVA addr);