Closed Bug 603793 Opened 14 years ago Closed 13 years ago

Popup menu disappears on Submenu mouse over when using Aero basic on a secondary monitor

Categories

(Core :: Graphics, defect)

x86_64
Windows 7
defect
Not set
normal

Tracking

()

RESOLVED FIXED
Tracking Status
blocking2.0 --- final+

People

(Reporter: Geeknz, Assigned: bas.schouten)

References

Details

(Whiteboard: [hardblocker][has patch])

Attachments

(10 files, 4 obsolete files)

216.35 KB, image/jpeg
Details
22.81 KB, image/png
Details
804.27 KB, image/jpeg
Details
798.99 KB, image/jpeg
Details
58.50 KB, application/octet-stream
Details
27.49 KB, application/octet-stream
Details
3.23 KB, patch
roc
: review+
Details | Diff | Splinter Review
4.97 KB, patch
roc
: review+
Details | Diff | Splinter Review
4.79 KB, patch
bas.schouten
: review+
Details | Diff | Splinter Review
4.56 KB, patch
roc
: review+
Details | Diff | Splinter Review
User-Agent:       Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b8pre) Gecko/20101012 Firefox/4.0b8pre
Build Identifier: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b8pre) Gecko/20101012 Firefox/4.0b8pre

When using mouse over on a menu item that causes a submenu to pop up, the previous menu disappears.
The border shadow of the previous menu still shows.
Moving the mouse back to the previous menu causes any items on that menu moused over to reappear, but any other menus open to disappear.
Moving the mouse over any items in the newly popped up submenu causes the previous menu to reappear.
Moving the mouse outside any currently showing menus causes the previous menu to reappear.

Reproducible: Always

Steps to Reproduce:
1. Open a Menu that contains a submenu item.
2. Mouse over the submenu item.
3. Pause for mouse over delay (approximately 0.5 seconds).
Actual Results:  
Submenu pops up.
Previous menu now disappears, leaving only its border shadow.

Expected Results:  
Submenu pops up.
Previous menu should still be visible.

Does not occur if submenu item is clicked on instead of waiting for mouse over delay.
Attached image Screenshot of bug
Does disabling Hardware Acceleration under Options/Advanced/General and/or setting "layers.accelerate-none" to "true" in about:config help?
If yes, please post the Graphics Info from about:support.
Disabling Hardware Acceleration under Options/Advanced/General appears to resolve the issue.
Graphic Info from about:support :      
          
        
Adapter Description: ATI Radeon HD 3600 Series
Vendor ID: 1002
Device ID: 9598
Adapter RAM: 512
Adapter Drivers: aticfx64 aticfx64 aticfx32 aticfx32 atiumd64 atidxx64 atiumdag atidxx32 atiumdva atiumd6a atitmm64
Driver Version: 8.753.0.0
Driver Date: 7-6-2010
Direct2D Enabled: false
DirectWrite Enabled: false
GPU Accelerated Windows: 0/1
Severity: minor → normal
Component: Menus → Graphics
Product: Firefox → Core
QA Contact: menus → thebes
Version: unspecified → Trunk
Confirmed issue still occurs with updated driver:

Driver Version: 8.771.0.0
Driver Date: 8-25-2010
Multiple reports and as given disabling hardware acceleration helps lets confirm this bug. So far it's Windows 7 only.
Status: UNCONFIRMED → NEW
blocking2.0: --- → ?
Ever confirmed: true
I hope this is easily reproducible for Bas!
Assignee: nobody → bas.schouten
blocking2.0: ? → final+
I have similar problems to this, since I posted in bug 607846 after it was marked duplicate, I'll add the information I added there to here:

My problem is not the exact same same problem. In this bug, the menus only disappear after continuing to the next submenu. Then reappear. For me the menus
never appear in the first place.

I have the same issue shown here:
http://pedromoraes.co.cc/linked/bugminefield.png
 but not the second one(mentioned in bug 607846). The menus which show up wrong are always the same for
me though. I've tried resetting all my settings to default "Minefield" settings
and the issue still appears. 

The problem is fixed when changing gfx.direct2d.disabled to true

Example of the issue, in the View menu, the menus show up properly in Toolbars
and Character Encoding. But only show the outline of the menu and the top-left
corner of it for Sidebars, Zoom, and Page Style.

Here are some screenshots for clarification:
Select Box examples:
https://bugzilla.mozilla.org/attachment.cgi?id=490418
https://bugzilla.mozilla.org/attachment.cgi?id=490419

View > Sidebar example
https://bugzilla.mozilla.org/attachment.cgi?id=490420

I continue to have these issues in today's trunk build as well as in Firefox 4 beta 7. Here's my about:config from November 13, 2010.

Here is my about:support

  Application Basics

        Name
        Firefox

        Version
        4.0b8pre

        User Agent
        Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b8pre) Gecko/20101113
Firefox/4.0b8pre

        Profile Directory

          Open Containing Folder

        Enabled Plugins

          about:plugins

        Build Configuration

          about:buildconfig

  Extensions

        Name

        Version

        Enabled

        ID

        Firebug
        1.5.4
        false
        firebug@software.joehewitt.com

        Rikaichan Japanese-English Dictionary File
        2.01.101002
        false
        rikaichan-jpen@polarcloud.com

        Rikaichan Japanese Names Dictionary File
        2.01.101002
        false
        rikaichan-jpnames@polarcloud.com

        Screengrab
        0.96.3
        false
        {02450954-cdd9-410f-b1da-db804e18c671}

        Rikaichan
        2.01
        false
        {0AA9101C-D3C1-4129-A9B7-D778C6A17F82}

        Web Developer
        1.1.8
        false
        {c45c406e-ab73-11d8-be73-000a95be3b12}

        BetterPrivacy
        1.48.3
        false
        {d40f5e7b-d2cf-4856-b441-cc613eeffbe3}

        User Agent Switcher
        0.7.2
        false
        {e968fc70-8f95-4ab9-9e79-304de2a71ee1}

        Live HTTP headers
        0.16
        false
        {8f8fe09b-0bd3-4470-bc1b-8cad42b8203a}

        Adblock Plus
        1.3.1
        false
        {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}

  Modified Preferences

      Name

      Value

        accessibility.typeaheadfind.flashBar
        0

        browser.places.smartBookmarksVersion
        2

        browser.startup.homepage_override.buildID
        20101113031620

        browser.startup.homepage_override.mstone
        rv:2.0b8pre

        extensions.lastAppVersion
        4.0b8pre

        network.cookie.prefsMigrated
        true

        places.history.expiration.transient_current_max_pages
        128828

        privacy.sanitize.migrateFx3Prefs
        true

  Graphics

        Adapter Description
        NVIDIA GeForce GT 220M

        Vendor ID
        10de

        Device ID
        0654

        Adapter RAM
        1024

        Adapter Drivers
        nvd3dumx,nvwgf2umx,nvwgf2umx nvd3dum,nvwgf2um,nvwgf2um

        Driver Version
        8.17.12.5721

        Driver Date
        6-7-2010

        Direct2D Enabled
        true

        DirectWrite Enabled
        true

      GPU Accelerated Windows
      2/2 Direct3D 10
Can someone confirm this was fixed by the other context menu drawing fixes?
I don't know what other context menu drawing fixes you're referring to, but this is fixed for me in the 4.0b9 2010-12-17 build. Great job guys.

My system info is in comment #8.
Great, this was a dupe of bug 613790 then.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → DUPLICATE
As given by Truth, the fix on bug 613790 hasn't fixed the problem for ATI cards.
Status: RESOLVED → REOPENED
Resolution: DUPLICATE → ---
As per <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=613790#c32">Comment #32 on bug 613790</a> this is not resolved for my configuration. With latest driver:

Adapter Description: ATI Radeon HD 3600 Series
Vendor ID: 1002
Device ID: 9598
Adapter RAM: 512
Adapter Drivers: aticfx64 aticfx64 aticfx32 aticfx32 atiumd64 atidxx64 atiumdag atidxx32 atiumdva atiumd6a atitmm64
Driver Version: 8.801.0.0
Driver Date:
Direct2D Enabled: false
DirectWrite Enabled: false
WebGL Renderer: ATI Technologies Inc. -- ATI Radeon HD 3600 Series       -- 3.3.10362 Compatibility Profile Context
GPU Accelerated Windows: 0/1
Unfortunately, this is still an issue for me as well (NVIDIA DX9 graphics card). Thanks!


  Application Basics

        Name
        Firefox

        Version
        4.0b9pre

        User Agent
        Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b9pre) Gecko/20101220 Firefox/4.0b9pre

        Profile Directory

          Open Containing Folder

        Enabled Plugins

          about:plugins

        Build Configuration

          about:buildconfig

  Extensions

        Name

        Version

        Enabled

        ID

        Status-4-Evar
        2010.11.20.19
        false
        status4evar@caligonstudios.com

        Nightly Tester Tools
        3.0
        false
        {8620c15f-30dc-4dba-a131-7c5d20cf4a29}

        Flagfox
        4.1a4
        true
        {1018e4d6-728f-4b20-ad56-37578a4de76b}

        ColorfulTabs
        4.8.1.2
        true
        {0545b830-f0aa-4d7e-8820-50a4629a56fe}

        Adblock Plus
        1.3.2
        true
        {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}

  Modified Preferences

      Name

      Value

        browser.places.importBookmarksHTML
        false

        browser.places.smartBookmarksVersion
        2

        browser.startup.homepage_override.buildID
        20101220031727

        browser.startup.homepage_override.mstone
        rv:2.0b9pre

        extensions.lastAppVersion
        4.0b9pre

        gfx.font_rendering.directwrite.enabled
        true

        network.cookie.prefsMigrated
        true

        places.history.expiration.transient_current_max_pages
        128827

        privacy.sanitize.migrateFx3Prefs
        true

  Graphics

        Adapter Description
        NVIDIA GeForce 8700M GT

        Vendor ID
        10de

        Device ID
        0409

        Adapter RAM
        512

        Adapter Drivers
        nvd3dumx,nvwgf2umx,nvwgf2umx nvd3dum,nvwgf2um,nvwgf2um

        Driver Version
        8.17.12.5896

        Driver Date
        7-9-2010

        Direct2D Enabled
        true

        DirectWrite Enabled
        true

        WebGL Renderer
        NVIDIA Corporation -- GeForce 8700M GT/PCI/SSE2 -- 3.3.0

      GPU Accelerated Windows
      1/1 Direct3D 10
Hrm, we could consider blacklisting the HD3600 since it's ancient. But the fact it occurs on a random GeForce 8700M is worrying. Could you try updating the driver just to see if it makes a difference?
(In reply to comment #14)
> As per <a
> href="https://bugzilla.mozilla.org/show_bug.cgi?id=613790#c32">Comment #32 on
> bug 613790</a> this is not resolved for my configuration. With latest driver:
> 
> Adapter Description: ATI Radeon HD 3600 Series
> Vendor ID: 1002
> Device ID: 9598
> Adapter RAM: 512
> Adapter Drivers: aticfx64 aticfx64 aticfx32 aticfx32 atiumd64 atidxx64 atiumdag
> atidxx32 atiumdva atiumd6a atitmm64
> Driver Version: 8.801.0.0
> Driver Date:
> Direct2D Enabled: false
> DirectWrite Enabled: false
> WebGL Renderer: ATI Technologies Inc. -- ATI Radeon HD 3600 Series       --
> 3.3.10362 Compatibility Profile Context
> GPU Accelerated Windows: 0/1

I'm assuming this is when you preffed off hardware acceleration and the issue no longer occurred? When this info was captured Hardware Acceleration wasn't enabled.
(In reply to comment #17)
> I'm assuming this is when you preffed off hardware acceleration and the issue
> no longer occurred? When this info was captured Hardware Acceleration wasn't
> enabled.

Correct, it was captured with Hardware Acceleration off.

Turning it back on again changes the following:
Direct2D Enabled: true
DirectWrite Enabled: true
GPU Accelerated Windows: 1/1 Direct3D 10
Is everyone who's experiencing this bug at the moment using Aero Basic?
I'm not using Basic Windows 7 theme. I use Aero.
Hrm, shame, so much for that idea.
Whiteboard: [hard blocker]
Whiteboard: [hard blocker] → [hardblocker]
Anyone on this bug who could talk on IRC for a remote debugging session for this bug?
Status: REOPENED → NEW
I'm seeing the similar behavior on Win7 64 bit. If h/w accel is pref'd off no problem. Also I'm seeing the same behavior on context menu's. Screen caps have been attached.

  Application Basics

        Name
        Firefox

        Version
        4.0b10pre

        User Agent
        Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b10pre) Gecko/20110118 Firefox/4.0b10pre

        Profile Directory

          Open Containing Folder

        Enabled Plugins

          about:plugins

        Build Configuration

          about:buildconfig

  Extensions

        Name

        Version

        Enabled

        ID

        Mass Password Reset
        1.04
        true
        masspasswordreset@johnathan.nightingale

        Update Channel Selector
        1.5
        true
        updatechannel@blueprintit.co.uk

        Pastebin.com Quick Paster
        1.0.4
        true
        upload_text@Pastebin.com

        Microsoft .NET Framework Assistant
        1.2.1
        true
        {20a82645-c095-46ed-80e3-08825760534b}

        Tamper Data
        11.0.1
        true
        {9c51bd27-6ed8-4000-a2bf-36cb95c0c947}

        Bugzilla Tweaks
        1.6
        true
        jid0-qBnIpLfDFa4LpdrjhAC6vBqN20Q@jetpack

        Zend Studio Toolbar
        2.1
        true
        {3c9761ad-a43d-4447-b924-f5d83cb48063}

        AVG Safe Search
        10.0.0.1178
        true
        {1E73965B-8B48-48be-9C8D-68B920ABC1C4}

  Modified Preferences

      Name

      Value

        accessibility.typeaheadfind.flashBar
        0

        browser.history_expire_days.mirror
        180

        browser.places.importBookmarksHTML
        false

        browser.places.smartBookmarksVersion
        2

        browser.startup.homepage
        https://intranet.mozilla.org/Main_Page

        browser.startup.homepage_override.buildID
        20110118030327

        browser.startup.homepage_override.mstone
        rv:2.0b10pre

        browser.tabs.loadInBackground
        false

        extensions.checkCompatibility
        false

        extensions.checkCompatibility.4.0
        false

        extensions.checkCompatibility.4.0b
        false

        extensions.lastAppVersion
        4.0b10pre

        general.useragent.extra.microsoftdotnet
        ( .NET CLR 3.5.30729; .NET4.0E)

        network.cookie.prefsMigrated
        true

        network.protocol-handler.warn-external.dnupdate
        false

        places.history.expiration.transient_current_max_pages
        125515

        places.last_vacuum
        1292878519

        print.print_printer
        Ricoh MP C4000 PS

        print.printer_HP_Color_LaserJet_3800_PS.print_bgcolor
        false

        print.printer_HP_Color_LaserJet_3800_PS.print_bgimages
        false

        print.printer_HP_Color_LaserJet_3800_PS.print_command

        print.printer_HP_Color_LaserJet_3800_PS.print_downloadfonts
        false

        print.printer_HP_Color_LaserJet_3800_PS.print_edge_bottom
        0

        print.printer_HP_Color_LaserJet_3800_PS.print_edge_left
        0

        print.printer_HP_Color_LaserJet_3800_PS.print_edge_right
        0

        print.printer_HP_Color_LaserJet_3800_PS.print_edge_top
        0

        print.printer_HP_Color_LaserJet_3800_PS.print_evenpages
        true

        print.printer_HP_Color_LaserJet_3800_PS.print_footercenter

        print.printer_HP_Color_LaserJet_3800_PS.print_footerleft
        &PT

        print.printer_HP_Color_LaserJet_3800_PS.print_footerright
        &D

        print.printer_HP_Color_LaserJet_3800_PS.print_headercenter

        print.printer_HP_Color_LaserJet_3800_PS.print_headerleft
        &T

        print.printer_HP_Color_LaserJet_3800_PS.print_headerright
        &U

        print.printer_HP_Color_LaserJet_3800_PS.print_in_color
        true

        print.printer_HP_Color_LaserJet_3800_PS.print_margin_bottom
        0.5

        print.printer_HP_Color_LaserJet_3800_PS.print_margin_left
        0.5

        print.printer_HP_Color_LaserJet_3800_PS.print_margin_right
        0.5

        print.printer_HP_Color_LaserJet_3800_PS.print_margin_top
        0.5

        print.printer_HP_Color_LaserJet_3800_PS.print_oddpages
        true

        print.printer_HP_Color_LaserJet_3800_PS.print_orientation
        0

        print.printer_HP_Color_LaserJet_3800_PS.print_pagedelay
        500

        print.printer_HP_Color_LaserJet_3800_PS.print_paper_data
        1

        print.printer_HP_Color_LaserJet_3800_PS.print_paper_height
        11.00

        print.printer_HP_Color_LaserJet_3800_PS.print_paper_size_type
        0

        print.printer_HP_Color_LaserJet_3800_PS.print_paper_size_unit
        0

        print.printer_HP_Color_LaserJet_3800_PS.print_paper_width
        8.50

        print.printer_HP_Color_LaserJet_3800_PS.print_reversed
        false

        print.printer_HP_Color_LaserJet_3800_PS.print_scaling
        1.00

        print.printer_HP_Color_LaserJet_3800_PS.print_shrink_to_fit
        true

        print.printer_HP_Color_LaserJet_3800_PS.print_to_file
        false

        print.printer_HP_Color_LaserJet_3800_PS.print_unwriteable_margin_bottom
        0

        print.printer_HP_Color_LaserJet_3800_PS.print_unwriteable_margin_left
        0

        print.printer_HP_Color_LaserJet_3800_PS.print_unwriteable_margin_right
        0

        print.printer_HP_Color_LaserJet_3800_PS.print_unwriteable_margin_top
        0

        print.printer_Ricoh_MP_C4000_PS.print_bgcolor
        true

        print.printer_Ricoh_MP_C4000_PS.print_bgimages
        true

        print.printer_Ricoh_MP_C4000_PS.print_command

        print.printer_Ricoh_MP_C4000_PS.print_downloadfonts
        false

        print.printer_Ricoh_MP_C4000_PS.print_edge_bottom
        0

        print.printer_Ricoh_MP_C4000_PS.print_edge_left
        0

        print.printer_Ricoh_MP_C4000_PS.print_edge_right
        0

        print.printer_Ricoh_MP_C4000_PS.print_edge_top
        0

        print.printer_Ricoh_MP_C4000_PS.print_evenpages
        true

        print.printer_Ricoh_MP_C4000_PS.print_footercenter

        print.printer_Ricoh_MP_C4000_PS.print_footerleft
        &PT

        print.printer_Ricoh_MP_C4000_PS.print_footerright
        &D

        print.printer_Ricoh_MP_C4000_PS.print_headercenter

        print.printer_Ricoh_MP_C4000_PS.print_headerleft
        &T

        print.printer_Ricoh_MP_C4000_PS.print_headerright
        &U

        print.printer_Ricoh_MP_C4000_PS.print_in_color
        true

        print.printer_Ricoh_MP_C4000_PS.print_margin_bottom
        0.5

        print.printer_Ricoh_MP_C4000_PS.print_margin_left
        0.5

        print.printer_Ricoh_MP_C4000_PS.print_margin_right
        0.5

        print.printer_Ricoh_MP_C4000_PS.print_margin_top
        0.5

        print.printer_Ricoh_MP_C4000_PS.print_oddpages
        true

        print.printer_Ricoh_MP_C4000_PS.print_orientation
        0

        print.printer_Ricoh_MP_C4000_PS.print_page_delay
        50

        print.printer_Ricoh_MP_C4000_PS.print_pagedelay
        500

        print.printer_Ricoh_MP_C4000_PS.print_paper_data
        1

        print.printer_Ricoh_MP_C4000_PS.print_paper_height
        11.00

        print.printer_Ricoh_MP_C4000_PS.print_paper_size_type
        0

        print.printer_Ricoh_MP_C4000_PS.print_paper_size_unit
        0

        print.printer_Ricoh_MP_C4000_PS.print_paper_width
        8.50

        print.printer_Ricoh_MP_C4000_PS.print_reversed
        false

        print.printer_Ricoh_MP_C4000_PS.print_scaling
        1.00

        print.printer_Ricoh_MP_C4000_PS.print_shrink_to_fit
        true

        print.printer_Ricoh_MP_C4000_PS.print_to_file
        false

        print.printer_Ricoh_MP_C4000_PS.print_unwriteable_margin_bottom
        0

        print.printer_Ricoh_MP_C4000_PS.print_unwriteable_margin_left
        0

        print.printer_Ricoh_MP_C4000_PS.print_unwriteable_margin_right
        0

        print.printer_Ricoh_MP_C4000_PS.print_unwriteable_margin_top
        0

        privacy.sanitize.migrateFx3Prefs
        true

        privacy.sanitize.timeSpan
        2

        security.warn_viewing_mixed
        false

  Graphics

        Adapter Description
        ATI Mobility FireGL V5700

        Vendor ID
        1002

        Device ID
        9591

        Adapter RAM
        512

        Adapter Drivers
        atiumd64 atidxx64 atiumdag atidxx32 atiumdva atiumd6a atitmm64

        Driver Version
        8.641.1.1000

        Driver Date
        8-24-2009

        Direct2D Enabled
        true

        DirectWrite Enabled
        true (6.1.7600.20830)

        WebGL Renderer
        ATI Technologies Inc. -- ATI Mobility FireGL V5700  -- 2.1.8874 FireGL

        GPU Accelerated Windows
        1/1 Direct3D 10
Bob,

Bas told me updating you're drivers fixed the problem. It would be great if you could bisect the range of drivers to find out which revision actually fixed the problem. We could then talk with ATI to try to figure out what changed, which could give us a hint about what's going on here.
Jeff,

There weren't any drivers from Lenovo between what I had and what I now have. Here's a link to the driver matrix.

http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-73641

Not much driver bisecting to do here.
(In reply to comment #27)
> Jeff,
> 
> There weren't any drivers from Lenovo between what I had and what I now have.
> Here's a link to the driver matrix.
> 
> http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-73641
> 
> Not much driver bisecting to do here.

Do the stock drivers work on your system?

This site has a decent archive of drivers: http://www.filehippo.com/download_ati_catalyst_xp/tech/8748/ and you might be able to get them from ati too.
I don't know if they would work or not. The AMD site (ATI is now AMD) is http://support.amd.com/us/kbarticles/Pages/737-28041SupportforATIMobility.aspx . The stock drivers are for the desktop cards, I don't really know how much different their mobile solutions are from the desktop ones. But there seem to only be a few releases in the time between my drivers. 

8.593.100.8 01/28/10 <- maybe a typo on the year ???
8.663.3     11/19/09
8.773.1     12/30/10

So maybe someone with a desktop card can do the bisection.
I just started getting this on Bugzilla using Windows 7 x86_64 using the latest 32-bit build of Minefield.
Actually, retracting that.
No longer blocks: FirefoxButton
We've found the conditions that seem to trigger this:

1) NVidia
2) Aero Basic
3) Window on the -secondary- monitor

When all 3 are met it appears this bug occurs, investigating now that we know how to reproduce.
Status: NEW → ASSIGNED
Conditions that appear to trigger it on my PC:

1) ATI
2) Windows Basic Theme
3) Window on the secondary monitor.

Switching to Aero, or using it on the primary monitor and the problem no longer occurs.
Haven't updated drivers since last check (Comment #14).
I was looking at this problem on my system. Here are some observations:

1. It seems like the problem is related to clipping not working properly. For example, if I load a popup window and force the window behind it to repaint only the part of the popup that obscures the repainted window disappears

2. Scrolling a window underneath a popup makes the popup disappear, but the content underneath where the popup first popped remains visible.
Summary: Menu disappears on Submenu mouse over → Popup menu disappears on Submenu mouse over when using Aero basic on a secondary monitor
I tried this out on nightly from October 1 and the problem is still there, but it doesn't show itself as easily. Scrolling under a popup doesn't make it invisible in the October build.
So, having further investigated this now it seems that this is a bug (most likely in Windows) seemingly triggered by the CS_XP_DROPSHADOW window class flag.

Changing CS_XP_DROPSHADOW to 0 at http://mxr.mozilla.org/mozilla-central/source/widget/src/windows/nsWindow.cpp#848 makes the problem go away (and the drop shadows disappear, obviously)
I can reproduce easily with Win7 basic theme, nVidia 7900GS and drivers 266.58.
I've tried other common windows apps with shadowed submenus but I've been unable to reproduce with the same steps.
Also, I tried with beta5, and it doesn't seem to suffer this bug.
I'll try to find a regression range.
(In reply to comment #36)
> So, having further investigated this now it seems that this is a bug (most
> likely in Windows) seemingly triggered by the CS_XP_DROPSHADOW window class
> flag.
> 
> Changing CS_XP_DROPSHADOW to 0 at
> http://mxr.mozilla.org/mozilla-central/source/widget/src/windows/nsWindow.cpp#848
> makes the problem go away (and the drop shadows disappear, obviously)

So, our old code used to OR this style with CS_DBLCLKS,  Does adding that fix the problem?  (Not that this suggestion makes any sense, but the old code didn't trigger this...
Nevermind, RegisterWindowClass does that OR...
This is the regression window according to my testing through nightlies:
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=bd474ff6f86c&tochange=67aef7ffb282
Unfortunately this just tells me that the bug is caused by enabling layers.
I'll try to further go back with layers enabled.
This article has a very intriguing example on how CS_DROPSHADOWS breaks the background theme for dialogs, and how to fix it:

<http://xenon.arcticus.com/why-cs-dropshadow-class-style-and-how-do-you-use-it-dialog-dlgproc>
Attached file Reduced Testcase
This reduced test case displays the issue. It displays a window with a popup window on top of it. GDI-wise this popup window is black with a little gray box drawn with GDI. This should normally not be shown as every paint and every 2.5 seconds I present a fully red backbuffer with D3D10 to that window.

In the window behind it we present with D3D10 two alternating shades of gray, alternating every second.

Notice how the application behaves as expected with DWM on primary or secondary display, and with non-DWM on the primary display.

On the secondary display with non-DWM notice how occasionally the red present shows (if it doesn't occur too close to an alternation), but as soon as the background alternates again it displays the GDI content.

You can press the space-bar to switch between with/without dropshadow to see how everything works fine without a drop-shadow.
Also interesting would be to see if using WS_POPUP would solve the problem...
That range includes "Bug 590599 - Change the names of layers acceleration prefs, and how they work." So you'd have to change a different pref starting there. Although as Bas' test program demonstrates, you'll probably just find that it is broken whenever acceleration is first available.
(In reply to comment #45)
> That range includes "Bug 590599 - Change the names of layers acceleration
> prefs, and how they work." So you'd have to change a different pref starting
> there.

do we have a likely date for when acceleration was usable on trunk? just as a confirmation.
Ok, I tried a build from Feb 2010 with the old prefs, the problem appears differently but definately menupopups are disappearing when moving across them.
I guess we don't need anymore a regression-window :)
Bas, can you put together a patch that disables acceleration when using Aero basic?
Attached patch WIP patch. (obsolete) — Splinter Review
How about something like this patch - just disable drop shadows on Aero Basic?
Attached patch Proposed patch. (obsolete) — Splinter Review
Patch attached. Could someone who can reproduce this bug try it out? I'll make some try builds.
Attachment #512552 - Attachment is obsolete: true
You tell me which build to try, and I'll give it a shot.
I made a custom build with Patrick's patch, it works fine afaict, menus are not disappearing (mostly a confirmation of comment 36, but at least I can confirm there is a safe fallback patch).
(In reply to comment #52)
> Created attachment 512617 [details] [diff] [review]
> Proposed patch.
> 
> Patch attached. Could someone who can reproduce this bug try it out? I'll make
> some try builds.

This was one of the solutions proposed. It was decided to only remove drop shadows when using multiple monitors though, so we'll need some more code, also to recreate windows when a monitor is connected and such.
Whiteboard: [hardblocker] → [hardblocker][needs new patch]
This patch switches off drop shadows when 2 monitors are connected, we're rendering with D3D10, and the DWM is disabled.

It checks this and sets this style every time we call ::Show on a pop-up window. This is of course a bit of a waste but I don't think the cost will be significant on the cost of opening a window. To make sure I'll fire this at Try for a Talos run and check Twinopen. This is the easiest way, not storing any state which can get messed up.

This solves the problem in my tests.
Attachment #512617 - Attachment is obsolete: true
Attachment #513038 - Flags: review?(roc)
Comment on attachment 513038 [details] [diff] [review]
Switch off drop shadows under some conditions

madness!
Attachment #513038 - Flags: review?(roc) → review+
Whiteboard: [hardblocker][needs new patch] → [hardblocker]has patch]
(In reply to comment #56)
> Created attachment 513038 [details] [diff] [review]
> Switch off drop shadows under some conditions
> 
> This patch switches off drop shadows when 2 monitors are connected, we're
> rendering with D3D10, and the DWM is disabled.

I reproduce this bug with D3D9, does your patch cover that?
It seems there was a Twinopen Talos regression from SetClassLong anyway on try. I'm caching the dropshadow state in this patch, I've pushed some more stuff to Try to verify this as it would surprise me if we're using Popup windows for Twinopen! Which is the only case in which this caching should make a difference.
Attachment #513388 - Flags: review?(roc)
Hm. I have a problem w/ popup menus vanishing in bug #631518 too.  Not monitor related, but here's hoping your fixes fix my problem too :)
(In reply to comment #60)
> Hm. I have a problem w/ popup menus vanishing in bug #631518 too.  Not monitor
> related, but here's hoping your fixes fix my problem too :)

Sadly this is windows, it will not help you.
http://hg.mozilla.org/mozilla-central/rev/7a99ba70cd63
Status: ASSIGNED → RESOLVED
Closed: 14 years ago13 years ago
Resolution: --- → FIXED
Bas you didn't answer my question in comment 58.
Btw, I'll discover that in next nightly!
Not fixed for me.
Do you prefer if I file a separate bug for D3D9 or reopen this bug?
(In reply to comment #64)
> Not fixed for me.
> Do you prefer if I file a separate bug for D3D9 or reopen this bug?

Oh, it was unclear to me you were having this with D3D9 too! Could you confirm you're talking about D3D9? Because indeed, then we need to add another line to the if statement.
Yes, I have a nVidia 7900GS
GPU Accelerated Windows1/1 Direct3D 9
Attached patch D3D9 patch v1.0 (obsolete) — Splinter Review
Not sure if this is the right way, the only problem I see is that if D2D is not enabled I end up calling GetLayerManager() and I don't know how much that's expensive.  I've noticed that mLayerManager is nullified whem moving from fullscreen to normal mode.
Attachment #514550 - Flags: review?
Attachment #514550 - Flags: review? → review?(bas.schouten)
s/fullscreen/maximized/ in comment 68
Comment on attachment 514550 [details] [diff] [review]
D3D9 patch v1.0

This is not the right check to make. Since it's possible that there's some windows with, and some without a D3D9 layer manager.

directxEnabled should probably look for direct2d || layers.accelerated.disabled not being set, and the hardware not being blacklisted as per gfxInfo. Much like the checks in GetLayermanager.
Attachment #514550 - Flags: review?(bas.schouten) → review-
ok thanks for information, I'll see what GetLayerManager does internally and try to come up with something better.
Attached patch D3D9 patch v2.0 (obsolete) — Splinter Review
Probably this is not yet satisfying, but wanted to post it to evaluate a couple things.  since I never touched this code, I guess I could be missing something that would make this really easy.  It's an interesting experience though.

I think reading the prefs and checking the blocklist everytime we open a popup is a bit of an overkill.  At the same time, checking only once would still be wrong, since I can change Windows theme and the pref.  The idea here is to do that only when the LayerManager is invalidated, also since GetLayerManager has already all the logic, I wanted to reuse it.  So Ianticipated dx layers creation, made it setup a local property, and later, if the layer can be used, I just swap the new one with the stored one.

Alternatively, could be possible to repeat the prefs and layer init (or just the blocklist part) code in the helper, and use a tri-state bool to invalidate it when the manager is recreated, but then there would be duped code to maintain.
Attachment #514550 - Attachment is obsolete: true
Attachment #514707 - Flags: review?(bas.schouten)
Checking only once is fine! Since the pref is not live, turning it on requires a restart. My apologies for not being clear on this. The blocklist also only needs to be evaluated once.
Attached patch D3D9 patch v3.0Splinter Review
OK, I'm almost there!
I preferred using a more specific name for the check (maybe it's a bit verbose though), since directxEnabled could have been confusing and this doesn't do all the checks that layers initialization do, plus ideally if the underlying bug is fixed this code can be removed easier.
Attachment #514707 - Attachment is obsolete: true
Attachment #515056 - Flags: review?(bas.schouten)
Attachment #514707 - Flags: review?(bas.schouten)
Comment on attachment 515056 [details] [diff] [review]
D3D9 patch v3.0

I can live with this although the name could maybe be a -little- more verbose. I think this will work correctly but asking additional review from roc since I'm not a widget peer.
Attachment #515056 - Flags: review?(roc)
Attachment #515056 - Flags: review?(bas.schouten)
Attachment #515056 - Flags: review+
Why are we checking prefs here? Can't we just ask the widget what kind of layer manager we have?
see comment 70, Bas said that some windows could be accelerated and others not, transparent windows for example seem to not be accelerated even if D3D9 is active.
+    if (!sHasBogusPopupsDropShadowOnMultiMonitor) {
+      // Otherwise check if Direct3D 9 may be used.
+      LayerManagerPrefs prefs;
+      GetLayerManagerPrefs(&prefs);
+      if (!prefs.mDisableAcceleration && !prefs.mPreferOpenGL) {
+        nsCOMPtr<nsIGfxInfo> gfxInfo = do_GetService("@mozilla.org/gfx/info;1");
+        if (gfxInfo) {
+          PRInt32 status;
+          if (NS_SUCCEEDED(gfxInfo->GetFeatureStatus(nsIGfxInfo::FEATURE_DIRECT3D_9_LAYERS, &status))) {
+            if (status == nsIGfxInfo::FEATURE_NO_INFO || prefs.mForceAcceleration)
+            {
+              sHasBogusPopupsDropShadowOnMultiMonitor = TRI_TRUE;
+            }

Can we just return true if !mDisableAcceleration and !mPreferOpenGL?
(In reply to comment #78)
> Can we just return true if !mDisableAcceleration and !mPreferOpenGL?

So, don't check the blocklist? it could be possible.  Doing so we would lose the shadows on popups on blacklisted gpus/drivers even if that's unneeded (since acceleration is disabled and we won't hit this bug).
Yeah. But I think that doesn't matter much, and it's simpler.
Attached patch D3D9 patch v3.1Splinter Review
Simplify the D3D9 check skipping the blacklist check.
Attachment #515056 - Attachment is obsolete: true
Attachment #515991 - Flags: review?(roc)
Attachment #515056 - Flags: review?(roc)
Comment on attachment 515056 [details] [diff] [review]
D3D9 patch v3.0

Actually, I think we should go with this version instead. With default prefs v3.1 would turn off shadows on all multi-monitor setups which probably is too much.
Attachment #515056 - Attachment is obsolete: false
Attachment #515056 - Flags: approval2.0+
Landed version 3.0
http://hg.mozilla.org/mozilla-central/rev/b2d9d4028d67
Whiteboard: [hardblocker]has patch] → [hardblocker][has patch]
See Also: → 1633713
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: