Skip to content

Commit 70f61c3

Browse files
committed
Ignore FilterUI expander interaction on overlapping dropdown
1 parent a10073b commit 70f61c3

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

OpenBCI_GUI/FilterUI.pde

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ class FilterUIPopup extends PApplet implements Runnable {
8888
private int expanderLineTwoStart;
8989
private int[] expanderTriangleXYCollapsed = new int[6];
9090
private int[] expanderTriangleXYExpanded = new int[6];
91+
private boolean ignoreExpanderInteraction = false;
92+
List<controlP5.ScrollableList> cp5ElementsToCheck = new ArrayList<controlP5.ScrollableList>();
9193

9294
DecimalFormat df = new DecimalFormat("#.0");
9395

@@ -206,10 +208,12 @@ class FilterUIPopup extends PApplet implements Runnable {
206208
rect(0, 0, width, headerHeight);
207209

208210
// Draw Channel Expander
211+
lockExpanderOnOverlapCheck(cp5ElementsToCheck);
209212
expanderIsHover = mouseY > expanderY - expanderH/2
210213
&& mouseX < expanderX + expanderW
211214
&& mouseY < expanderY + expanderH/2
212-
&& mouseX > expanderX;
215+
&& mouseX > expanderX
216+
&& !ignoreExpanderInteraction;
213217
color expanderColor = expanderIsHover ? OPENBCI_BLUE : color(102);
214218
int[] triXY = filterSettings.values.filterChannelSelect == FilterChannelSelect.ALL_CHANNELS ?
215219
expanderTriangleXYCollapsed :
@@ -327,6 +331,8 @@ class FilterUIPopup extends PApplet implements Runnable {
327331
// Create header objects last so they always draw on top!
328332
bfGlobalFilterDropdown = createDropdown("filter", -1, headerObjX[1], headerObjY, headerObjWidth, filterSettings.values.brainFlowFilter, BFFilter.values());
329333
bfEnvironmentalNoiseDropdown = createDropdown("environmentalFilter", -1, headerObjX[3], headerObjY, headerObjWidth - 10, filterSettings.values.globalEnvFilter, GlobalEnvironmentalFilter.values());
334+
cp5ElementsToCheck.add(bfGlobalFilterDropdown);
335+
cp5ElementsToCheck.add(bfEnvironmentalNoiseDropdown);
330336

331337
updateChannelCp5Objects();
332338
arrangeAllObjectsXY();
@@ -910,13 +916,15 @@ class FilterUIPopup extends PApplet implements Runnable {
910916
filterTypeDropdowns[chan] = createDropdown("filterType"+chan, chan, lg_spacer*4 + textfieldWidth*3, headerHeight*2 + sm_spacer*(chan+2) + uiObjectHeight*(chan+1), typeDropdownWidth, filterSettings.values.masterBandPassFilterType, BrainFlowFilterType.values());
911917
}
912918
masterFilterTypeDropdown = createDropdown("masterFilterTypeDropdown", -1, lg_spacer*4 + textfieldWidth*3, headerHeight*2 + sm_spacer, typeDropdownWidth, filterSettings.values.masterBandPassFilterType, BrainFlowFilterType.values());
919+
cp5ElementsToCheck.add(masterFilterTypeDropdown);
913920
}
914921

915922
private void createOrderDropdowns() {
916923
for (int chan = filterSettings.getChannelCount() - 1; chan >= 0; chan--) {
917924
filterOrderDropdowns[chan] = createDropdown("filterOrder"+chan, chan, lg_spacer*5 + textfieldWidth*3 + typeDropdownWidth, headerHeight*2 + sm_spacer*(chan+2) + uiObjectHeight*(chan+1), orderDropdownWidth, filterSettings.values.masterBandPassFilterOrder, BrainFlowFilterOrder.values());
918925
}
919926
masterFilterOrderDropdown = createDropdown("masterFilterOrderDropdown", -1, lg_spacer*5 + textfieldWidth*3 + typeDropdownWidth, headerHeight*2 + sm_spacer, orderDropdownWidth, filterSettings.values.masterBandPassFilterOrder, BrainFlowFilterOrder.values());
927+
cp5ElementsToCheck.add(masterFilterOrderDropdown);
920928
}
921929

922930
private void createFilterSettingsSaveButton(String name, String text, int _x, int _y, int _w, int _h) {
@@ -1029,4 +1037,18 @@ class FilterUIPopup extends PApplet implements Runnable {
10291037
private void checkIfExpanderWasClicked() {
10301038
setUItoChannelMode(filterSettings.values.filterChannelSelect);
10311039
}
1040+
1041+
private void lockExpanderOnOverlapCheck(List<controlP5.ScrollableList> listOfControllers) {
1042+
for (controlP5.ScrollableList c : listOfControllers) {
1043+
if (c == null) {
1044+
continue; //Gracefully skip over a controller if it is null
1045+
}
1046+
if (c.isOpen()) {
1047+
ignoreExpanderInteraction = true;
1048+
return;
1049+
} else {
1050+
ignoreExpanderInteraction = false;
1051+
}
1052+
}
1053+
}
10321054
}

0 commit comments

Comments
 (0)