Don't emit selection update on mouse click event to avoid sending unnecessary events, also only send one type of event per mouse release event. Fix LED box not being updated

This commit is contained in:
Adam Honse
2026-03-29 00:45:45 -05:00
parent c92c4ab2c8
commit df1d9784e3
2 changed files with 20 additions and 5 deletions

View File

@@ -640,6 +640,11 @@ void DeviceView::mouseMoveEvent(QMouseEvent *event)
| Update selection |
\*---------------------------------------------*/
UpdateSelection();
/*---------------------------------------------*\
| Send selection changed signal |
\*---------------------------------------------*/
emit selectionChanged(-1, -1, selected_leds);
}
/*-------------------------------------------------*\
@@ -661,6 +666,7 @@ void DeviceView::mouseReleaseEvent(QMouseEvent* event)
| selection rect |
\*-------------------------------------------------*/
mouse_down = false;
bool signal_sent = false;
selection_rect = selection_rect.normalized();
/*-------------------------------------------------*\
@@ -703,6 +709,8 @@ void DeviceView::mouseReleaseEvent(QMouseEvent* event)
if(rect.contains(event->pos()))
{
SelectZone(zone_idx, ctrl_down);
signal_sent = true;
break;
}
/*-----------------------------------------*\
@@ -724,11 +732,21 @@ void DeviceView::mouseReleaseEvent(QMouseEvent* event)
if(rect.contains(event->pos()))
{
SelectSegment(zone_idx, segment_idx, ctrl_down);
signal_sent = true;
break;
}
}
}
}
/*-------------------------------------------------*\
| Send selection changed signal |
\*-------------------------------------------------*/
if(!signal_sent)
{
emit selectionChanged(-1, -1, selected_leds);
}
/*-------------------------------------------------*\
| Update UI |
\*-------------------------------------------------*/
@@ -1404,9 +1422,4 @@ void DeviceView::UpdateSelection()
| Update UI |
\*-----------------------------------------------------*/
update();
/*-----------------------------------------------------*\
| Send selection changed signal |
\*-----------------------------------------------------*/
emit selectionChanged(-1, -1, selected_leds);
}

View File

@@ -2138,6 +2138,7 @@ void OpenRGBDevicePage::on_DeviceViewBox_selectionChanged(int selected_zone, int
MultipleSelected = false;
SetSelectedZone(true, -1, -1);
ui->LEDBox->setCurrentIndex(0);
}
/*-------------------------------------------------*\
| Handle case where a zone or segment is selected |
@@ -2151,6 +2152,7 @@ void OpenRGBDevicePage::on_DeviceViewBox_selectionChanged(int selected_zone, int
MultipleSelected = false;
SetSelectedZone(false, selected_zone, selected_segment);
ui->LEDBox->setCurrentIndex(0);
}
/*-------------------------------------------------*\
| Handle case where a single LED is selected |