@@ -1847,7 +1847,7 @@ - (void)setFrameSize: (NSSize)size
18471847 [m_panel_handle setFloatingPanel: [NSApp isActive ]];
18481848 else
18491849 [m_window_handle setLevel: t_window_level];
1850- [m_window_handle setOpaque: m_mask == nil ];
1850+ [m_window_handle setOpaque: m_is_opaque && m_mask == nil ];
18511851 [m_window_handle setHasShadow: m_has_shadow];
18521852 if (!m_has_zoom_widget)
18531853 [[m_window_handle standardWindowButton: NSWindowZoomButton] setEnabled: NO ];
@@ -1883,12 +1883,12 @@ - (void)setFrameSize: (NSSize)size
18831883 if (m_changes . has_shadow_changed)
18841884 [m_window_handle setHasShadow: m_has_shadow];
18851885
1886- if (m_changes . mask_changed)
1886+ if (m_changes . mask_changed || m_changes . is_opaque_changed )
18871887 {
18881888 // MW-2014-07-29: [ Bug 12997 ]] Make sure we invalidate the whole window when
18891889 // the mask changes.
18901890 [[m_window_handle contentView ] setNeedsDisplay: YES ];
1891- [m_window_handle setOpaque: m_mask == nil ];
1891+ [m_window_handle setOpaque: m_is_opaque && m_mask == nil ];
18921892 if (m_has_shadow)
18931893 m_shadow_changed = true ;
18941894 }
@@ -2051,7 +2051,11 @@ bool MCMacDoUpdateRegionCallback(void *p_context, const MCRectangle &p_rect)
20512051{
20522052 // If the shadow has changed (due to the mask changing) we must disable
20532053 // screen updates otherwise we get a flicker.
2054- if (m_shadow_changed && m_has_shadow)
2054+ // IM-2015-02-23: [[ WidgetPopup ]] Assume shadow changes when redrawing a non-opaque widget
2055+ bool t_shadow_changed;
2056+ t_shadow_changed = (m_shadow_changed || !m_is_opaque) && m_has_shadow;
2057+
2058+ if (t_shadow_changed)
20552059 NSDisableScreenUpdates ();
20562060
20572061 // Mark the bounding box of the dirty region for needing display.
@@ -2064,7 +2068,7 @@ bool MCMacDoUpdateRegionCallback(void *p_context, const MCRectangle &p_rect)
20642068 [m_view displayIfNeeded ];
20652069
20662070 // Re-enable screen updates if needed.
2067- if (m_shadow_changed && m_has_shadow )
2071+ if (t_shadow_changed )
20682072 {
20692073 // MW-2014-06-11: [[ Bug 12495 ]] Turn the shadow off and on to force recaching.
20702074 [m_window_handle setHasShadow: NO ];
0 commit comments