X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d1d2cd38c4b7f6702af747ab81e1b85afa5fefdf..c0fbf24ba6abc81db66ead334d69af670a8ec5a7:/src/generic/splash.cpp diff --git a/src/generic/splash.cpp b/src/generic/splash.cpp index 06d98a1e2d..fd23f630b6 100644 --- a/src/generic/splash.cpp +++ b/src/generic/splash.cpp @@ -98,7 +98,9 @@ void wxSplashScreen::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) */ BEGIN_EVENT_TABLE(wxSplashScreenWindow, wxWindow) - //EVT_PAINT(wxSplashScreenWindow::OnPaint) +#ifdef __WXGTK__ + EVT_PAINT(wxSplashScreenWindow::OnPaint) +#endif EVT_ERASE_BACKGROUND(wxSplashScreenWindow::OnEraseBackground) EVT_CHAR(wxSplashScreenWindow::OnChar) EVT_MOUSE_EVENTS(wxSplashScreenWindow::OnMouseEvent) @@ -108,40 +110,53 @@ wxSplashScreenWindow::wxSplashScreenWindow(const wxBitmap& bitmap, wxWindow* par wxWindow(parent, id, pos, size, style) { m_bitmap = bitmap; -} -void wxSplashScreenWindow::OnPaint(wxPaintEvent& WXUNUSED(event)) -{ - wxPaintDC dc(this); - if (m_bitmap.Ok()) - dc.DrawBitmap(m_bitmap, 0, 0); +#ifndef __WXGTK__ + bool hiColour = (wxDisplayDepth() >= 16) ; + + if (bitmap.GetPalette() && !hiColour) + { + SetPalette(* bitmap.GetPalette()); + } +#endif + } +// VZ: why don't we do it under wxGTK? +#if !defined(__WXGTK__) && wxUSE_PALETTE + #define USE_PALETTE_IN_SPLASH +#endif + static void wxDrawSplashBitmap(wxDC& dc, const wxBitmap& bitmap, int WXUNUSED(x), int WXUNUSED(y)) { wxMemoryDC dcMem; -#ifndef __WXGTK__ +#ifdef USE_PALETTE_IN_SPLASH bool hiColour = (wxDisplayDepth() >= 16) ; if (bitmap.GetPalette() && !hiColour) { - dc.SetPalette(* bitmap.GetPalette()); dcMem.SetPalette(* bitmap.GetPalette()); } -#endif +#endif // USE_PALETTE_IN_SPLASH dcMem.SelectObject(bitmap); dc.Blit(0, 0, bitmap.GetWidth(), bitmap.GetHeight(), & dcMem, 0, 0); dcMem.SelectObject(wxNullBitmap); -#ifndef __WXGTK__ +#ifdef USE_PALETTE_IN_SPLASH if (bitmap.GetPalette() && !hiColour) { - dc.SetPalette(wxNullPalette); dcMem.SetPalette(wxNullPalette); } -#endif +#endif // USE_PALETTE_IN_SPLASH +} + +void wxSplashScreenWindow::OnPaint(wxPaintEvent& WXUNUSED(event)) +{ + wxPaintDC dc(this); + if (m_bitmap.Ok()) + wxDrawSplashBitmap(dc, m_bitmap, 0, 0); } void wxSplashScreenWindow::OnEraseBackground(wxEraseEvent& event)