[Bug 32594] New: MessageBox hook WH_CBT HCBT_ACTIVATE sees wrong button size given MB_DEFBUTTON* style

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Dec 29 15:38:37 CST 2012


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

             Bug #: 32594
           Summary: MessageBox hook WH_CBT HCBT_ACTIVATE sees wrong button
                    size given MB_DEFBUTTON* style
           Product: Wine
           Version: 1.5.20
          Platform: x86
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: user32
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: staticinline at gmail.com
    Classification: Unclassified


MessageBox buttons are not correctly sized during the first call to a WH_CBT
HCBT_ACTIVATE hook if a MB_DEFBUTTON* style is used on the message box.

Observe in the Wine msgbox.c:MSGBOX_OnInit code, the "position the buttons"
loop iterates through each button, and if a button has a MB_DEFMASK set, it
also calls SetFocus, which triggers the WH_CBT HCBT_ACTIVATE hook. This is
before this loop positions the remaining buttons. The attached
wine-msgbox-patch.txt is a patch to Wine 1.5.20 that positions all the buttons
before processing the MB_DEFMASK.

This problem affects programs using the wxWidgets 2.9.x GUI library, whose
message box implementation measures (via GetWindowRec) the initial sizes of the
buttons during a WH_CBT HCBT_ACTIVATE hook [2].  This problem is analyzed more
fully in a wxWidgets ticket [1].

The problem has also been observed to affect at least as far back as Wine 1.0.1
(debian squeeze, x86).

[1] http://trac.wxwidgets.org/ticket/14926
[2] http://trac.wxwidgets.org/browser/wxWidgets/trunk/src/msw/msgdlg.cpp#L369

-- 
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