vcl-styles-utils icon indicating copy to clipboard operation
vcl-styles-utils copied to clipboard

Wrong item selected when using a scrolled popup menu

Open Daniel-Tr opened this issue 4 years ago • 3 comments

  • Compiled with Delphi 10.4.1 (latest)
  • Running on Windows 10 20H2 (latest)
  • Show a themed context menu that contains more elements than possible to show on the screen at once
  • Use the mouse to click the buttons to scroll up/down
  • Click on an element
  • Issue: A wrong element becomes executed/selected.

It seems like function TSysPopupStyleHook.GetItemClicked does not take the current offset into account. It works, when navigating the list with the keyboard only.

Daniel-Tr avatar Feb 19 '21 13:02 Daniel-Tr

I also experience this issue. So I'm bumping this. Has anyone found a solution yet?

tweibert avatar Aug 11 '22 14:08 tweibert

Hello, we worked around the issue with a detours hack and insert menu breaks and make long menus multicolumn... feels also better for me instead of scrolling through long popup's . If this is a solution for you I can post the code...

WeberAndre avatar Aug 11 '22 17:08 WeberAndre

Thanks, @WeberAndre - this is actually a very good idea! I changed my code so that Break := mbBreak is set on every 20th or so TMenuItem. It's even more convenient to use now.

Disclaimer: I know that popup menus shouldn't have so many items anway, but this particular one is generated dynamically from the user's configuration/database, and we have a very small number of users which happen to have an unusually large number of items in their configuration.

tweibert avatar Aug 12 '22 09:08 tweibert