diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index f5bf56be..75d9fd7f 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -248,7 +248,17 @@ void MainWindow::vfoAddedHandler(VFOManager::VFO* vfo, void* ctx) { double offset = core::configManager.conf["vfoOffsets"][name]; core::configManager.release(); - sigpath::vfoManager.setOffset(name, _this->initComplete ? std::clamp(offset, -_this->bw/2.0, _this->bw/2.0) : offset); + double viewBW = gui::waterfall.getViewBandwidth(); + double viewOffset = gui::waterfall.getViewOffset(); + + double viewLower = viewOffset - (viewBW/2.0); + double viewUpper = viewOffset + (viewBW/2.0); + + double newOffset = std::clamp(offset, viewLower, viewUpper); + + sigpath::vfoManager.setCenterOffset(name, _this->initComplete ? newOffset : offset); + + } void MainWindow::draw() { diff --git a/core/src/signal_path/vfo_manager.cpp b/core/src/signal_path/vfo_manager.cpp index bdefb2f6..6eb26c6e 100644 --- a/core/src/signal_path/vfo_manager.cpp +++ b/core/src/signal_path/vfo_manager.cpp @@ -74,6 +74,10 @@ double VFOManager::VFO::getBandwidth() { return wtfVFO->bandwidth; } +int VFOManager::VFO::getReference() { + return wtfVFO->reference; +} + void VFOManager::VFO::setColor(ImU32 color) { wtfVFO->color = color; } @@ -176,6 +180,13 @@ double VFOManager::getBandwidth(std::string name) { return vfos[name]->getBandwidth(); } +int VFOManager::getReference(std::string name) { + if (vfos.find(name) == vfos.end()) { + return -1; + } + return vfos[name]->getReference(); +} + void VFOManager::setColor(std::string name, ImU32 color) { if (vfos.find(name) == vfos.end()) { return; diff --git a/core/src/signal_path/vfo_manager.h b/core/src/signal_path/vfo_manager.h index 75ae5bf8..bd4e452b 100644 --- a/core/src/signal_path/vfo_manager.h +++ b/core/src/signal_path/vfo_manager.h @@ -22,6 +22,7 @@ public: void setBandwidthLimits(double minBandwidth, double maxBandwidth, bool bandwidthLocked); bool getBandwidthChanged(bool erase = true); double getBandwidth(); + int getReference(); void setColor(ImU32 color); std::string getName(); @@ -50,6 +51,7 @@ public: double getBandwidth(std::string name); void setColor(std::string name, ImU32 color); std::string getName(); + int getReference(std::string name); bool vfoExists(std::string name); void updateFromWaterfall(ImGui::WaterFall* wtf); diff --git a/core/src/version.h b/core/src/version.h index 223edeb3..7d6b458f 100644 --- a/core/src/version.h +++ b/core/src/version.h @@ -1,3 +1,3 @@ #pragma once -#define VERSION_STR "1.0.0_rc3" \ No newline at end of file +#define VERSION_STR "1.0.0_rc4" \ No newline at end of file