Opened 11 years ago

Closed 11 years ago

#27 closed task (fixed)

Port QWidget

Reported by: Dmitry A. Kuminov Owned by: Dmitry A. Kuminov
Priority: major Milestone: QtGui Beta
Component: QtGui Version: 4.5.1 Beta 1
Severity: Keywords:


Provide the initial OS/2 version of the QWidget class.

Change History (6)

comment:1 Changed 11 years ago by Dmitry A. Kuminov

Type: enhancementtask

comment:2 Changed 11 years ago by Dmitry A. Kuminov

Owner: set to Dmitry A. Kuminov
Status: newaccepted

comment:3 Changed 11 years ago by Dmitry A. Kuminov

I managed to get Qt draw widget contents so that simple panting in a custom widget works now. This includes things like full 2D primitive antialiasing too since the standard Qt4 raster paint engine fully draws everything itself in memory (they call it backing store) and then flushes the resulting bitmap into the PM window.

I use GpiDrwaBits? for this which but later we may also try DIVE to see if it will be actually faster or not (I fear GpiDrawBits? does not copy the bits directly into the screen but probably creates some temporary HBITMAP which is then blitted -- that would not be very fast).

, but later I will try DIVE to get direct access to the screen and avoid one mem->screen bitblt operation.

comment:4 Changed 11 years ago by Dmitry A. Kuminov

Regarding the minimized window state. In PM, the window is resized to the big icon size (48x50px) and moved off screen (to -32000,-32000) when minimized. This process causes normal WM_MOVE and WM_SIZE to be sent to the window. As a result, the Qt size of the window gets changed as well when the window is maximized. This effect isn't seen on Windows Vista where the window size/position stays unchanged in this case. It looks like Windows prevents it on the system level (doesn't send WM_MOVE/WM_SIZE).

The question is if we should emulate the same behavior on OS/2.

comment:5 Changed 11 years ago by Dmitry A. Kuminov

Ah, no, Windows also sends WM_MOVE(-32000,-32000) and WM_SIZE(0,0) when the window is minimized. It's just Qt that prevents it. Then we have to do the same... Done in r122.

comment:6 Changed 11 years ago by Dmitry A. Kuminov

Resolution: fixed
Status: acceptedclosed

This task is basically done. There is a number of @todo still in the code, but these will be done as individual tasks later.

Note: See TracTickets for help on using tickets.