Class LinuxPopupMenuCanceler

  • All Implemented Interfaces:
    java.awt.event.ComponentListener, java.awt.event.WindowFocusListener, java.awt.event.WindowListener, java.awt.event.WindowStateListener, java.util.EventListener, javax.swing.event.ChangeListener

    class LinuxPopupMenuCanceler
    extends java.awt.event.WindowAdapter
    implements javax.swing.event.ChangeListener, java.awt.event.ComponentListener
    Cancels (hides) popup menus on Linux.

    On Linux, popups are not hidden under following conditions, which results in misplaced popups:

    • window moved or resized
    • window maximized or restored
    • window iconified
    • window deactivated (e.g. activated other application)
    On Windows and macOS, popups are automatically hidden.

    The implementation is similar to what's done in javax.swing.plaf.basic.BasicPopupMenuUI.MouseGrabber, but only hides popup in some conditions.

    • Field Detail

      • lastPathSelectedPath

        private javax.swing.MenuElement[] lastPathSelectedPath
      • window

        private java.awt.Window window
    • Constructor Detail

      • LinuxPopupMenuCanceler

        LinuxPopupMenuCanceler()
    • Method Detail

      • uninstall

        void uninstall()
      • addWindowListeners

        private void addWindowListeners​(javax.swing.MenuElement selected)
      • removeWindowListeners

        private void removeWindowListeners()
      • cancelPopupMenu

        private void cancelPopupMenu()
      • stateChanged

        public void stateChanged​(javax.swing.event.ChangeEvent e)
        Specified by:
        stateChanged in interface javax.swing.event.ChangeListener
      • windowIconified

        public void windowIconified​(java.awt.event.WindowEvent e)
        Specified by:
        windowIconified in interface java.awt.event.WindowListener
        Overrides:
        windowIconified in class java.awt.event.WindowAdapter
      • windowDeactivated

        public void windowDeactivated​(java.awt.event.WindowEvent e)
        Specified by:
        windowDeactivated in interface java.awt.event.WindowListener
        Overrides:
        windowDeactivated in class java.awt.event.WindowAdapter
      • windowClosing

        public void windowClosing​(java.awt.event.WindowEvent e)
        Specified by:
        windowClosing in interface java.awt.event.WindowListener
        Overrides:
        windowClosing in class java.awt.event.WindowAdapter
      • componentResized

        public void componentResized​(java.awt.event.ComponentEvent e)
        Specified by:
        componentResized in interface java.awt.event.ComponentListener
      • componentMoved

        public void componentMoved​(java.awt.event.ComponentEvent e)
        Specified by:
        componentMoved in interface java.awt.event.ComponentListener
      • componentShown

        public void componentShown​(java.awt.event.ComponentEvent e)
        Specified by:
        componentShown in interface java.awt.event.ComponentListener
      • componentHidden

        public void componentHidden​(java.awt.event.ComponentEvent e)
        Specified by:
        componentHidden in interface java.awt.event.ComponentListener