Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[Bug]: macOS backend reports wrong button for button_release_event #31899

Description

@iccir

Bug summary

Run the attached code with the qtagg as well as the macosx backends.

While the mouse cursor is over the figure, perform the following:

  1. Click mouse. Release mouse
  2. Hold Option: Click mouse. Release mouse.
  3. Hold Control: Click mouse. Release mouse.

Code for reproduction

import matplotlib.pyplot as plt

def on_button_press(event):
    print(f'button press: {event.button}')
def on_button_release(event):
    print(f'button release: {event.button}')

fig = plt.figure()
fig.canvas.mpl_connect('button_press_event',   on_button_press)
fig.canvas.mpl_connect('button_release_event', on_button_release)

plt.show()

Actual outcome

qtagg:

button press: 1
button release: 1
button press: 1
button release: 1
button press: 3
button release: 3

macosx:

button press: 1
button release: 1
button press: 2
button release: 1
button press: 3
button release: 1

Expected outcome

Based on these code comments in _macosx.m:

if (modifier & NSEventModifierFlagControl)
    /* emulate a right-button click */
    button = 3;
else if (modifier & NSEventModifierFlagOption)
    /* emulate a middle-button click */
    button = 2;

I would expect:

button press: 1
button release: 1
button press: 2
button release: 2
button press: 3
button release: 3

However, if alt+click should not result in "middle click", I would expect macosx to match qtagg.

Additional information

No response

Operating system

macOS 14.8.5

Matplotlib Version

dev

Matplotlib Backend

qtagg, macosx

Python version

3.14.5

Jupyter version

No response

Installation

None

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions