Bug 579283 - [GTK] Wrong button images in toolbar overflow menu

A Toolbar with SWT.WRAP style will show an extra button with an overflow
menu, whenever where is not enough horizontal space for the entire
toolbar. The overflow menu shows the toolbar buttons for which there is
no space.

In order to display button images in the overflow menu (there are none
with GTK3, when using a surface for the button image), SWT creates a
menu item proxy. This proxy is unfortunately not updated on button image
changes (either during enabled state change or explicit image changes
from client code). So the images of the overflow buttons are not
updated.

This change ensures the correct image is used when creating the menu
item proxy. The proxy is already re-created on image, text and tooltip
changes.

The change also cleans up signal handling for overflow menu items,
preventing multiple "activate" handlers.

Change-Id: Id60f02d9bbcb6ce3a6d8bfdcab41a8226b0519bb
Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.swt/+/191967
Tested-by: Platform Bot <platform-bot@eclipse.org>
Reviewed-by: Andrey Loskutov <loskutov@gmx.de>
2 files changed
tree: 472f1f0eba87847bd2a3f32a524b4f0d4e6f589b
  1. bundles/
  2. container/
  3. examples/
  4. features/
  5. local-build/
  6. tests/
  7. .gitattributes
  8. .gitignore
  9. CONTRIBUTING
  10. Jenkinsfile
  11. LICENSE
  12. NOTICE
  13. pom.xml
  14. README.md
README.md

Contributing to SWT

Thanks for your interest in this project.

Developer resources:

See the following description for how to contribute a feature or a bug fix to SWT.

Information regarding source code management, builds, coding standards, and more and be found under the following link.

Contributor License Agreement:

Before your contribution can be accepted by the project, you need to create and electronically sign the Eclipse Foundation Contributor License Agreement (CLA).

Contact:

Contact the project developers via the project's “dev” list.

Search for bugs:

This project uses Bugzilla to track ongoing development and issues.

Create a new bug:

Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!