mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2024-11-22 19:58:39 -05:00
Better multi-demodulator overlap hover handling
This commit is contained in:
parent
a3bda830a8
commit
80ac3175a3
@ -29,8 +29,8 @@ wxEND_EVENT_TABLE()
|
||||
|
||||
WaterfallCanvas::WaterfallCanvas(wxWindow *parent, int *attribList) :
|
||||
wxGLCanvas(parent, wxID_ANY, attribList, wxDefaultPosition, wxDefaultSize,
|
||||
wxFULL_REPAINT_ON_RESIZE), parent(parent), frameTimer(0), activeDemodulatorBandwidth(0), activeDemodulator(NULL), dragState(
|
||||
WF_DRAG_NONE), nextDragState(WF_DRAG_NONE) {
|
||||
wxFULL_REPAINT_ON_RESIZE), parent(parent), frameTimer(0), activeDemodulatorBandwidth(0), activeDemodulator(NULL), dragState(WF_DRAG_NONE), nextDragState(
|
||||
WF_DRAG_NONE) {
|
||||
|
||||
int in_block_size = BUF_SIZE / 2;
|
||||
int out_block_size = FFT_SIZE;
|
||||
@ -264,18 +264,28 @@ void WaterfallCanvas::mouseMoved(wxMouseEvent& event) {
|
||||
|
||||
for (int i = 0, iMax = demodsHover->size(); i < iMax; i++) {
|
||||
DemodulatorInstance *demod = (*demodsHover)[i];
|
||||
int halfBw = (demod->getParams().bandwidth/2);
|
||||
int freqDiff = (int) demod->getParams().frequency - freqPos;
|
||||
|
||||
int dist = abs((int)demod->getParams().frequency - freqPos);
|
||||
int dist = abs(freqDiff);
|
||||
|
||||
if (dist < near_dist) {
|
||||
activeDemodulator = demod;
|
||||
near_dist = dist;
|
||||
}
|
||||
|
||||
if (dist <= halfBw && dist >= (int)((float)halfBw/(float)1.5)) {
|
||||
int edge_dist = abs(halfBw - dist);
|
||||
if (edge_dist < near_dist) {
|
||||
activeDemodulator = demod;
|
||||
near_dist = edge_dist;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int freqDiff = ((int) activeDemodulator->getParams().frequency - freqPos);
|
||||
|
||||
if (near_dist > (activeDemodulator->getParams().bandwidth / 3)) {
|
||||
if (abs(freqDiff) > (activeDemodulator->getParams().bandwidth / 3)) {
|
||||
SetCursor(wxCURSOR_SIZEWE);
|
||||
|
||||
if (freqDiff > 0) {
|
||||
@ -284,7 +294,6 @@ void WaterfallCanvas::mouseMoved(wxMouseEvent& event) {
|
||||
nextDragState = WF_DRAG_BANDWIDTH_RIGHT;
|
||||
}
|
||||
|
||||
|
||||
mTracker.setVertDragLock(true);
|
||||
mTracker.setHorizDragLock(false);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user