X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d08f23a71cc77701bb2a02da0aa96835b6d5231b..fda91381cd9683cb9c147e53aee537ed1e4e710f:/src/os2/window.cpp diff --git a/src/os2/window.cpp b/src/os2/window.cpp index fc19d43372..eda3bf9747 100644 --- a/src/os2/window.cpp +++ b/src/os2/window.cpp @@ -37,11 +37,6 @@ #include #endif -#define DEBUG_PRINTF(NAME) { static int raz=0; \ - printf( #NAME " %i\n",raz); fflush(stdout); \ - raz++; \ - } - #if wxUSE_OWNER_DRAWN #include "wx/ownerdrw.h" #endif @@ -250,9 +245,6 @@ bool wxWindow::OS2Command( , WXWORD WXUNUSED(uId) ) { - -DEBUG_PRINTF(wxWindow::OS2Command); - return(FALSE); } @@ -302,9 +294,6 @@ void wxWindow::Init() m_lLastMouseY = -1; m_nLastMouseEvent = -1; #endif // wxUSE_MOUSEEVENT_HACK - -DEBUG_PRINTF(wxWindow::Init-End); - } // wxWindow::Init // @@ -312,7 +301,6 @@ DEBUG_PRINTF(wxWindow::Init-End); // wxWindow::~wxWindow() { -DEBUG_PRINTF(wxWindow::~wxWindow-Start); m_isBeingDeleted = TRUE; OS2DetachWindowMenu(); @@ -329,7 +317,6 @@ DEBUG_PRINTF(wxWindow::~wxWindow-Start); // wxRemoveHandleAssociation(this); } -DEBUG_PRINTF(wxWindow::~wxWindow-End); } // end of wxWindow::~wxWindow bool wxWindow::Create( @@ -518,7 +505,6 @@ bool wxWindow::SetFont( const wxFont& rFont ) { -DEBUG_PRINTF(wxWindow::SetFont); if (!wxWindowBase::SetFont(rFont)) { // nothing to do @@ -1338,10 +1324,12 @@ int wxWindow::GetCharHeight() const hPs = ::WinGetPS(GetHwnd()); if(!GpiQueryFontMetrics(hPs, sizeof(FONTMETRICS), &vFontMetrics)) + { + ::WinReleasePS(hPs); return (0); - else - return(vFontMetrics.lMaxAscender + vFontMetrics.lMaxDescender); + } ::WinReleasePS(hPs); + return(vFontMetrics.lMaxAscender + vFontMetrics.lMaxDescender); } // end of wxWindow::GetCharHeight int wxWindow::GetCharWidth() const @@ -1352,10 +1340,12 @@ int wxWindow::GetCharWidth() const hPs = ::WinGetPS(GetHwnd()); if(!GpiQueryFontMetrics(hPs, sizeof(FONTMETRICS), &vFontMetrics)) + { + ::WinReleasePS(hPs); return (0); - else - return(vFontMetrics.lAveCharWidth); + } ::WinReleasePS(hPs); + return(vFontMetrics.lAveCharWidth); } // end of wxWindow::GetCharWidth void wxWindow::GetTextExtent( @@ -1519,8 +1509,6 @@ MRESULT wxWindow::OS2DefWindowProc( , WXLPARAM lParam ) { -DEBUG_PRINTF(wxWindow::OS2DefWindowProc); - if (m_fnOldWndProc) return (MRESULT)m_fnOldWndProc(GetHWND(), (ULONG)uMsg, (MPARAM)wParam, (MPARAM)lParam); else @@ -1804,7 +1792,6 @@ MRESULT EXPENTRY wxWndProc( // Trace all ulMsgs - useful for the debugging // #ifdef __WXDEBUG__ -DEBUG_PRINTF(__WXDEBUG__wxWndProc); wxLogTrace(wxTraceMessages, wxT("Processing %s(wParam=%8lx, lParam=%8lx)"), wxGetMessageName(ulMsg), wParam, lParam); #endif // __WXDEBUG__ @@ -1933,7 +1920,6 @@ MRESULT wxWindow::OS2WindowProc( break; case WM_PAINT: -DEBUG_PRINTF(WM_PAINT) bProcessed = HandlePaint(); break; @@ -1944,11 +1930,9 @@ DEBUG_PRINTF(WM_PAINT) // bProcessed = TRUE; mResult = (MRESULT)TRUE; -DEBUG_PRINTF(WM_CLOSE) break; case WM_SHOW: -DEBUG_PRINTF(WM_SHOW) bProcessed = HandleShow(wParam != 0, (int)lParam); break; @@ -1987,11 +1971,9 @@ DEBUG_PRINTF(WM_SHOW) { WORD id, cmd; WXHWND hwnd; -DEBUG_PRINTF(WM_COMMAND-in) UnpackCommand(wParam, lParam, &id, &hwnd, &cmd); bProcessed = HandleCommand(id, cmd, hwnd); -DEBUG_PRINTF(WM_COMMAND-out) } break; @@ -2124,6 +2106,15 @@ DEBUG_PRINTF(WM_COMMAND-out) } break; #endif + case WM_ERASEBACKGROUND: + // + // Returning TRUE to requestw PM to paint the window background + // in SYSCLR_WINDOW. We don't really want that + // + bProcessed = HandleEraseBkgnd((WXHDC)(HPS)wParam); + mResult = (MRESULT)(FALSE); + break; + // // Instead of CTLCOLOR messages PM sends QUERYWINDOWPARAMS to // things such as colors and fonts and such @@ -2151,17 +2142,6 @@ DEBUG_PRINTF(WM_COMMAND-out) bProcessed = HandlePresParamChanged(wParam); break; - // move this to wxFrame - case WM_ERASEBACKGROUND: - bProcessed = HandleEraseBkgnd((WXHDC)(HDC)wParam); - if (bProcessed) - { - // - // We processed the message, i.e. erased the background - // - mResult = (MRESULT)TRUE; - } - break; // move all drag and drops to wxDrg case WM_ENDDRAG: @@ -2862,47 +2842,65 @@ bool wxWindow::HandlePaint() wxLogLastError("CreateRectRgn"); return FALSE; } - // - // Debug code - // -#ifdef __WXDEBUG__ - { - HWND hWnd; - HWND hWnd0 = NULLHANDLE; - - hWnd = GetHwnd(); - if(hWnd != hWnd0) - printf("HandlePaint hWnd=%x ",hWnd); - } -#endif m_updateRegion = wxRegion(hRgn); vEvent.SetEventObject(this); + if (!GetEventHandler()->ProcessEvent(vEvent)) + { + HPS hPS; + + hPS = ::WinBeginPaint( GetHwnd() + ,NULLHANDLE + ,&vRect + ); + if(hPS) + { + ::GpiCreateLogColorTable( hPS + ,0L + ,LCOLF_CONSECRGB + ,0L + ,(LONG)wxTheColourDatabase->m_nSize + ,(PLONG)wxTheColourDatabase->m_palTable + ); + ::GpiCreateLogColorTable( hPS + ,0L + ,LCOLF_RGB + ,0L + ,0L + ,NULL + ); + + ::WinFillRect(hPS, &vRect, GetBackgroundColour().GetPixel()); + ::WinEndPaint(hPS); + } + } return (GetEventHandler()->ProcessEvent(vEvent)); } // end of wxWindow::HandlePaint -bool wxWindow::HandleEraseBkgnd(WXHDC hdc) +bool wxWindow::HandleEraseBkgnd( + WXHDC hDC +) { - // TODO: will have to worry about this later as part of - // the handling of changed presentation parameters - /* - if ( ::IsIconic(GetHwnd()) ) + SWP vSwp; + + ::WinQueryWindowPos(GetHwnd(), &vSwp); + if (vSwp.fl & SWP_MINIMIZE) return TRUE; - wxDC dc; + wxDC vDC; - dc.SetHDC(hdc); - dc.SetWindow(this); - dc.BeginDrawing(); + vDC.m_hPS = (HPS)hDC; // this is really a PS + vDC.SetWindow(this); + vDC.BeginDrawing(); - wxEraseEvent event(m_windowId, &dc); - event.SetEventObject(this); - bool rc = GetEventHandler()->ProcessEvent(event); + wxEraseEvent vEvent(m_windowId, &vDC); - dc.EndDrawing(); - dc.SelectOldObjects(hdc); - dc.SetHDC((WXHDC) NULL); - */ + vEvent.SetEventObject(this); + + bool rc = GetEventHandler()->ProcessEvent(vEvent); + + vDC.EndDrawing(); + vDC.m_hPS = NULLHANDLE; return TRUE; } // end of wxWindow::HandleEraseBkgnd @@ -2910,7 +2908,11 @@ void wxWindow::OnEraseBackground( wxEraseEvent& rEvent ) { - // TODO: + RECTL vRect; + HPS hPS = rEvent.m_dc->m_hPS; + + ::WinQueryWindowRect(GetHwnd(), &vRect); + ::WinFillRect(hPS, &vRect, m_backgroundColour.GetPixel()); } // end of wxWindow::OnEraseBackground // ---------------------------------------------------------------------------