X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/01111366c9b4ea40eee7f4b13ddfe6f6b9f886db..81b0235f13a7e3cca27d1883d1098bfe285a9351:/src/gtk/dcscreen.cpp diff --git a/src/gtk/dcscreen.cpp b/src/gtk/dcscreen.cpp index cd47777fdb..e32427f51e 100644 --- a/src/gtk/dcscreen.cpp +++ b/src/gtk/dcscreen.cpp @@ -1,121 +1,70 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.cpp +// Name: src/gtk/dcscreen.cpp // Purpose: // Author: Robert Roebling -// Id: $id$ +// Id: $Id$ // Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "dcscreen.h" -#endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" #include "wx/dcscreen.h" -#include "wx/window.h" -#include "gdk/gdkx.h" +#include "wx/gtk/dcscreen.h" + +#ifndef WX_PRECOMP + #include "wx/window.h" +#endif + +#include +#include +#include //----------------------------------------------------------------------------- -// wxScreenDC +// wxScreenDCImpl //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxScreenDC,wxPaintDC) - -wxScreenDC::wxScreenDC(void) -{ - m_ok = FALSE; - m_window = (GdkWindow *) NULL; - m_cmap = gdk_colormap_get_system(); - - m_window = GDK_ROOT_PARENT(); - - SetUpDC(); - - gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_brushGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_textGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_bgGC, GDK_INCLUDE_INFERIORS ); -} +IMPLEMENT_ABSTRACT_CLASS(wxScreenDCImpl, wxWindowDCImpl) -wxScreenDC::~wxScreenDC(void) -{ - EndDrawingOnTop(); +wxScreenDCImpl::wxScreenDCImpl( wxScreenDC *owner ) + : wxWindowDCImpl( owner ) +{ + Init(); } -bool wxScreenDC::StartDrawingOnTop( wxWindow *WXUNUSED(window) ) +void wxScreenDCImpl::Init() { - return TRUE; -/* - if (!window) - { - StartDrawingOnTop(); - return; - } - wxRectangle rect; - rect.x = 0; - rect.y = 0; - window->GetPosition( &rect.x, &rect.y ); - rect.width = 0; - rect.height = 0; - window->GetSize( &rect.width, &rect.height ); - window->ClientToScreen( &rect.x, &rect.y ); - StartDrawingOnTop( &rect ); - return TRUE; -*/ -} + m_ok = false; + m_cmap = gdk_colormap_get_system(); + m_gdkwindow = gdk_get_default_root_window(); -bool wxScreenDC::StartDrawingOnTop( wxRectangle *WXUNUSED(rect) ) -{ - return TRUE; -/* - int x = 0; - int y = 0; - int width = gdk_screen_width(); - int height = gdk_screen_height(); - if (rect) - { - x = rect->x; - y = rect->y; - width = rect->width; - height = rect->height; - } - - GTK cannot set transparent backgrounds. :-( + m_context = gdk_pango_context_get(); + // Note: The Sun customised version of Pango shipping with Solaris 10 + // crashes if the language is left NULL (see bug 1374114) + pango_context_set_language( m_context, gtk_get_default_language() ); + m_layout = pango_layout_new( m_context ); +// m_fontdesc = pango_font_description_copy( widget->style->font_desc ); - GdkWindowAttr attr; - attr.x = x; - attr.y = y; - attr.width = width; - attr.height = height; - attr.override_redirect = TRUE; - attr.wclass = GDK_INPUT_OUTPUT; - attr.event_mask = 0; - attr.window_type = GDK_WINDOW_TEMP; - m_window = gdk_window_new( NULL, &attr, GDK_WA_NOREDIR | GDK_WA_X | GDK_WA_Y ); - - gdk_window_show( m_window ); + m_isScreenDC = true; - m_window = GDK_ROOT_PARENT(); - - SetUpDC(); - - gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_brushGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_textGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_bgGC, GDK_INCLUDE_INFERIORS ); + SetUpDC(); - return TRUE; -*/ + gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS ); + gdk_gc_set_subwindow( m_brushGC, GDK_INCLUDE_INFERIORS ); + gdk_gc_set_subwindow( m_textGC, GDK_INCLUDE_INFERIORS ); + gdk_gc_set_subwindow( m_bgGC, GDK_INCLUDE_INFERIORS ); } -bool wxScreenDC::EndDrawingOnTop(void) +wxScreenDCImpl::~wxScreenDCImpl() { - return TRUE; -/* - if (m_window) gdk_window_destroy( m_window ); - m_window = NULL; - m_isOk = FALSE; - return TRUE; -*/ + gdk_gc_set_subwindow( m_penGC, GDK_CLIP_BY_CHILDREN ); + gdk_gc_set_subwindow( m_brushGC, GDK_CLIP_BY_CHILDREN ); + gdk_gc_set_subwindow( m_textGC, GDK_CLIP_BY_CHILDREN ); + gdk_gc_set_subwindow( m_bgGC, GDK_CLIP_BY_CHILDREN ); } +void wxScreenDCImpl::DoGetSize(int *width, int *height) const +{ + wxDisplaySize(width, height); +}