]> git.saurik.com Git - wxWidgets.git/commitdiff
wxMGL bugfixes
authorVáclav Slavík <vslavik@fastmail.fm>
Sun, 12 Aug 2001 00:13:37 +0000 (00:13 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sun, 12 Aug 2001 00:13:37 +0000 (00:13 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11351 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mgl/app.cpp
src/mgl/dc.cpp
src/mgl/evtloop.cpp
src/mgl/fontutil.cpp
src/mgl/settings.cpp
src/mgl/window.cpp

index d8b012870ebf195eb614bcea584cb1783e8758dd..d9288130de15ef7c4ba5ffb85d32ead7c62736b9 100644 (file)
@@ -226,10 +226,12 @@ bool wxApp::SendIdleEvents(wxWindow* win)
 
 int wxApp::MainLoop()
 {
 
 int wxApp::MainLoop()
 {
+    int rt;
     gs_mainEventLoop = new wxEventLoop;
     gs_mainEventLoop = new wxEventLoop;
-    return gs_mainEventLoop->Run();
+    rt = gs_mainEventLoop->Run();
     delete gs_mainEventLoop;
     gs_mainEventLoop = NULL;
     delete gs_mainEventLoop;
     gs_mainEventLoop = NULL;
+    return rt;
 }
 
 void wxApp::ExitMainLoop()
 }
 
 void wxApp::ExitMainLoop()
@@ -239,7 +241,9 @@ void wxApp::ExitMainLoop()
 
 bool wxApp::Initialized()
 {
 
 bool wxApp::Initialized()
 {
-    return (GetTopWindow() != NULL);
+    // FIXME_MGL -- only for now because we don't have wxFrame/wxDialog yet
+    return TRUE;
+    //return (wxTopLevelWindows.GetCount() != 0);
 }
 
 bool wxApp::Pending()
 }
 
 bool wxApp::Pending()
@@ -481,8 +485,7 @@ int wxEntry(int argc, char *argv[])
            call OnRun() */
         wxTheApp->DeletePendingObjects();
 
            call OnRun() */
         wxTheApp->DeletePendingObjects();
 
-        if ( wxTheApp->Initialized() &&
-             wxTopLevelWindows.GetCount() != 0 )
+        if ( wxTheApp->Initialized() )
         {
             wxTheApp->OnRun();
 
         {
             wxTheApp->OnRun();
 
index a2d932bd5a861b22cd1522db7977658f9c2493ea..4b556de6b735d32484e8b4c2146b91c9122a29ee 100644 (file)
@@ -239,7 +239,7 @@ void wxDC::DoSetClippingRegion(wxCoord cx, wxCoord cy, wxCoord cw, wxCoord ch)
 
     if ( m_globalClippingRegion )
     {
 
     if ( m_globalClippingRegion )
     {
-        m_MGLDC->setClipRegion(m_currentClippingRegion.GetMGLRegion() 
+        m_MGLDC->setClipRegion(m_currentClippingRegion.GetMGLRegion()
                                & *m_globalClippingRegion);
     }
     else
                                & *m_globalClippingRegion);
     }
     else
@@ -284,7 +284,7 @@ void wxDC::DoSetClippingRegionAsRegion(const wxRegion& region)
 
     if ( m_globalClippingRegion )
     {
 
     if ( m_globalClippingRegion )
     {
-        m_MGLDC->setClipRegion(m_currentClippingRegion.GetMGLRegion() 
+        m_MGLDC->setClipRegion(m_currentClippingRegion.GetMGLRegion()
                                & *m_globalClippingRegion);
     }
     else
                                & *m_globalClippingRegion);
     }
     else
@@ -334,9 +334,7 @@ void wxDC::Clear()
     wxCHECK_RET( Ok(), wxT("invalid dc") );
 
     m_MGLDC->makeCurrent(); // will go away with MGL6.0
     wxCHECK_RET( Ok(), wxT("invalid dc") );
 
     m_MGLDC->makeCurrent(); // will go away with MGL6.0
-    m_MGLDC->clearDevice();
-    if ( m_backgroundBrush.GetStyle() != wxSOLID && 
-         m_backgroundBrush.GetStyle() != wxTRANSPARENT )
+    if ( m_backgroundBrush.GetStyle() != wxTRANSPARENT )
     {
         int w, h;
         wxBrush oldb = m_brush;
     {
         int w, h;
         wxBrush oldb = m_brush;
@@ -717,7 +715,6 @@ void wxDC::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord h,double sa,d
 
 void wxDC::DoDrawText(const wxString& text, wxCoord x, wxCoord y)
 {
 
 void wxDC::DoDrawText(const wxString& text, wxCoord x, wxCoord y)
 {
-    if ( m_pen.GetStyle() == wxTRANSPARENT ) return;
     m_MGLDC->makeCurrent(); // will go away with MGL6.0
     DrawAnyText(text, x, y);
 
     m_MGLDC->makeCurrent(); // will go away with MGL6.0
     DrawAnyText(text, x, y);
 
@@ -811,7 +808,6 @@ void wxDC::DoDrawRotatedText(const wxString& text,
                              wxCoord x, wxCoord y,
                              double angle)
 {
                              wxCoord x, wxCoord y,
                              double angle)
 {
-    if ( m_pen.GetStyle() == wxTRANSPARENT ) return;
     m_MGLDC->makeCurrent(); // will go away with MGL6.0
     
     if ( angle == 0 )
     m_MGLDC->makeCurrent(); // will go away with MGL6.0
     
     if ( angle == 0 )
index 9f8161da68575029bc9c75f9fd4ba2131a550a0f..9e69b980a696dd7288ab0646f2abecc7e1c8e01e 100644 (file)
@@ -157,20 +157,18 @@ bool wxEventLoop::Dispatch()
     wxCHECK_MSG( IsRunning(), FALSE, _T("can't call Dispatch() if not running") );
 
     event_t evt;
     wxCHECK_MSG( IsRunning(), FALSE, _T("can't call Dispatch() if not running") );
 
     event_t evt;
-    ibool rc = EVT_getNext(&evt, EVT_EVERYEVT);
-
-    if ( !rc )
+    ibool rc;
+    
+    rc = EVT_getNext(&evt, EVT_EVERYEVT);
+    while ( !rc )
     {
     {
-        wxLogError(_T("events queue empty even though Pending() returned true"));
-        return FALSE;
+        wxUsleep(1000);
+        if ( !m_impl->GetKeepLooping() )
+            return FALSE;
+        rc = EVT_getNext(&evt, EVT_EVERYEVT);
     }
     }
-    
-    // FIXME_MGL -- there must be some way to programatically exit
-    // the loop, like WM_QUIT under Windows -- perhaps we need custom
-    // event to indicate this??
 
     m_impl->ProcessEvent(&evt);
 
     return m_impl->GetKeepLooping();
 }
 
     m_impl->ProcessEvent(&evt);
 
     return m_impl->GetKeepLooping();
 }
-
index 78d0443857cefe7eb7e6af43e2874300d152dd40..cc361b21b1cef8e655b31dea84f66d7e740d49f3 100644 (file)
@@ -323,20 +323,17 @@ bool wxMGLFontFamily::HasFace(int type) const
 wxMGLFontLibrary *wxFontsManager::GetFontLibrary(wxFont *font)
 {
     wxMGLFontFamily *family;
 wxMGLFontLibrary *wxFontsManager::GetFontLibrary(wxFont *font)
 {
     wxMGLFontFamily *family;
-    wxString facename;
     int type;
     int type;
+    wxString facename = font->GetFaceName();
     
     
-    if ( facename )
-        family = GetFamily(font->GetFaceName());
+    if ( !facename.IsEmpty() )
+        family = GetFamily(facename);
     else
         family = NULL;
     else
         family = NULL;
-    if ( family )
-        facename = font->GetFaceName();
-    else
-        facename.Empty();
-    
+
     if ( !family )
     {
     if ( !family )
     {
+        facename.Empty();
         switch (font->GetFamily())
         {
             case wxSCRIPT:
         switch (font->GetFamily())
         {
             case wxSCRIPT:
index fab6801169e0c9a4aeb7a1148046f94cace1489d..fc10a6bb0ece4c21110b338899cfbddce2dd27b7 100644 (file)
@@ -24,7 +24,7 @@ wxColour wxSystemSettings::GetSystemColour(int WXUNUSED(index))
 wxFont wxSystemSettings::GetSystemFont(int WXUNUSED(index))
 {
     // FIXME_MGL
 wxFont wxSystemSettings::GetSystemFont(int WXUNUSED(index))
 {
     // FIXME_MGL
-    return wxFont(12, wxMODERN, wxNORMAL, wxNORMAL);
+    return wxFont(12, wxSWISS, wxNORMAL, wxNORMAL);
 }
 
 int wxSystemSettings::GetSystemMetric(int WXUNUSED(index))
 }
 
 int wxSystemSettings::GetSystemMetric(int WXUNUSED(index))
index 1ac85be6fa4268c6474338f5fe7d013fdc1a6268..210c50ec9bf4be4b0f6c67ab3ceb686f85c779e4 100644 (file)
@@ -98,6 +98,7 @@ enum
 //   b) the app has plenty of time in wxApp::OnInit to feed wxSystemOptions
 //      with desired settings
 
 //   b) the app has plenty of time in wxApp::OnInit to feed wxSystemOptions
 //      with desired settings
 
+// FIXME_MGL -- move to app.cpp??
 bool wxCreateMGL_WM()
 {
     int mode;
 bool wxCreateMGL_WM()
 {
     int mode;
@@ -262,6 +263,7 @@ bool wxWindowMGL::Create(wxWindow *parent,
     m_wnd = MGL_wmCreateWindow(g_winMng,
                                parent ? parent->GetHandle() : NULL,
                                pos.x, pos.y, size.x, size.y);
     m_wnd = MGL_wmCreateWindow(g_winMng,
                                parent ? parent->GetHandle() : NULL,
                                pos.x, pos.y, size.x, size.y);
+    MGL_wmShowWindow(m_wnd, m_isShown);
     MGL_wmSetWindowUserData(m_wnd, (void*) this);
     MGL_wmSetWindowPainter(m_wnd, wxWindowPainter);
     return TRUE;
     MGL_wmSetWindowUserData(m_wnd, (void*) this);
     MGL_wmSetWindowPainter(m_wnd, wxWindowPainter);
     return TRUE;
@@ -702,7 +704,6 @@ void wxWindowMGL::Refresh(bool WXUNUSED(eraseBack), const wxRect *rect)
 
 void wxWindowMGL::Update()
 {
 
 void wxWindowMGL::Update()
 {
-    Refresh();
     if ( !m_frozen )
         MGL_wmUpdateDC(g_winMng);
 }
     if ( !m_frozen )
         MGL_wmUpdateDC(g_winMng);
 }
@@ -725,12 +726,13 @@ void wxWindowMGL::HandlePaint(MGLDevCtx *dc)
     if ( m_frozen )
     {
         // Don't paint anything if the window is frozen. 
     if ( m_frozen )
     {
         // Don't paint anything if the window is frozen. 
+        m_refreshAfterThaw = TRUE;
         return;
     }
 
         return;
     }
 
-    region_t clip;
-    MGL_getClipRegionDC(*dc, &clip);
-    m_updateRegion = wxRegion(MGLRegion(&clip));
+    MGLRegion clip;
+    dc->getClipRegion(clip);
+    m_updateRegion = wxRegion(clip);
     m_paintMGLDC = dc;
 
     {
     m_paintMGLDC = dc;
 
     {
@@ -749,6 +751,7 @@ void wxWindowMGL::HandlePaint(MGLDevCtx *dc)
     GetEventHandler()->ProcessEvent(eventPt);
 
     m_paintMGLDC = NULL;
     GetEventHandler()->ProcessEvent(eventPt);
 
     m_paintMGLDC = NULL;
+    m_updateRegion.Clear();
 }
 
 
 }