From 76a0dc3e2d62f7e3503240df91b3d996c962a0d1 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 16 Mar 2017 00:39:49 +0100 Subject: [PATCH] Fixed a long lasting bug where channels are movable from the spectrum display based on the color (blue) so that WFM could not move. Set a dedicared boolean instead --- plugins/channelrx/demodatv/atvdemodgui.cpp | 1 + sdrbase/dsp/channelmarker.cpp | 3 ++- sdrbase/dsp/channelmarker.h | 4 ++++ sdrbase/gui/glspectrum.cpp | 4 ++-- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/channelrx/demodatv/atvdemodgui.cpp b/plugins/channelrx/demodatv/atvdemodgui.cpp index 7bbba0608..b8d412d6c 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.cpp +++ b/plugins/channelrx/demodatv/atvdemodgui.cpp @@ -230,6 +230,7 @@ ATVDemodGUI::ATVDemodGUI(PluginAPI* objPluginAPI, DeviceSourceAPI *objDeviceAPI, //m_objPluginAPI->addThreadedSink(m_objThreadedChannelizer); m_objChannelMarker.setColor(Qt::white); + m_objChannelMarker.setMovable(false); m_objChannelMarker.setBandwidth(6000000); m_objChannelMarker.setCenterFrequency(0); m_objChannelMarker.setVisible(true); diff --git a/sdrbase/dsp/channelmarker.cpp b/sdrbase/dsp/channelmarker.cpp index 8328dd9c9..a4909cb11 100644 --- a/sdrbase/dsp/channelmarker.cpp +++ b/sdrbase/dsp/channelmarker.cpp @@ -33,7 +33,8 @@ ChannelMarker::ChannelMarker(QObject* parent) : m_sidebands(dsb), m_visible(false), m_highlighted(false), - m_color(m_colorTable[m_nextColor]) + m_color(m_colorTable[m_nextColor]), + m_movable(true) { ++m_nextColor; if(m_colorTable[m_nextColor] == 0) diff --git a/sdrbase/dsp/channelmarker.h b/sdrbase/dsp/channelmarker.h index 66ed138ab..22ea51bf1 100644 --- a/sdrbase/dsp/channelmarker.h +++ b/sdrbase/dsp/channelmarker.h @@ -42,6 +42,9 @@ public: void setColor(const QColor& color); const QColor& getColor() const { return m_color; } + void setMovable(bool movable) { m_movable = movable; } + bool getMovable() const { return m_movable; } + protected: static QRgb m_colorTable[]; static int m_nextColor; @@ -54,6 +57,7 @@ protected: bool m_visible; bool m_highlighted; QColor m_color; + bool m_movable; signals: void changed(); diff --git a/sdrbase/gui/glspectrum.cpp b/sdrbase/gui/glspectrum.cpp index aaee2094a..5d9b14ed0 100644 --- a/sdrbase/gui/glspectrum.cpp +++ b/sdrbase/gui/glspectrum.cpp @@ -1574,7 +1574,7 @@ void GLSpectrum::mouseMoveEvent(QMouseEvent* event) return; } else if(m_cursorState == CSChannelMoving) { Real freq = m_frequencyScale.getValueFromPos(event->x() - m_leftMarginPixmap.width() - 1) - m_centerFrequency; - if(m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getColor()!=Qt::blue) + if(m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getMovable()) m_channelMarkerStates[m_cursorChannel]->m_channelMarker->setCenterFrequency(freq); } @@ -1621,7 +1621,7 @@ void GLSpectrum::mousePressEvent(QMouseEvent* event) m_cursorState = CSChannelMoving; m_cursorChannel = 0; Real freq = m_frequencyScale.getValueFromPos(event->x() - m_leftMarginPixmap.width() - 1) - m_centerFrequency; - if(m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getColor()!=Qt::blue) + if(m_channelMarkerStates[m_cursorChannel]->m_channelMarker->getMovable()) m_channelMarkerStates[m_cursorChannel]->m_channelMarker->setCenterFrequency(freq); return; }