[Bug 24773] New: It is possible to click behind certain modal dialogs in Worms Armageddon, leading to loss of focus and crashes

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Oct 16 13:52:47 CDT 2010


http://bugs.winehq.org/show_bug.cgi?id=24773

           Summary: It is possible to click behind certain modal dialogs
                    in Worms Armageddon, leading to loss of focus and
                    crashes
           Product: Wine
           Version: unspecified
          Platform: x86
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: user32
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: thecybershadow at gmail.com


Created an attachment (id=31310)
 --> (http://bugs.winehq.org/attachment.cgi?id=31310)
Proposed patch

Problem description:

It is possible to click behind modal dialogs displayed in e.g. the Weapon
Options screen. This causes the modal pop-up window to lose focus and go behind
the Weapon Options screen. It continues to be drawn in front on the Weapon
Options screen, however input events go to the Weapon Options screen instead.
Attempting to close the Weapon Options screen causes the game to crash.

Analysis:

1. It is possible to click behind certain modal dialogs because they are not
disabled. 
2. The reason why they are not disabled, is that the MFC code which brings up a
new modal dialog disables the wrong window. 
3. The reason for which the wrong window is disabled, is because the Wine
implementation of GetLastActivePopup, which is used by MFC to find the active
dialog to disable, returns an incorrect value in certain cases. Specifically,
it doesn't work correctly with nested popups.
4. The reason for that is that a new popup of an owned window doesn't update
the root window's "last active" window. As seen in Wine's make_window_active,
only the immediate owner is updated.

Attached patch + test (will send to wine-patches).

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list