Mojira Archive
MC-259387

Buttons and sliders remain selected after clicking on them

The Bug:

Buttons and sliders remain selected after clicking on them.

This issue did not occur in 1.19.3. It first appeared in 23w03a.

Steps to Reproduce:

  1. Navigate to your video settings.
  2. Click on the "Graphics" button and then move your mouse cursor away from it.
  3. Take note as to whether or not buttons and sliders remain selected after clicking on them.

Observed Behavior:

Buttons and sliders remain selected.

Expected Behavior:

Buttons and sliders would not remain selected, just like how they didn't in 1.19.3.

Code Analysis:

Code analysis by Xander Smith can be found in the duplicate MC-261578:

ContainerEventHandler.java (Mojang mappings, 1.19.4)
@Override
default public boolean mouseClicked(double mouseX, double mouseY, int button) {
    for (GuiEventListener guiEventListener : this.children()) {
        if (!guiEventListener.mouseClicked(mouseX, mouseY, button)) continue;
        this.setFocused(guiEventListener);
        if (button == 0) {
            this.setDragging(true);
        }
        return true;
    }
    return false;
}

Here you can see this.setFocused(guiEventListener) is being invoked on every mouse click. Remember, both Screen and ObjectSelectionList.Entry both implement this interface.

This could be fixed with the following code:

@Override
default public boolean mouseClicked(double mouseX, double mouseY, int button) {
    for (GuiEventListener child : this.children()) {
        if (child.mouseClicked(mouseX, mouseY, button)) {
            if (button == InputConstants.MOUSE_BUTTON_LEFT)
                this.setDragging(true);
            return true;
        }
    }

    return false;
}

However, this would break dragging code as mouseDragged is only passed to the focused element. This could be solved by just iterating through the children like usual, as most mouseDragged implementation have a boolean to check if they are dragging anyway.

Unresolved

[Mod] Avoma

2023-01-24, 10:00 PM

2024-12-10, 01:03 PM

38

19

Confirmed

Normal

Platform

UI

23w04a - 1.21.423w04a, 23w06a, 23w07a, 1.19.4 Pre-release 2, 1.19.4 Release Candidate 1, 1.19.4, 23w12a, 23w13a, 23w14a, 23w16a, 1.20 Pre-release 1, 1.20 Pre-release 4, 1.20 Release Candidate 1, 1.20, 1.20.1, 1.20.2, 1.20.4, 23w51b, 24w05b, 24w09a, 24w10a, 24w14a, 24w20a, 1.21 Pre-Release 2, 1.21, 24w33a, 1.21.1, 1.21.4

-