UI porting issues with odd shapped window

Rob cto at xten.com
Mon Nov 3 14:09:52 CST 2003


Second posting - original post somehow got attached to an existing unrelated
thread, apologies...


Hello All Again,

We have found a work around for all our existing issues porting X-Lite so
long as Jerry Jenkins's unincorporated WINE patch listed below is applied to
Wine. I don't know why it's not incorporated yet, but without it our
application has horrible issues (as do similar styled applications). We have
spent time creating another test application with source to demonstrate UI
issues that fail under Wine with unusual shaped windows, so you all can have
a test application to work against to fix these issues at your leisure. We
have worked around all of these issues in our application (with the
unincorporated JJ patch) by using alternative APIs or use the APIs in a
different manner.

What are the chance's JJ's patch can be put into the main Wine CVS tree?
Does anyone know what issues it breaks? All I can see is improvement (even
though it's not a complete solution yet to all issues), hence my curiosity.

This application demonstrates the issues we are having which will allow
X-Lite to run under WINE.

Find the demo application at:
http://www.xten.com/files/winetest2.zip

Some of the bugs are fixed by this *unincorporated* WINE patch by
Jerry Jenkins:
http://www.winehq.org/hypermail/wine-patches/2003/09/0268.html
(hereafter called "the unincorporated JJ patch")


- B1.  Critical, but fixed by the unincorporated JJ patch.
       Focus does not appear to be on the application at startup.  We do not
       receive keyboard messages, though we do receive many other messages,
       such as as mouse-clicks.  Clicking on the square labelled "focus:"
       fixes the problem, by bringing up a message box -- when the message
       box is dismissed, the application has focus.  This appears to be the
       same problem as that discussed here:
       http://bugs.winehq.org/show_bug.cgi?id=292
- B2.  Critical, but fixed by the unincorporated JJ patch.
       No task bar item.
- B3.  Critical, but fixed by the unincorporated JJ patch.
       "System" commands do not appear to be working.  Examples:
          - we do not receive WM_CLOSE when the user presses Alt+F4
          - Alt+Space does not bring up the System menu
- B4.  Critical, but fixed by the unincorporated JJ patch.
       We are always on top, until a screen-saver kicks in.  (Also can be
       fixed by simply removing WS_POPUP.)  This appears to be the same
       problem as that discussed here:
       http://bugs.winehq.org/show_bug.cgi?id=1288
- B5.  Not critical, as we have a work-around.
       The application window is supposed to have a non-rectangular shape.
       The shape is made by setting a "region" from a mask bitmap, and
       calling SetWindowRgn.  The problem under Wine happens when converting
       the 2-bit color mask to a 24-bit color mask.  The black 2-bit pixels
       are properly converted to black 24-bit pixels, but the white 2-bit
       pixels are converted to a near-black, rather than white.  The sample
       app demonstrates 2 ways of working around the problem:
       method 1: fixes the problem by using a 16-color (4 bit per color)
mask
                 instead of a 2-color mask.  This gets around the bug in a
                 reasonable way.
       method 2: fixes the problem by using near-black (instead of white)
for
                 the "transparent" color.  This exploits the bug and causes
                 a bad (but correct) appearance on Windows.
- B6.  Fixed by latest CVS WINE release.
       Copy to the clipboard doesn't work (though pasting from the clipboard
       does work).
- B7.  Not critical, as we have a work-around.
       Attempting to bring up the right-click context menu causes the app to
       hang.
- B8.  Not critical, as we have a work-around.
       Unwanted caption.  If an application without a caption shows itself,
       and *then* gives itself a funky shape by calling SetWindowRgn, the
       application will have a caption.  If, however, the application calls
       setWindowRgn *before* showing itself, it will correctly not have a
       caption.  The sample app demonstrates this, as well as demonstrating
       a fix for the problem.
       min. fix view: clicking on this square hides the window and then
                      shows it again, which gets rid of the caption
       max. fix view: clicking on this square also fixes B5 (using method 1)
                      and then hides and shows the window
- B9.  Not critical, as we have a work-around.
       Handling WM_NCHITTEST to move an app without a caption.  Another
       example of such an app was the clock that shipped with older versions
       of Windows.  (You've got to first turn off the caption and menu by
       pressing Esc, or with Settings->NoTitle in the menu.)  There's a copy
       here:
       http://www.user.dccnet.com/jroe/wakeup/winclock.zip
       This app shows another Wine bug -- turning off the caption bar and
       menu ony half works -- the caption bar remains.  Another example of
       an application which turns off the caption bar and menu (and which
       only half works under Wine):
       http://www.user.dccnet.com/jroe/wakeup/wakeup.zip
- B10. Not critical, as we have a work-around.
       Apart from the WM_NCHITTEST method (see B9), the sample app
       demonstrates 2 algorithms for moving a window.  I'll call the
       algorithms the 'mouse move argument' algorithm and the 'cursor pos'
       algorithm.  Either algorithm works fine under Windows, and either
       algorithm works fine under Wine *if* the window has a caption bar.
       but if the window does not have a caption bar, the mouse move
       argument algorithm produces some very undesirable results -- if you
       move the mouse fast, WM_MOUSEMOVE appears to send some very confused
       LPARMS, and the window gets moved to unpredictable positions.
       Clicking on the "toggle bug B10" toggles between the 2 algorithms.
       (Remember to turn off the caption bar first -- see B8).
- B11. Not critical, as we have a work around.
       RTF control.  This one is not actually demonstraded by the sample
       app.  The problem can commonly be seen when running installer
       progams -- the EULA is often displayed in a rich edit control, and
       is unreadable under wine.  An example of such an installer: **
       http://www.innosetup.com/

-Rob





More information about the wine-devel mailing list