Opened 10 years ago

Closed 10 years ago

#27 closed task (fixed)

Port QWidget

Reported by: dmik Owned by: dmik
Priority: major Milestone: QtGui Beta
Component: QtGui Version: 4.5.1 Beta 1
Severity: Keywords:
Cc:

Description

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

Change History (6)

comment:1 Changed 10 years ago by dmik

  • Type changed from enhancement to task

comment:2 Changed 10 years ago by dmik

  • Owner set to dmik
  • Status changed from new to accepted

comment:3 Changed 10 years ago by dmik

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 10 years ago by dmik

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 10 years ago by dmik

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 10 years ago by dmik

  • Resolution set to fixed
  • Status changed from accepted to closed

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.