From f26623c81769a5ec293dcad0ee6ed3fa48b07f82 Mon Sep 17 00:00:00 2001 From: Mart Raudsepp Date: Wed, 17 Aug 2005 21:40:44 +0000 Subject: [PATCH] [wxGTK2] gtk+-2.8.0 compatibility. Removed the usage of pango_x_get_context to not depend on a fully deprecated pangox library, which is not pulled in with gtk+-2.8.0. The pango_x_get_context call was (arguably) making font drawing on top of a wxDC slightly faster on (especially remote) X11 in case of non-antialiased fonts (I was unable to find a non-antialiased font that actually returns true for GetNoAntiAliasing()). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35215 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/gtk/window.h | 23 +++++++++++++---------- include/wx/gtk1/window.h | 23 +++++++++++++---------- src/gtk/dcclient.cpp | 7 +++++-- src/gtk/window.cpp | 6 ++---- src/gtk1/dcclient.cpp | 7 +++++-- src/gtk1/window.cpp | 6 ++---- 6 files changed, 40 insertions(+), 32 deletions(-) diff --git a/include/wx/gtk/window.h b/include/wx/gtk/window.h index 2528f768a4..0938985f32 100644 --- a/include/wx/gtk/window.h +++ b/include/wx/gtk/window.h @@ -81,7 +81,7 @@ public: virtual bool SetFont( const wxFont &font ); virtual bool SetBackgroundStyle(wxBackgroundStyle style) ; - + virtual int GetCharHeight() const; virtual int GetCharWidth() const; virtual void GetTextExtent(const wxString& string, @@ -107,7 +107,7 @@ public: #if wxUSE_DRAG_AND_DROP virtual void SetDropTarget( wxDropTarget *dropTarget ); #endif // wxUSE_DRAG_AND_DROP - + #ifdef __WXGTK20__ virtual void AddChild( wxWindowBase *child ); virtual void RemoveChild( wxWindowBase *child ); @@ -125,7 +125,7 @@ public: // Internal represention of Update() void GtkUpdate(); - + // For compatibility across platforms (not in event table) void OnIdle(wxIdleEvent& WXUNUSED(event)) {} @@ -142,7 +142,7 @@ public: // to class not by using virtual functions but by using // the m_insertCallback. void DoAddChild(wxWindowGTK *child); - + // This methods sends wxPaintEvents to the window. It reads the // update region, breaks it up into rects and sends an event // for each rect. It is also responsible for background erase @@ -163,12 +163,15 @@ public: #ifdef __WXGTK20__ // Returns the default context which usually is anti-aliased PangoContext *GtkGetPangoDefaultContext(); - + // Returns the X11 context which renders on the X11 client // side (which can be remote) and which usually is not // anti-aliased and is thus faster + // MR: Now returns the default pango_context for the widget as GtkGetPangoDefaultContext to + // not depend on libpangox - which is completely deprecated. + //BCI: Remove GtkGetPangoX11Context and m_x11Context completely when symbols may be removed PangoContext *GtkGetPangoX11Context(); - PangoContext *m_x11Context; + PangoContext *m_x11Context; // MR: Now unused #endif #if wxUSE_TOOLTIPS @@ -262,7 +265,7 @@ public: virtual void DoCaptureMouse(); virtual void DoReleaseMouse(); - + #if wxUSE_TOOLTIPS virtual void DoSetToolTip( wxToolTip *tip ); #endif // wxUSE_TOOLTIPS @@ -270,14 +273,14 @@ public: protected: // common part of all ctors (not virtual because called from ctor) void Init(); - + #ifdef __WXGTK20__ virtual void DoMoveInTabOrder(wxWindow *win, MoveKind move); // Copies m_children tab order to GTK focus chain: void RealizeTabOrder(); #endif - + // Called by ApplyWidgetStyle (which is called by SetFont() and // SetXXXColour etc to apply style changed to native widgets) to create // modified GTK style with non-standard attributes. If forceStyle=true, @@ -287,7 +290,7 @@ protected: // Overridden in many GTK widgets who have to handle subwidgets virtual void ApplyWidgetStyle(bool forceStyle = false); - + // helper function to ease native widgets wrapping, called by // ApplyWidgetStyle -- override this, not ApplyWidgetStyle virtual void DoApplyWidgetStyle(GtkRcStyle *style); diff --git a/include/wx/gtk1/window.h b/include/wx/gtk1/window.h index 2528f768a4..0938985f32 100644 --- a/include/wx/gtk1/window.h +++ b/include/wx/gtk1/window.h @@ -81,7 +81,7 @@ public: virtual bool SetFont( const wxFont &font ); virtual bool SetBackgroundStyle(wxBackgroundStyle style) ; - + virtual int GetCharHeight() const; virtual int GetCharWidth() const; virtual void GetTextExtent(const wxString& string, @@ -107,7 +107,7 @@ public: #if wxUSE_DRAG_AND_DROP virtual void SetDropTarget( wxDropTarget *dropTarget ); #endif // wxUSE_DRAG_AND_DROP - + #ifdef __WXGTK20__ virtual void AddChild( wxWindowBase *child ); virtual void RemoveChild( wxWindowBase *child ); @@ -125,7 +125,7 @@ public: // Internal represention of Update() void GtkUpdate(); - + // For compatibility across platforms (not in event table) void OnIdle(wxIdleEvent& WXUNUSED(event)) {} @@ -142,7 +142,7 @@ public: // to class not by using virtual functions but by using // the m_insertCallback. void DoAddChild(wxWindowGTK *child); - + // This methods sends wxPaintEvents to the window. It reads the // update region, breaks it up into rects and sends an event // for each rect. It is also responsible for background erase @@ -163,12 +163,15 @@ public: #ifdef __WXGTK20__ // Returns the default context which usually is anti-aliased PangoContext *GtkGetPangoDefaultContext(); - + // Returns the X11 context which renders on the X11 client // side (which can be remote) and which usually is not // anti-aliased and is thus faster + // MR: Now returns the default pango_context for the widget as GtkGetPangoDefaultContext to + // not depend on libpangox - which is completely deprecated. + //BCI: Remove GtkGetPangoX11Context and m_x11Context completely when symbols may be removed PangoContext *GtkGetPangoX11Context(); - PangoContext *m_x11Context; + PangoContext *m_x11Context; // MR: Now unused #endif #if wxUSE_TOOLTIPS @@ -262,7 +265,7 @@ public: virtual void DoCaptureMouse(); virtual void DoReleaseMouse(); - + #if wxUSE_TOOLTIPS virtual void DoSetToolTip( wxToolTip *tip ); #endif // wxUSE_TOOLTIPS @@ -270,14 +273,14 @@ public: protected: // common part of all ctors (not virtual because called from ctor) void Init(); - + #ifdef __WXGTK20__ virtual void DoMoveInTabOrder(wxWindow *win, MoveKind move); // Copies m_children tab order to GTK focus chain: void RealizeTabOrder(); #endif - + // Called by ApplyWidgetStyle (which is called by SetFont() and // SetXXXColour etc to apply style changed to native widgets) to create // modified GTK style with non-standard attributes. If forceStyle=true, @@ -287,7 +290,7 @@ protected: // Overridden in many GTK widgets who have to handle subwidgets virtual void ApplyWidgetStyle(bool forceStyle = false); - + // helper function to ease native widgets wrapping, called by // ApplyWidgetStyle -- override this, not ApplyWidgetStyle virtual void DoApplyWidgetStyle(GtkRcStyle *style); diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index 42be5fdc2f..94ef8c1051 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -1888,11 +1888,14 @@ void wxWindowDC::SetFont( const wxFont &font ) PangoContext *oldContext = m_context; // We might want to use the X11 context for faster - // rendering on screen + // rendering on screen. + // MR: Lets not want to do this, as this introduces libpangox dependancy. +#if 0 if (m_font.GetNoAntiAliasing()) m_context = m_owner->GtkGetPangoX11Context(); else - m_context = m_owner->GtkGetPangoDefaultContext(); +#endif + m_context = m_owner->GtkGetPangoDefaultContext(); // If we switch back/forth between different contexts // we also have to create a new layout. I think so, diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 0813f585cd..c6f04210f9 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -4279,12 +4279,10 @@ PangoContext *wxWindowGTK::GtkGetPangoDefaultContext() return gtk_widget_get_pango_context( m_widget ); } +// MR: Returns the same as GtkGetPangoDefaultContext until the symbol can be removed in 2.7.x PangoContext *wxWindowGTK::GtkGetPangoX11Context() { - if (!m_x11Context) - m_x11Context = pango_x_get_context( gdk_display ); - - return m_x11Context; + return gtk_widget_get_pango_context( m_widget ); } #endif diff --git a/src/gtk1/dcclient.cpp b/src/gtk1/dcclient.cpp index 42be5fdc2f..94ef8c1051 100644 --- a/src/gtk1/dcclient.cpp +++ b/src/gtk1/dcclient.cpp @@ -1888,11 +1888,14 @@ void wxWindowDC::SetFont( const wxFont &font ) PangoContext *oldContext = m_context; // We might want to use the X11 context for faster - // rendering on screen + // rendering on screen. + // MR: Lets not want to do this, as this introduces libpangox dependancy. +#if 0 if (m_font.GetNoAntiAliasing()) m_context = m_owner->GtkGetPangoX11Context(); else - m_context = m_owner->GtkGetPangoDefaultContext(); +#endif + m_context = m_owner->GtkGetPangoDefaultContext(); // If we switch back/forth between different contexts // we also have to create a new layout. I think so, diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index 0813f585cd..c6f04210f9 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -4279,12 +4279,10 @@ PangoContext *wxWindowGTK::GtkGetPangoDefaultContext() return gtk_widget_get_pango_context( m_widget ); } +// MR: Returns the same as GtkGetPangoDefaultContext until the symbol can be removed in 2.7.x PangoContext *wxWindowGTK::GtkGetPangoX11Context() { - if (!m_x11Context) - m_x11Context = pango_x_get_context( gdk_display ); - - return m_x11Context; + return gtk_widget_get_pango_context( m_widget ); } #endif -- 2.45.2