Skip to content

[macOS] Combo allows the Enter press to complete IME to trigger default button #3312

@tmssngr

Description

@tmssngr

Describe the bug
When using the "Japanese - Kana" keyboard layout, a popup with some suggestions may occur. Pressing Enter there should accept the selection to produce some "Japanese characters/words" in the underlying control. Nothing else. However, doing that with an editable Combo pressing Enter also triggers the default button in that shell which should not be possible while a IME popup is still visible.

To Reproduce

  • run this snippet
import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

public class ComboBoxTest {

	public static void main(String[] args) {
		final Display display = new Display();

		final Shell shell = new Shell(display);
		shell.setLayout(new GridLayout(1, false));

		final Combo combo = new Combo(shell, SWT.BORDER);
		combo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));

		final Button button = new Button(shell, SWT.PUSH);
		button.setText("Push me!");
		button.setLayoutData(new GridData(SWT.END, SWT.FILL, false, false));
		shell.setDefaultButton(button);
		button.addListener(SWT.Selection, event -> System.out.println("Button pressed"));

		shell.setSize(400, 300);
		shell.open();

		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}

		display.dispose();
	}
}
  • select "Japanese - Kana" keyboard layout
  • type some characters, e.g. abc until a popup occurs; press Enter; a blue underline occurs, press Enter again

Expected behavior
The character(s) shown in the popup should be accepted. Only when no IME popup is shown, an Enter press must trigger a default button.

Screenshots
https://github.com/user-attachments/assets/3457ca4d-b6e7-4097-bcfa-ddab9c58c079

Environment:

  1. Select the platform(s) on which the behavior is seen:
  • All OS
  • Windows
  • Linux
  • macOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions