X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c801d85f158c4cba50b588807daabdcbd0ed3853..1978421a6d8b81c1f8a961da4b8ddf544fec7b1b:/src/gtk/dcscreen.cpp?ds=inline diff --git a/src/gtk/dcscreen.cpp b/src/gtk/dcscreen.cpp index 9f5c0cacc6..b404333e13 100644 --- a/src/gtk/dcscreen.cpp +++ b/src/gtk/dcscreen.cpp @@ -2,19 +2,32 @@ // Name: dcscreen.cpp // Purpose: // Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Id: $Id$ +// Copyright: (c) 1998 Robert Roebling +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #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 +#include +#include + +//----------------------------------------------------------------------------- +// global data initialization +//----------------------------------------------------------------------------- + +GdkWindow *wxScreenDC::sm_overlayWindow = (GdkWindow*) NULL; +int wxScreenDC::sm_overlayWindowX = 0; +int wxScreenDC::sm_overlayWindowY = 0; //----------------------------------------------------------------------------- // wxScreenDC @@ -22,100 +35,76 @@ IMPLEMENT_DYNAMIC_CLASS(wxScreenDC,wxPaintDC) -wxScreenDC::wxScreenDC(void) +wxScreenDC::wxScreenDC() { - m_ok = FALSE; - m_window = 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 ); -}; - -wxScreenDC::~wxScreenDC(void) + m_ok = FALSE; + m_cmap = gdk_colormap_get_system(); + m_window = GDK_ROOT_PARENT(); + + m_isScreenDC = TRUE; + + 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 ); +} + +wxScreenDC::~wxScreenDC() { - EndDrawingOnTop(); -}; + 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 ); -bool wxScreenDC::StartDrawingOnTop( wxWindow *WXUNUSED(window) ) + EndDrawingOnTop(); +} + +bool wxScreenDC::StartDrawingOnTop( wxWindow *window ) { - 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; -*/ -}; - -bool wxScreenDC::StartDrawingOnTop( wxRectangle *WXUNUSED(rect) ) + if (!window) return StartDrawingOnTop(); + + int x = 0; + int y = 0; + window->GetPosition( &x, &y ); + int w = 0; + int h = 0; + window->GetSize( &w, &h ); + window->ClientToScreen( &x, &y ); + + wxRect rect; + rect.x = x; + rect.y = y; + rect.width = 0; + rect.height = 0; + + return StartDrawingOnTop( &rect ); +} + +bool wxScreenDC::StartDrawingOnTop( wxRect *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. :-( - - 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_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 ); - - return TRUE; -*/ -}; - -bool wxScreenDC::EndDrawingOnTop(void) + 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; + } + + return TRUE; +} + +bool wxScreenDC::EndDrawingOnTop() +{ + return TRUE; +} + +void wxScreenDC::DoGetSize(int *width, int *height) const { - return TRUE; -/* - if (m_window) gdk_window_destroy( m_window ); - m_window = NULL; - m_isOk = FALSE; - return TRUE; -*/ -}; + wxDisplaySize(width, height); +}