The height is read on use from a global cache in
SynthSeparatorUI.style.yThickness. The style field is initialized twice,
once on program launch and again later when a menu separator is
displayed for the first time. Only the second one is relevant; this is
the stacktrace on the java side.

Thread [AWT-EventQueue-0] (Suspended (breakpoint at line 97 in
GTKStyle))      
        GTKStyle.<init>(Font, GTKEngine$WidgetType) line: 97    
        GTKStyleFactory.getStyle(JComponent, Region) line: 103  
        SynthLookAndFeel.getStyle(JComponent, Region) line: 227 
        SynthLookAndFeel.updateStyle(SynthContext, SynthUI) line: 283   
        SynthSeparatorUI.updateStyle(JSeparator) line: 72       
        SynthSeparatorUI.propertyChange(PropertyChangeEvent) line: 185  
        PropertyChangeSupport.fire(PropertyChangeListener[],
PropertyChangeEvent) line: 298  
        PropertyChangeSupport.firePropertyChange(PropertyChangeEvent) line:
291     
        PropertyChangeSupport.firePropertyChange(String, Object, Object) line:
229     
        Menu$DebugSeparator(Component).firePropertyChange(String, Object,
Object) line: 8023      
        Menu$DebugSeparator(JComponent).addNotify() line: 4688  
        JPopupMenu(Container).addNotify() line: 2639    
        JPopupMenu(JComponent).addNotify() line: 4687   
        JPanel(Container).addNotify() line: 2639        
        JPanel(JComponent).addNotify() line: 4687       
        JLayeredPane(Container).addNotify() line: 2639  
        JLayeredPane(JComponent).addNotify() line: 4687 
        JRootPane(Container).addNotify() line: 2639     
        JRootPane(JComponent).addNotify() line: 4687    
        JRootPane.addNotify() line: 750 
        Popup$HeavyWeightWindow(Container).addNotify() line: 2639       
        Popup$HeavyWeightWindow(Window).addNotify() line: 668   
        Popup$HeavyWeightWindow(Window).pack() line: 698        
        Popup$HeavyWeightWindow.show() line: 247        
        PopupFactory$HeavyWeightPopup(Popup).show() line: 105   
        JPopupMenu.getPopup() line: 799 
        JPopupMenu.setVisible(boolean) line: 748        
        JPopupMenu.show(Component, int, int) line: 921  
        JMenu.setPopupMenuVisible(boolean) line: 351    
        JPopupMenu.menuSelectionChanged(boolean) line: 1433     
        MenuSelectionManager.setSelectedPath(MenuElement[]) line: 117   
        BasicMenuUI.appendPath(MenuElement[], MenuElement) line: 223    
        BasicMenuUI.access$200(MenuElement[], MenuElement) line: 49     
        BasicMenuUI$Handler.mousePressed(MouseEvent) line: 463  
        JMenu(Component).processMouseEvent(MouseEvent) line: 6105       
        JMenu(JComponent).processMouseEvent(MouseEvent) line: 3267      
        JMenu(Component).processEvent(AWTEvent) line: 5873      
        JMenu(Container).processEvent(AWTEvent) line: 2105      
        JMenu(Component).dispatchEventImpl(AWTEvent) line: 4469 
        JMenu(Container).dispatchEventImpl(AWTEvent) line: 2163 
        JMenu(Component).dispatchEvent(AWTEvent) line: 4295     
        LightweightDispatcher.retargetMouseEvent(Component, int, MouseEvent)
line: 4461      
        LightweightDispatcher.processMouseEvent(MouseEvent) line: 4122  
        LightweightDispatcher.dispatchEvent(AWTEvent) line: 4055        
        JFrame(Container).dispatchEventImpl(AWTEvent) line: 2149        
        JFrame(Window).dispatchEventImpl(AWTEvent) line: 2478   
        JFrame(Component).dispatchEvent(AWTEvent) line: 4295    
        EventQueue.dispatchEvent(AWTEvent) line: 604    
        EventDispatchThread.pumpOneEventForFilters(int) line: 275       
        EventDispatchThread.pumpEventsForFilter(int, Conditional, EventFilter)
line: 200       
        EventDispatchThread.pumpEventsForHierarchy(int, Conditional, Component)
line: 190       
        EventDispatchThread.pumpEvents(int, Conditional) line: 185      
        EventDispatchThread.pumpEvents(Conditional) line: 177   
        EventDispatchThread.run() line: 138     

GTKStyle(Font userFont, WidgetType widgetType) {
        this.widgetType = widgetType.ordinal();

        String pangoFontName;
        synchronized (sun.awt.UNIXToolkit.GTK_LOCK) {
                xThickness = nativeGetXThickness(this.widgetType);
                yThickness = nativeGetYThickness(this.widgetType);      // <--
                pangoFontName = nativeGetPangoFontName(this.widgetType);
        }

        Font pangoFont = null;
        if (pangoFontName != null) {
                pangoFont = PangoFonts.lookupFont(pangoFontName);
        }
        if (pangoFont != null) {
                this.font = pangoFont;
        } else if (userFont != null) {
                this.font = userFont;
        } else {
                this.font = DEFAULT_FONT;
        }
}

The function nativeGetYThickness is called with parameter 36, an enum
oridnal for POPUP_MENU_SEPARATOR.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to