]> git.saurik.com Git - wxWidgets.git/commitdiff
New "pizza" widget implementation. Window border widths now match the GtkStyle they...
authorPaul Cornett <paulcor@bullseye.com>
Tue, 6 Nov 2007 18:14:15 +0000 (18:14 +0000)
committerPaul Cornett <paulcor@bullseye.com>
Tue, 6 Nov 2007 18:14:15 +0000 (18:14 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49687 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

17 files changed:
Makefile.in
build/bakefiles/files.bkl
include/wx/gtk/win_gtk.h
include/wx/gtk/window.h
include/wx/gtk1/window.h
src/aui/dockart.cpp
src/generic/graphicc.cpp
src/generic/statusbr.cpp
src/gtk/app.cpp
src/gtk/dcclient.cpp
src/gtk/glcanvas.cpp
src/gtk/popupwin.cpp
src/gtk/renderer.cpp
src/gtk/toplevel.cpp
src/gtk/window.cpp
src/gtk1/window.cpp
src/unix/mediactrl.cpp

index 59eb959205e8b8d4c2279684c2d81a2720222ad8..d025e6cd4fd52a6ef3f86baa0c8545151b6cacb1 100644 (file)
@@ -15622,8 +15622,8 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monodll_utilsgtk.o: $(srcdir)/src/gtk1/utilsgtk.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk1/utilsgtk.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monodll_utilsgtk.o: $(srcdir)/src/gtk1/utilsgtk.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk1/utilsgtk.cpp
 
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monodll_win_gtk.o: $(srcdir)/src/gtk/win_gtk.c $(MONODLL_ODEP)
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CCC) -c -o $@ $(MONODLL_CFLAGS) $(srcdir)/src/gtk/win_gtk.c
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monodll_win_gtk.o: $(srcdir)/src/gtk/win_gtk.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/win_gtk.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monodll_win_gtk.o: $(srcdir)/src/gtk1/win_gtk.c $(MONODLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CCC) -c -o $@ $(MONODLL_CFLAGS) $(srcdir)/src/gtk1/win_gtk.c
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monodll_win_gtk.o: $(srcdir)/src/gtk1/win_gtk.c $(MONODLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CCC) -c -o $@ $(MONODLL_CFLAGS) $(srcdir)/src/gtk1/win_gtk.c
@@ -20074,8 +20074,8 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monolib_utilsgtk.o: $(srcdir)/src/gtk1/utilsgtk.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk1/utilsgtk.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monolib_utilsgtk.o: $(srcdir)/src/gtk1/utilsgtk.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk1/utilsgtk.cpp
 
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monolib_win_gtk.o: $(srcdir)/src/gtk/win_gtk.c $(MONOLIB_ODEP)
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CCC) -c -o $@ $(MONOLIB_CFLAGS) $(srcdir)/src/gtk/win_gtk.c
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monolib_win_gtk.o: $(srcdir)/src/gtk/win_gtk.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/win_gtk.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monolib_win_gtk.o: $(srcdir)/src/gtk1/win_gtk.c $(MONOLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CCC) -c -o $@ $(MONOLIB_CFLAGS) $(srcdir)/src/gtk1/win_gtk.c
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monolib_win_gtk.o: $(srcdir)/src/gtk1/win_gtk.c $(MONOLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CCC) -c -o $@ $(MONOLIB_CFLAGS) $(srcdir)/src/gtk1/win_gtk.c
@@ -25084,8 +25084,8 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@coredll_utilsgtk.o: $(srcdir)/src/gtk1/utilsgtk.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk1/utilsgtk.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@coredll_utilsgtk.o: $(srcdir)/src/gtk1/utilsgtk.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk1/utilsgtk.cpp
 
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@coredll_win_gtk.o: $(srcdir)/src/gtk/win_gtk.c $(COREDLL_ODEP)
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CCC) -c -o $@ $(COREDLL_CFLAGS) $(srcdir)/src/gtk/win_gtk.c
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@coredll_win_gtk.o: $(srcdir)/src/gtk/win_gtk.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk/win_gtk.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@coredll_win_gtk.o: $(srcdir)/src/gtk1/win_gtk.c $(COREDLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CCC) -c -o $@ $(COREDLL_CFLAGS) $(srcdir)/src/gtk1/win_gtk.c
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@coredll_win_gtk.o: $(srcdir)/src/gtk1/win_gtk.c $(COREDLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CCC) -c -o $@ $(COREDLL_CFLAGS) $(srcdir)/src/gtk1/win_gtk.c
@@ -28153,8 +28153,8 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@corelib_utilsgtk.o: $(srcdir)/src/gtk1/utilsgtk.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk1/utilsgtk.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@corelib_utilsgtk.o: $(srcdir)/src/gtk1/utilsgtk.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk1/utilsgtk.cpp
 
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@corelib_win_gtk.o: $(srcdir)/src/gtk/win_gtk.c $(CORELIB_ODEP)
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CCC) -c -o $@ $(CORELIB_CFLAGS) $(srcdir)/src/gtk/win_gtk.c
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@corelib_win_gtk.o: $(srcdir)/src/gtk/win_gtk.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk/win_gtk.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@corelib_win_gtk.o: $(srcdir)/src/gtk1/win_gtk.c $(CORELIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CCC) -c -o $@ $(CORELIB_CFLAGS) $(srcdir)/src/gtk1/win_gtk.c
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@corelib_win_gtk.o: $(srcdir)/src/gtk1/win_gtk.c $(CORELIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CCC) -c -o $@ $(CORELIB_CFLAGS) $(srcdir)/src/gtk1/win_gtk.c
index 6b640e9861419e2cf8b86ec624c6da8066d2e68a..cde7bbdadc5faf154771094ce8452c44695716f1 100644 (file)
@@ -984,7 +984,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     src/gtk/tooltip.cpp
     src/gtk/toplevel.cpp
     src/gtk/utilsgtk.cpp
     src/gtk/tooltip.cpp
     src/gtk/toplevel.cpp
     src/gtk/utilsgtk.cpp
-    src/gtk/win_gtk.c
+    src/gtk/win_gtk.cpp
     src/gtk/window.cpp
 </set>
 <set var="GTK_LOWLEVEL_HDR" hints="files">
     src/gtk/window.cpp
 </set>
 <set var="GTK_LOWLEVEL_HDR" hints="files">
index a6c5180f4e4314f634e364e11ca8916c55350146..696530f9cd22ca305b1d1b6a3f0a99ab3b54500a 100644 (file)
@@ -1,88 +1,34 @@
 /* ///////////////////////////////////////////////////////////////////////////
 // Name:        win_gtk.h
 /* ///////////////////////////////////////////////////////////////////////////
 // Name:        win_gtk.h
-// Purpose:     wxWidgets's GTK base widget = GtkPizza
+// Purpose:     native GTK+ widget for wxWindow
 // Author:      Robert Roebling
 // Id:          $Id$
 // Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////// */
 
 // Author:      Robert Roebling
 // Id:          $Id$
 // Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////// */
 
+#ifndef _WX_GTK_PIZZA_H_
+#define _WX_GTK_PIZZA_H_
 
 
-#ifndef __GTK_PIZZA_H__
-#define __GTK_PIZZA_H__
+#include <gtk/gtkfixed.h>
 
 
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+#define WX_PIZZA(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, wxPizza::type(), wxPizza)
+#define WX_IS_PIZZA(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, wxPizza::type())
 
 
-#include <gtk/gtkcontainer.h>
-
-#include "wx/dlimpexp.h"
-
-#define GTK_PIZZA(obj)          GTK_CHECK_CAST (obj, gtk_pizza_get_type (), GtkPizza)
-#define GTK_IS_PIZZA(obj)       GTK_CHECK_TYPE (obj, gtk_pizza_get_type ())
-
-typedef struct _GtkPizza        GtkPizza;
-
-struct _GtkPizza
+struct WXDLLIMPEXP_CORE wxPizza
 {
 {
-    GtkContainer container;
-    GList *children;
-
-    guint m_xoffset;
-    guint m_yoffset;
-    
-    gboolean m_noscroll;
-    
-    GdkWindow *bin_window;
+    static GtkWidget* New(long windowStyle = 0);
+    static GType type();
+    void move(GtkWidget* widget, int x, int y);
+    void scroll(int dx, int dy);
+    void get_border_widths(int& x, int& y);
+
+    GtkFixed m_fixed;
+    GdkWindow* m_backing_window;
+    int m_scroll_x;
+    int m_scroll_y;
+    int m_border_style;
+    bool m_is_scrollable;
 };
 
 };
 
-WXDLLIMPEXP_CORE
-GtkType    gtk_pizza_get_type        (void);
-WXDLLIMPEXP_CORE
-GtkWidget* gtk_pizza_new             (void);
-WXDLLIMPEXP_CORE
-GtkWidget* gtk_pizza_new_no_scroll   (void);
-
-/* accessors */
-
-WXDLLIMPEXP_CORE
-gint       gtk_pizza_get_xoffset     (GtkPizza          *pizza); 
-WXDLLIMPEXP_CORE
-gint       gtk_pizza_get_yoffset     (GtkPizza          *pizza); 
-WXDLLIMPEXP_CORE
-void       gtk_pizza_set_xoffset     (GtkPizza          *pizza, gint xoffset); 
-WXDLLIMPEXP_CORE
-void       gtk_pizza_set_yoffset     (GtkPizza          *pizza, gint yoffset); 
-
-
-WXDLLIMPEXP_CORE
-gint       gtk_pizza_get_rtl_offset  (GtkPizza          *pizza); 
-
-
-WXDLLIMPEXP_CORE
-void       gtk_pizza_scroll          (GtkPizza          *pizza,
-                                      gint               dx,
-                                      gint               dy);
-
-WXDLLIMPEXP_CORE
-void       gtk_pizza_put             (GtkPizza          *pizza,
-                                      GtkWidget         *widget,
-                                      gint               x,
-                                      gint               y,
-                                      gint               width,
-                                      gint               height);
-
-WXDLLIMPEXP_CORE
-void       gtk_pizza_set_size        (GtkPizza          *pizza,
-                                      GtkWidget         *widget,
-                                      gint               x,
-                                      gint               y,
-                                      gint               width,
-                                      gint               height);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* __GTK_PIZZA_H__ */
+#endif // _WX_GTK_PIZZA_H_
index 6ed61b72cca24c3f4daccd52f75deff6b61bd7f9..3becd7bb5c01ed8b2efb05c309f55d6e63afc8c7 100644 (file)
@@ -184,6 +184,8 @@ public:
     // fire off capture lost events.
     void GTKReleaseMouseAndNotify();
 
     // fire off capture lost events.
     void GTKReleaseMouseAndNotify();
 
+    GdkWindow* GTKGetDrawingWindow() const;
+
 protected:
     // Override GTKWidgetNeedsMnemonic and return true if your
     // needs to set its mnemonic widget, such as for a
 protected:
     // Override GTKWidgetNeedsMnemonic and return true if your
     // needs to set its mnemonic widget, such as for a
index f80dd7b645b4a9458f733a52776b98dc4e3d6c86..1fb59e507e21b6e1ec44d490ae5fe1202c115a2f 100644 (file)
@@ -110,6 +110,8 @@ public:
 
     virtual bool IsDoubleBuffered() const { return false; }
 
 
     virtual bool IsDoubleBuffered() const { return false; }
 
+    GdkWindow* GTKGetDrawingWindow() const;
+
     // implementation
     // --------------
 
     // implementation
     // --------------
 
index 5103cc80e9aff277829d347410a85aa00dd77add..34393e5315a4fc43babcc7733b318a1b433c6c0b 100644 (file)
@@ -41,7 +41,6 @@
 
 #ifdef __WXGTK__
 #include <gtk/gtk.h>
 
 #ifdef __WXGTK__
 #include <gtk/gtk.h>
-#include "wx/gtk/win_gtk.h"
 #include "wx/renderer.h"
 #endif
 
 #include "wx/renderer.h"
 #endif
 
@@ -467,12 +466,12 @@ void wxAuiDefaultDockArt::DrawSash(wxDC& dc, wxWindow *window, int orientation,
 
     if (!window) return;
     if (!window->m_wxwindow) return;
 
     if (!window) return;
     if (!window->m_wxwindow) return;
-    if (!GTK_PIZZA(window->m_wxwindow)->bin_window) return;
+    if (!GTK_WIDGET_DRAWABLE(window->m_wxwindow)) return;
 
     gtk_paint_handle
     (
         window->m_wxwindow->style,
 
     gtk_paint_handle
     (
         window->m_wxwindow->style,
-        GTK_PIZZA(window->m_wxwindow)->bin_window,
+        window->GTKGetDrawingWindow(),
         // flags & wxCONTROL_CURRENT ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL,
         GTK_STATE_NORMAL,
         GTK_SHADOW_NONE,
         // flags & wxCONTROL_CURRENT ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL,
         GTK_STATE_NORMAL,
         GTK_SHADOW_NONE,
index f40b1c58451d7da7805bfb198930fcb895703dbe..79e6e9387dc7b1455e0068eb3a564687b457690c 100644 (file)
@@ -33,7 +33,7 @@
 #endif
 
 #ifdef __WXGTK__
 #endif
 
 #ifdef __WXGTK__
-#include "wx/gtk/win_gtk.h"
+#include <gtk/gtk.h>
 #endif
 
 #include "wx/graphics.h"
 #endif
 
 #include "wx/graphics.h"
index 44fa9ad078fb59cf9a70dfd961f9f6bd4e9f64dd..d5330414b0963650c7b923093a4bb37cec24b153 100644 (file)
@@ -27,7 +27,6 @@
 
 #ifdef __WXGTK20__
     #include <gtk/gtk.h>
 
 #ifdef __WXGTK20__
     #include <gtk/gtk.h>
-    #include "wx/gtk/win_gtk.h"
 #endif
 
 // we only have to do it here when we use wxStatusBarGeneric in addition to the
 #endif
 
 // we only have to do it here when we use wxStatusBarGeneric in addition to the
@@ -204,7 +203,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
         if (GetLayoutDirection() == wxLayout_RightToLeft)
         {
             gtk_paint_resize_grip( m_widget->style,
         if (GetLayoutDirection() == wxLayout_RightToLeft)
         {
             gtk_paint_resize_grip( m_widget->style,
-                               GTK_PIZZA(m_wxwindow)->bin_window,
+                               GTKGetDrawingWindow(),
                                (GtkStateType) GTK_WIDGET_STATE (m_widget),
                                NULL,
                                m_widget,
                                (GtkStateType) GTK_WIDGET_STATE (m_widget),
                                NULL,
                                m_widget,
@@ -215,7 +214,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
         else
         {
             gtk_paint_resize_grip( m_widget->style,
         else
         {
             gtk_paint_resize_grip( m_widget->style,
-                               GTK_PIZZA(m_wxwindow)->bin_window,
+                               GTKGetDrawingWindow(),
                                (GtkStateType) GTK_WIDGET_STATE (m_widget),
                                NULL,
                                m_widget,
                                (GtkStateType) GTK_WIDGET_STATE (m_widget),
                                NULL,
                                m_widget,
@@ -423,7 +422,7 @@ void wxStatusBarGeneric::OnLeftDown(wxMouseEvent& event)
         if (!GTK_IS_WINDOW (ancestor))
             return;
 
         if (!GTK_IS_WINDOW (ancestor))
             return;
 
-        GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window;
+        GdkWindow *source = GTKGetDrawingWindow();
 
         int org_x = 0;
         int org_y = 0;
 
         int org_x = 0;
         int org_y = 0;
@@ -470,7 +469,7 @@ void wxStatusBarGeneric::OnRightDown(wxMouseEvent& event)
         if (!GTK_IS_WINDOW (ancestor))
             return;
 
         if (!GTK_IS_WINDOW (ancestor))
             return;
 
-        GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window;
+        GdkWindow *source = GTKGetDrawingWindow();
 
         int org_x = 0;
         int org_y = 0;
 
         int org_x = 0;
         int org_y = 0;
index e23081e0cc0ab954a516ef5df35527d5773991aa..62cf72b0bed670e3d106b35b24af0c2461f80fa2 100644 (file)
@@ -26,7 +26,6 @@
     #include <gpe/init.h>
 #endif
 
     #include <gpe/init.h>
 #endif
 
-#include "wx/gtk/win_gtk.h"
 #include "wx/gtk/private.h"
 #include "wx/apptrait.h"
 
 #include "wx/gtk/private.h"
 #include "wx/apptrait.h"
 
index 3845198b4abae62fad823624a66dd547be29186b..ff4289883bec3aeb98122d005ef3d81b8a13d741 100644 (file)
@@ -28,7 +28,6 @@
 #include "wx/fontutil.h"
 #include "wx/scrolwin.h"
 
 #include "wx/fontutil.h"
 #include "wx/scrolwin.h"
 
-#include "wx/gtk/win_gtk.h"
 #include "wx/gtk/private.h"
 
 #include <gdk/gdkx.h>
 #include "wx/gtk/private.h"
 
 #include <gdk/gdkx.h>
@@ -311,8 +310,7 @@ wxWindowDC::wxWindowDC( wxWindow *window )
     m_layout = pango_layout_new( m_context );
     m_fontdesc = pango_font_description_copy( widget->style->font_desc );
 
     m_layout = pango_layout_new( m_context );
     m_fontdesc = pango_font_description_copy( widget->style->font_desc );
 
-    GtkPizza *pizza = GTK_PIZZA( widget );
-    m_window = pizza->bin_window;
+    m_window = widget->window;
 
     // Window not realized ?
     if (!m_window)
 
     // Window not realized ?
     if (!m_window)
index 3fc37ba80ec2047f0915f15532ea296ee654c97b..df96d5d8c84f95ac6a86ad691311277a86cb907b 100644 (file)
@@ -26,8 +26,6 @@
 #include <gtk/gtk.h>
 #include <gdk/gdkx.h>
 
 #include <gtk/gtk.h>
 #include <gdk/gdkx.h>
 
-#include "wx/gtk/win_gtk.h"
-
 #if WXWIN_COMPATIBILITY_2_8
 
 //-----------------------------------------------------------------------------
 #if WXWIN_COMPATIBILITY_2_8
 
 //-----------------------------------------------------------------------------
@@ -234,7 +232,7 @@ bool wxGLCanvas::Create(wxWindow *parent,
 
 Window wxGLCanvas::GetXWindow() const
 {
 
 Window wxGLCanvas::GetXWindow() const
 {
-    GdkWindow *window = GTK_PIZZA(m_wxwindow)->bin_window;
+    GdkWindow *window = m_wxwindow->window;
     return window ? GDK_WINDOW_XWINDOW(window) : 0;
 }
 
     return window ? GDK_WINDOW_XWINDOW(window) : 0;
 }
 
index 2dafe977bb6b44dc31b8b2dfce309095f01bfe5d..e82b1a4b252d56cc06bf59a536f50bc8aced1804 100644 (file)
@@ -109,12 +109,10 @@ gtk_dialog_realized_callback( GtkWidget * WXUNUSED(widget), wxPopupWindow *win )
 
 static void wxInsertChildInPopupWin(wxWindowGTK* parent, wxWindowGTK* child)
 {
 
 static void wxInsertChildInPopupWin(wxWindowGTK* parent, wxWindowGTK* child)
 {
-    gtk_pizza_put( GTK_PIZZA(parent->m_wxwindow),
-                   child->m_widget,
-                   child->m_x,
-                   child->m_y,
-                   child->m_width,
-                   child->m_height );
+    gtk_widget_set_size_request(
+        child->m_widget, child->m_width, child->m_height);
+    gtk_fixed_put(
+        GTK_FIXED(parent->m_wxwindow), child->m_widget, child->m_x, child->m_y);
 
     if (parent->HasFlag(wxTAB_TRAVERSAL))
     {
 
     if (parent->HasFlag(wxTAB_TRAVERSAL))
     {
@@ -165,7 +163,7 @@ bool wxPopupWindow::Create( wxWindow *parent, int style )
     g_signal_connect (m_widget, "delete_event",
                       G_CALLBACK (gtk_dialog_delete_callback), this);
 
     g_signal_connect (m_widget, "delete_event",
                       G_CALLBACK (gtk_dialog_delete_callback), this);
 
-    m_wxwindow = gtk_pizza_new();
+    m_wxwindow = wxPizza::New(m_windowStyle);
     gtk_widget_show( m_wxwindow );
     GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
 
     gtk_widget_show( m_wxwindow );
     GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
 
index d4c273d979ad21da67d5b0e4c6394a2351c40253..4eec03a12e3bbc0fd4f6365694d70b47369c422f 100644 (file)
@@ -33,7 +33,6 @@
 #endif
 
 #include <gtk/gtk.h>
 #endif
 
 #include <gtk/gtk.h>
-#include "wx/gtk/win_gtk.h"
 
 // ----------------------------------------------------------------------------
 // wxRendererGTK: our wxRendererNative implementation
 
 // ----------------------------------------------------------------------------
 // wxRendererGTK: our wxRendererNative implementation
index acaec2299a8353d33148e296b94de50e34a636a7..7ad3b37a467c3ce210bd839ebe8ad2998b15f811 100644 (file)
@@ -557,7 +557,7 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent,
     gtk_container_add( GTK_CONTAINER(m_widget), m_mainWidget );
 
     // m_wxwindow is the client area
     gtk_container_add( GTK_CONTAINER(m_widget), m_mainWidget );
 
     // m_wxwindow is the client area
-    m_wxwindow = gtk_pizza_new_no_scroll();
+    m_wxwindow = wxPizza::New();
     gtk_widget_show( m_wxwindow );
     gtk_container_add( GTK_CONTAINER(m_mainWidget), m_wxwindow );
 
     gtk_widget_show( m_wxwindow );
     gtk_container_add( GTK_CONTAINER(m_mainWidget), m_wxwindow );
 
@@ -1105,8 +1105,7 @@ bool wxTopLevelWindowGTK::SetShape(const wxRegion& region)
     GdkWindow *window = NULL;
     if (m_wxwindow)
     {
     GdkWindow *window = NULL;
     if (m_wxwindow)
     {
-        window = GTK_PIZZA(m_wxwindow)->bin_window;
-        do_shape_combine_region(window, region);
+        do_shape_combine_region(m_wxwindow->window, region);
     }
     window = m_widget->window;
     return do_shape_combine_region(window, region);
     }
     window = m_widget->window;
     return do_shape_combine_region(window, region);
index 9134aedf1a17b29e2086efb84b7bea09a00cab2f..030666ca70341079d988f8c560d593bb65d54e99 100644 (file)
    can find in m_widget (defined in wxWindow)
 
    When the class has a client area for drawing into and for containing children
    can find in m_widget (defined in wxWindow)
 
    When the class has a client area for drawing into and for containing children
-   it has to handle the client area widget (of the type GtkPizza, defined in
-   win_gtk.c), but there could be any number of widgets, handled by a class
+   it has to handle the client area widget (of the type wxPizza, defined in
+   win_gtk.cpp), but there could be any number of widgets, handled by a class.
    The common rule for all windows is only, that the widget that interacts with
    the rest of GTK must be referenced in m_widget and all other widgets must be
    children of this widget on the GTK level. The top-most widget, which also
    represents the client area, must be in the m_wxwindow field and must be of
    The common rule for all windows is only, that the widget that interacts with
    the rest of GTK must be referenced in m_widget and all other widgets must be
    children of this widget on the GTK level. The top-most widget, which also
    represents the client area, must be in the m_wxwindow field and must be of
-   the type GtkPizza.
+   the type wxPizza.
 
    As I said, the window classes that display a GTK native widget only have
    one widget, so in the case of e.g. the wxButton class m_widget holds a
    pointer to a GtkButton widget. But windows with client areas (for drawing
    and children) have a m_widget field that is a pointer to a GtkScrolled-
 
    As I said, the window classes that display a GTK native widget only have
    one widget, so in the case of e.g. the wxButton class m_widget holds a
    pointer to a GtkButton widget. But windows with client areas (for drawing
    and children) have a m_widget field that is a pointer to a GtkScrolled-
-   Window and a m_wxwindow field that is pointer to a GtkPizza and this
+   Window and a m_wxwindow field that is pointer to a wxPizza and this
    one is (in the GTK sense) a child of the GtkScrolledWindow.
 
    If the m_wxwindow field is set, then all input to this widget is inter-
    one is (in the GTK sense) a child of the GtkScrolledWindow.
 
    If the m_wxwindow field is set, then all input to this widget is inter-
    clicking on a scrollbar belonging to scrolled window will inevitably move
    the window. In wxWidgets, the scrollbar will only emit an event, send this
    to (normally) a wxScrolledWindow and that class will call ScrollWindow()
    clicking on a scrollbar belonging to scrolled window will inevitably move
    the window. In wxWidgets, the scrollbar will only emit an event, send this
    to (normally) a wxScrolledWindow and that class will call ScrollWindow()
-   which actually moves the window and its sub-windows. Note that GtkPizza
+   which actually moves the window and its sub-windows. Note that wxPizza
    memorizes how much it has been scrolled but that wxWidgets forgets this
    so that the two coordinates systems have to be kept in synch. This is done
    memorizes how much it has been scrolled but that wxWidgets forgets this
    so that the two coordinates systems have to be kept in synch. This is done
-   in various places using the pizza->xoffset and pizza->yoffset values.
+   in various places using the pizza->m_scroll_x and pizza->m_scroll_y values.
 
    III)
 
 
    III)
 
@@ -312,92 +312,6 @@ static void GetScrollbarWidth(GtkWidget* widget, int& w, int& h)
     }
 }
 
     }
 }
 
-static void draw_frame( GtkWidget *widget, wxWindowGTK *win )
-{
-    // wxUniversal widgets draw the borders and scrollbars themselves
-#ifndef __WXUNIVERSAL__
-    if (!win->m_hasVMT)
-        return;
-
-    int dx = 0;
-    int dy = 0;
-    if (GTK_WIDGET_NO_WINDOW (widget))
-    {
-        dx += widget->allocation.x;
-        dy += widget->allocation.y;
-    }
-
-    int x = dx;
-    int y = dy;
-
-    int dw = 0;
-    int dh = 0;
-    if (win->m_hasScrolling)
-    {
-        GetScrollbarWidth(widget, dw, dh);
-
-        if (win->GetLayoutDirection() == wxLayout_RightToLeft)
-        {
-            // This is actually wrong for old GTK+ version
-            // which do not display the scrollbar on the
-            // left side in RTL
-            x += dw;
-        }
-    }
-
-    int w = widget->allocation.width-dw;
-    int h = widget->allocation.height-dh;
-
-    if (win->HasFlag(wxRAISED_BORDER))
-    {
-        gtk_paint_shadow (widget->style,
-                          widget->window,
-                          GTK_STATE_NORMAL,
-                          GTK_SHADOW_OUT,
-                          NULL, NULL, NULL, // FIXME: No clipping?
-                          x, y, w, h );
-        return;
-    }
-
-    if (win->HasFlag(wxSUNKEN_BORDER))
-    {
-        gtk_paint_shadow (widget->style,
-                          widget->window,
-                          GTK_STATE_NORMAL,
-                          GTK_SHADOW_IN,
-                          NULL, NULL, NULL, // FIXME: No clipping?
-                          x, y, w, h );
-        return;
-    }
-
-    if (win->HasFlag(wxSIMPLE_BORDER))
-    {
-        GdkGC *gc;
-        gc = gdk_gc_new( widget->window );
-        gdk_gc_set_foreground( gc, &widget->style->black );
-        gdk_draw_rectangle( widget->window, gc, FALSE, x, y, w-1, h-1 );
-        g_object_unref (gc);
-        return;
-    }
-#endif // __WXUNIVERSAL__
-}
-
-//-----------------------------------------------------------------------------
-// "expose_event" of m_widget
-//-----------------------------------------------------------------------------
-
-extern "C" {
-static gboolean
-gtk_window_own_expose_callback( GtkWidget *widget,
-                                GdkEventExpose *gdk_event,
-                                wxWindowGTK *win )
-{
-    if (gdk_event->count == 0)
-        draw_frame(widget, win);
-    return false;
-}
-}
-
 //-----------------------------------------------------------------------------
 // "size_request" of m_widget
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // "size_request" of m_widget
 //-----------------------------------------------------------------------------
@@ -471,18 +385,9 @@ gtk_window_expose_callback( GtkWidget *widget,
 {
     DEBUG_MAIN_THREAD
 
 {
     DEBUG_MAIN_THREAD
 
-    // This callback gets called in drawing-idle time under
-    // GTK 2.0, so we don't need to defer anything to idle
-    // time anymore.
-
-    GtkPizza *pizza = GTK_PIZZA( widget );
-    if (gdk_event->window != pizza->bin_window)
-    {
-        // block expose events on GTK_WIDGET(pizza)->window,
-        //   all drawing is done on pizza->bin_window
-        return true;
-    }
-
+    // if this event is for the border-only GdkWindow
+    if (gdk_event->window != widget->window)
+        return false;
 
 #if 0
     if (win->GetName())
 
 #if 0
     if (win->GetName())
@@ -518,6 +423,53 @@ gtk_window_expose_callback( GtkWidget *widget,
 }
 }
 
 }
 }
 
+//-----------------------------------------------------------------------------
+// "expose_event" from m_widget, for drawing border
+//-----------------------------------------------------------------------------
+
+#ifndef __WXUNIVERSAL__
+extern "C" {
+static gboolean
+expose_event_border(GtkWidget* widget, GdkEventExpose* event, wxWindow* win)
+{
+    // if this event is not for the GdkWindow the border is drawn on
+    if (win->m_wxwindow == win->m_widget && event->window == widget->window)
+        return false;
+
+    int x = 0;
+    int y = 0;
+    // GtkScrolledWindow is GTK_NO_WINDOW
+    if (GTK_WIDGET_NO_WINDOW(widget))
+    {
+        x = widget->allocation.x;
+        y = widget->allocation.y;
+    }
+    int w = win->m_wxwindow->allocation.width;
+    int h = win->m_wxwindow->allocation.height;
+    if (win->HasFlag(wxBORDER_SIMPLE))
+    {
+        GdkGC* gc;
+        gc = gdk_gc_new(event->window);
+        gdk_gc_set_foreground(gc, &widget->style->black);
+        gdk_draw_rectangle(event->window, gc, false, x, y, w - 1, h - 1);
+        g_object_unref(gc);
+    }
+    else
+    {
+        GtkShadowType shadow = GTK_SHADOW_IN;
+        if (win->HasFlag(wxBORDER_RAISED))
+            shadow = GTK_SHADOW_OUT;
+        gtk_paint_shadow(
+            widget->style, event->window, GTK_STATE_NORMAL,
+            shadow, &event->area, widget, NULL, x, y, w, h);
+    }
+
+    // no further painting is needed for border-only GdkWindow
+    return win->m_wxwindow == win->m_widget;
+}
+}
+#endif // !__WXUNIVERSAL__
+
 //-----------------------------------------------------------------------------
 // "key_press_event" from any window
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // "key_press_event" from any window
 //-----------------------------------------------------------------------------
@@ -1244,7 +1196,7 @@ template<typename T> void InitMouseEvent(wxWindowGTK *win,
     if ((win->m_wxwindow) && (win->GetLayoutDirection() == wxLayout_RightToLeft))
     {
         // origin in the upper right corner
     if ((win->m_wxwindow) && (win->GetLayoutDirection() == wxLayout_RightToLeft))
     {
         // origin in the upper right corner
-        int window_width = gtk_pizza_get_rtl_offset( GTK_PIZZA(win->m_wxwindow) );
+        int window_width = win->m_wxwindow->allocation.width;
         event.m_x = window_width - event.m_x;
     }
 
         event.m_x = window_width - event.m_x;
     }
 
@@ -1294,9 +1246,9 @@ wxWindowGTK *FindWindowForMouseEvent(wxWindowGTK *win, wxCoord& x, wxCoord& y)
 
     if (win->m_wxwindow)
     {
 
     if (win->m_wxwindow)
     {
-        GtkPizza *pizza = GTK_PIZZA(win->m_wxwindow);
-        xx += gtk_pizza_get_xoffset( pizza );
-        yy += gtk_pizza_get_yoffset( pizza );
+        wxPizza* pizza = WX_PIZZA(win->m_wxwindow);
+        xx += pizza->m_scroll_x;
+        yy += pizza->m_scroll_y;
     }
 
     wxWindowList::compatibility_iterator node = win->GetChildren().GetFirst();
     }
 
     wxWindowList::compatibility_iterator node = win->GetChildren().GetFirst();
@@ -1863,8 +1815,7 @@ wx_window_focus_callback(GtkWidget *widget,
                          GtkDirectionType WXUNUSED(direction),
                          wxWindowGTK *win)
 {
                          GtkDirectionType WXUNUSED(direction),
                          wxWindowGTK *win)
 {
-    // the default handler for focus signal in GtkPizza (or, rather, in
-    // GtkScrolledWindow from which GtkPizza inherits this behaviour) sets
+    // the default handler for focus signal in GtkScrolledWindow sets
     // focus to the window itself even if it doesn't accept focus, i.e. has no
     // GTK_CAN_FOCUS in its style -- work around this by forcibly preventing
     // the signal from reaching gtk_scrolled_window_focus() if we don't have
     // focus to the window itself even if it doesn't accept focus, i.e. has no
     // GTK_CAN_FOCUS in its style -- work around this by forcibly preventing
     // the signal from reaching gtk_scrolled_window_focus() if we don't have
@@ -2031,15 +1982,14 @@ gtk_scrollbar_button_release_event(GtkRange* range, GdkEventButton*, wxWindow* w
 //-----------------------------------------------------------------------------
 
 static void
 //-----------------------------------------------------------------------------
 
 static void
-gtk_window_realized_callback( GtkWidget *m_widget, wxWindow *win )
+gtk_window_realized_callback(GtkWidget* widget, wxWindow* win)
 {
     DEBUG_MAIN_THREAD
 
     if (win->m_imData)
     {
 {
     DEBUG_MAIN_THREAD
 
     if (win->m_imData)
     {
-        GtkPizza *pizza = GTK_PIZZA( m_widget );
         gtk_im_context_set_client_window( win->m_imData->context,
         gtk_im_context_set_client_window( win->m_imData->context,
-                                          pizza->bin_window );
+                                          widget->window);
     }
 
     // We cannot set colours and fonts before the widget
     }
 
     // We cannot set colours and fonts before the widget
@@ -2068,9 +2018,10 @@ size_allocate(GtkWidget*, GtkAllocation* alloc, wxWindow* win)
     int h = alloc->height;
     if (win->m_wxwindow)
     {
     int h = alloc->height;
     if (win->m_wxwindow)
     {
-        const int border = GTK_CONTAINER(win->m_wxwindow)->border_width;
-        w -= 2 * border;
-        h -= 2 * border;
+        int border_x, border_y;
+        WX_PIZZA(win->m_wxwindow)->get_border_widths(border_x, border_y);
+        w -= 2 * border_x;
+        h -= 2 * border_y;
         if (w < 0) w = 0;
         if (h < 0) h = 0;
     }
         if (w < 0) w = 0;
         if (h < 0) h = 0;
     }
@@ -2197,16 +2148,14 @@ static void wxInsertChildInWindow( wxWindowGTK* parent, wxWindowGTK* child )
 {
     /* the window might have been scrolled already, do we
        have to adapt the position */
 {
     /* the window might have been scrolled already, do we
        have to adapt the position */
-    GtkPizza *pizza = GTK_PIZZA(parent->m_wxwindow);
-    child->m_x += gtk_pizza_get_xoffset( pizza );
-    child->m_y += gtk_pizza_get_yoffset( pizza );
+    wxPizza* pizza = WX_PIZZA(parent->m_wxwindow);
+    child->m_x += pizza->m_scroll_x;
+    child->m_y += pizza->m_scroll_y;
 
 
-    gtk_pizza_put( GTK_PIZZA(parent->m_wxwindow),
-                     child->m_widget,
-                     child->m_x,
-                     child->m_y,
-                     child->m_width,
-                     child->m_height );
+    gtk_widget_set_size_request(
+        child->m_widget, child->m_width, child->m_height);
+    gtk_fixed_put(
+        GTK_FIXED(parent->m_wxwindow), child->m_widget, child->m_x, child->m_y);
 }
 
 //-----------------------------------------------------------------------------
 }
 
 //-----------------------------------------------------------------------------
@@ -2337,31 +2286,13 @@ bool wxWindowGTK::Create( wxWindow *parent,
         return false;
     }
 
         return false;
     }
 
+    m_wxwindow = wxPizza::New(m_windowStyle);
     if (!HasFlag(wxHSCROLL) && !HasFlag(wxVSCROLL))
     if (!HasFlag(wxHSCROLL) && !HasFlag(wxVSCROLL))
-    {
-        m_wxwindow = gtk_pizza_new_no_scroll();
-
-#ifndef __WXUNIVERSAL__
-        if (HasFlag(wxSIMPLE_BORDER))
-            gtk_container_set_border_width((GtkContainer*)m_wxwindow, 1);
-        else if (HasFlag(wxRAISED_BORDER) || HasFlag(wxSUNKEN_BORDER))
-            gtk_container_set_border_width((GtkContainer*)m_wxwindow, 2);
-#endif // __WXUNIVERSAL__
-
         m_widget = m_wxwindow;
         m_widget = m_wxwindow;
-    }
     else
     {
     else
     {
-        m_wxwindow = gtk_pizza_new();
-
-#ifndef __WXUNIVERSAL__
-        if (HasFlag(wxSIMPLE_BORDER))
-            gtk_container_set_border_width((GtkContainer*)m_wxwindow, 1);
-        else if (HasFlag(wxRAISED_BORDER) || HasFlag(wxSUNKEN_BORDER))
-            gtk_container_set_border_width((GtkContainer*)m_wxwindow, 2);
-#endif // __WXUNIVERSAL__
-
         m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
         m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
+        gtk_container_set_resize_mode(GTK_CONTAINER(m_widget), GTK_RESIZE_QUEUE);
 
         GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(m_widget);
 
 
         GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(m_widget);
 
@@ -2516,7 +2447,7 @@ void wxWindowGTK::PostCreation()
                               G_CALLBACK (gtk_window_expose_callback), this);
 
             if (GetLayoutDirection() == wxLayout_LeftToRight)
                               G_CALLBACK (gtk_window_expose_callback), this);
 
             if (GetLayoutDirection() == wxLayout_LeftToRight)
-                gtk_widget_set_redraw_on_allocate( GTK_WIDGET(m_wxwindow), HasFlag( wxFULL_REPAINT_ON_RESIZE ) );
+                gtk_widget_set_redraw_on_allocate(m_wxwindow, HasFlag(wxFULL_REPAINT_ON_RESIZE));
         }
 
         // Create input method handler
         }
 
         // Create input method handler
@@ -2528,9 +2459,14 @@ void wxWindowGTK::PostCreation()
         g_signal_connect (m_imData->context, "commit",
                           G_CALLBACK (gtk_wxwindow_commit_cb), this);
 
         g_signal_connect (m_imData->context, "commit",
                           G_CALLBACK (gtk_wxwindow_commit_cb), this);
 
-        // these are called when the "sunken" or "raised" borders are drawn
-        g_signal_connect (m_widget, "expose_event",
-                          G_CALLBACK (gtk_window_own_expose_callback), this);
+        // border drawing
+#ifndef __WXUNIVERSAL__
+        if (HasFlag(wxBORDER_SIMPLE | wxBORDER_RAISED | wxBORDER_SUNKEN))
+        {
+            g_signal_connect(m_widget, "expose_event",
+                G_CALLBACK(expose_event_border), this);
+        }
+#endif
     }
 
     // focus handling
     }
 
     // focus handling
@@ -2684,9 +2620,9 @@ bool wxWindowGTK::Destroy()
 
 void wxWindowGTK::DoMoveWindow(int x, int y, int width, int height)
 {
 
 void wxWindowGTK::DoMoveWindow(int x, int y, int width, int height)
 {
+    gtk_widget_set_size_request(m_widget, width, height);
     // inform the parent to perform the move
     // inform the parent to perform the move
-    gtk_pizza_set_size( GTK_PIZZA(m_parent->m_wxwindow), m_widget, x, y, width, height );
-
+    WX_PIZZA(m_parent->m_wxwindow)->move(m_widget, x, y);
 }
 
 void wxWindowGTK::ConstrainSize()
 }
 
 void wxWindowGTK::ConstrainSize()
@@ -2740,9 +2676,9 @@ void wxWindowGTK::DoSetSize( int x, int y, int width, int height, int sizeFlags
 
     if (m_parent->m_wxwindow)
     {
 
     if (m_parent->m_wxwindow)
     {
-        GtkPizza *pizza = GTK_PIZZA(m_parent->m_wxwindow);
-        m_x = x + gtk_pizza_get_xoffset(pizza);
-        m_y = y + gtk_pizza_get_yoffset(pizza);
+        wxPizza* pizza = WX_PIZZA(m_parent->m_wxwindow);
+        m_x = x + pizza->m_scroll_x;
+        m_y = y + pizza->m_scroll_y;
 
         int left_border = 0;
         int right_border = 0;
 
         int left_border = 0;
         int right_border = 0;
@@ -2838,7 +2774,7 @@ void wxWindowGTK::OnInternalIdle()
 
         if (m_wxwindow && (m_wxwindow != m_widget))
         {
 
         if (m_wxwindow && (m_wxwindow != m_widget))
         {
-            GdkWindow *window = GTK_PIZZA(m_wxwindow)->bin_window;
+            GdkWindow *window = m_wxwindow->window;
             if (window)
                 gdk_window_set_cursor( window, cursor.GetCursor() );
 
             if (window)
                 gdk_window_set_cursor( window, cursor.GetCursor() );
 
@@ -2894,9 +2830,10 @@ void wxWindowGTK::DoGetClientSize( int *width, int *height ) const
         if (m_hasScrolling)
             GetScrollbarWidth(m_widget, dw, dh);
 
         if (m_hasScrolling)
             GetScrollbarWidth(m_widget, dw, dh);
 
-        const int border = GTK_CONTAINER(m_wxwindow)->border_width;
-        dw += 2 * border;
-        dh += 2 * border;
+        int border_x, border_y;
+        WX_PIZZA(m_wxwindow)->get_border_widths(border_x, border_y);
+        dw += 2 * border_x;
+        dh += 2 * border_y;
 
         w -= dw;
         h -= dh;
 
         w -= dw;
         h -= dh;
@@ -2918,16 +2855,16 @@ void wxWindowGTK::DoGetPosition( int *x, int *y ) const
     int dy = 0;
     if (!IsTopLevel() && m_parent && m_parent->m_wxwindow)
     {
     int dy = 0;
     if (!IsTopLevel() && m_parent && m_parent->m_wxwindow)
     {
-        GtkPizza *pizza = GTK_PIZZA(m_parent->m_wxwindow);
-        dx = gtk_pizza_get_xoffset( pizza );
-        dy = gtk_pizza_get_yoffset( pizza );
+        wxPizza* pizza = WX_PIZZA(m_parent->m_wxwindow);
+        dx = pizza->m_scroll_x;
+        dy = pizza->m_scroll_y;
     }
 
     if (m_x == -1 && m_y == -1)
     {
         GdkWindow *source = (GdkWindow *) NULL;
         if (m_wxwindow)
     }
 
     if (m_x == -1 && m_y == -1)
     {
         GdkWindow *source = (GdkWindow *) NULL;
         if (m_wxwindow)
-            source = GTK_PIZZA(m_wxwindow)->bin_window;
+            source = m_wxwindow->window;
         else
             source = m_widget->window;
 
         else
             source = m_widget->window;
 
@@ -2957,7 +2894,7 @@ void wxWindowGTK::DoClientToScreen( int *x, int *y ) const
 
     GdkWindow *source = (GdkWindow *) NULL;
     if (m_wxwindow)
 
     GdkWindow *source = (GdkWindow *) NULL;
     if (m_wxwindow)
-        source = GTK_PIZZA(m_wxwindow)->bin_window;
+        source = m_wxwindow->window;
     else
         source = m_widget->window;
 
     else
         source = m_widget->window;
 
@@ -2994,7 +2931,7 @@ void wxWindowGTK::DoScreenToClient( int *x, int *y ) const
 
     GdkWindow *source = (GdkWindow *) NULL;
     if (m_wxwindow)
 
     GdkWindow *source = (GdkWindow *) NULL;
     if (m_wxwindow)
-        source = GTK_PIZZA(m_wxwindow)->bin_window;
+        source = m_wxwindow->window;
     else
         source = m_widget->window;
 
     else
         source = m_widget->window;
 
@@ -3394,7 +3331,7 @@ wxWindowGTK::AdjustForLayoutDirection(wxCoord x,
                                       wxCoord WXUNUSED(width),
                                       wxCoord WXUNUSED(widthTotal)) const
 {
                                       wxCoord WXUNUSED(width),
                                       wxCoord WXUNUSED(widthTotal)) const
 {
-    // We now mirrors the coordinates of RTL windows in GtkPizza
+    // We now mirror the coordinates of RTL windows in wxPizza
     return x;
 }
 
     return x;
 }
 
@@ -3577,7 +3514,7 @@ void wxWindowGTK::WarpPointer( int x, int y )
 
     GdkWindow *window = (GdkWindow*) NULL;
     if (m_wxwindow)
 
     GdkWindow *window = (GdkWindow*) NULL;
     if (m_wxwindow)
-        window = GTK_PIZZA(m_wxwindow)->bin_window;
+        window = m_wxwindow->window;
     else
         window = GetConnectWidget()->window;
 
     else
         window = GetConnectWidget()->window;
 
@@ -3638,7 +3575,7 @@ void wxWindowGTK::Refresh(bool WXUNUSED(eraseBackground),
 
     if (m_wxwindow)
     {
 
     if (m_wxwindow)
     {
-        if (!GTK_PIZZA(m_wxwindow)->bin_window) return;
+        if (m_wxwindow->window == NULL) return;
 
         GdkRectangle gdk_rect,
                     *p;
 
         GdkRectangle gdk_rect,
                     *p;
@@ -3658,7 +3595,7 @@ void wxWindowGTK::Refresh(bool WXUNUSED(eraseBackground),
             p = NULL;
         }
 
             p = NULL;
         }
 
-        gdk_window_invalidate_rect( GTK_PIZZA(m_wxwindow)->bin_window, p, TRUE );
+        gdk_window_invalidate_rect(m_wxwindow->window, p, true);
     }
 }
 
     }
 }
 
@@ -3675,8 +3612,8 @@ void wxWindowGTK::Update()
 
 void wxWindowGTK::GtkUpdate()
 {
 
 void wxWindowGTK::GtkUpdate()
 {
-    if (m_wxwindow && GTK_PIZZA(m_wxwindow)->bin_window)
-        gdk_window_process_updates( GTK_PIZZA(m_wxwindow)->bin_window, FALSE );
+    if (m_wxwindow && m_wxwindow->window)
+        gdk_window_process_updates(m_wxwindow->window, false);
     if (m_widget && m_widget->window && (m_wxwindow != m_widget))
         gdk_window_process_updates( m_widget->window, FALSE );
 
     if (m_widget && m_widget->window && (m_wxwindow != m_widget))
         gdk_window_process_updates( m_widget->window, FALSE );
 
@@ -3724,8 +3661,7 @@ void wxWindowGTK::GtkSendPaintEvents()
         m_updateRegion.Clear();
 
         gint width;
         m_updateRegion.Clear();
 
         gint width;
-        gdk_window_get_geometry( GTK_PIZZA(m_wxwindow)->bin_window,
-                                 NULL, NULL, &width, NULL, NULL );
+        gdk_drawable_get_size(m_wxwindow->window, &width, NULL);
 
         wxRegionIterator upd( m_nativeUpdateRegion );
         while (upd)
 
         wxRegionIterator upd( m_nativeUpdateRegion );
         while (upd)
@@ -3743,9 +3679,6 @@ void wxWindowGTK::GtkSendPaintEvents()
         }
     }
 
         }
     }
 
-    // widget to draw on
-    GtkPizza *pizza = GTK_PIZZA (m_wxwindow);
-
     if (GetThemeEnabled() && (GetBackgroundStyle() == wxBG_STYLE_SYSTEM))
     {
         // find ancestor from which to steal background
     if (GetThemeEnabled() && (GetBackgroundStyle() == wxBG_STYLE_SYSTEM))
     {
         // find ancestor from which to steal background
@@ -3765,7 +3698,7 @@ void wxWindowGTK::GtkSendPaintEvents()
                 rect.height = upd.GetHeight();
 
                 gtk_paint_flat_box( parent->m_widget->style,
                 rect.height = upd.GetHeight();
 
                 gtk_paint_flat_box( parent->m_widget->style,
-                            pizza->bin_window,
+                            m_wxwindow->window,
                             (GtkStateType)GTK_WIDGET_STATE(m_wxwindow),
                             GTK_SHADOW_NONE,
                             &rect,
                             (GtkStateType)GTK_WIDGET_STATE(m_wxwindow),
                             GTK_SHADOW_NONE,
                             &rect,
@@ -3992,7 +3925,7 @@ bool wxWindowGTK::SetBackgroundStyle(wxBackgroundStyle style)
         GdkWindow *window;
         if ( m_wxwindow )
         {
         GdkWindow *window;
         if ( m_wxwindow )
         {
-            window = GTK_PIZZA(m_wxwindow)->bin_window;
+            window = m_wxwindow->window;
         }
         else
         {
         }
         else
         {
@@ -4065,7 +3998,7 @@ bool wxWindowGTK::GTKIsOwnWindow(GdkWindow *window) const
 
 GdkWindow *wxWindowGTK::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const
 {
 
 GdkWindow *wxWindowGTK::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const
 {
-    return m_wxwindow ? GTK_PIZZA(m_wxwindow)->bin_window : m_widget->window;
+    return m_wxwindow ? m_wxwindow->window : m_widget->window;
 }
 
 bool wxWindowGTK::SetFont( const wxFont &font )
 }
 
 bool wxWindowGTK::SetFont( const wxFont &font )
@@ -4088,7 +4021,7 @@ void wxWindowGTK::DoCaptureMouse()
 
     GdkWindow *window = (GdkWindow*) NULL;
     if (m_wxwindow)
 
     GdkWindow *window = (GdkWindow*) NULL;
     if (m_wxwindow)
-        window = GTK_PIZZA(m_wxwindow)->bin_window;
+        window = m_wxwindow->window;
     else
         window = GetConnectWidget()->window;
 
     else
         window = GetConnectWidget()->window;
 
@@ -4121,7 +4054,7 @@ void wxWindowGTK::DoReleaseMouse()
 
     GdkWindow *window = (GdkWindow*) NULL;
     if (m_wxwindow)
 
     GdkWindow *window = (GdkWindow*) NULL;
     if (m_wxwindow)
-        window = GTK_PIZZA(m_wxwindow)->bin_window;
+        window = m_wxwindow->window;
     else
         window = GetConnectWidget()->window;
 
     else
         window = GetConnectWidget()->window;
 
@@ -4297,10 +4230,7 @@ void wxWindowGTK::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
 
     m_clipPaintRegion = true;
 
 
     m_clipPaintRegion = true;
 
-    if (GetLayoutDirection() == wxLayout_RightToLeft)
-        gtk_pizza_scroll( GTK_PIZZA(m_wxwindow), dx, -dy );
-    else
-        gtk_pizza_scroll( GTK_PIZZA(m_wxwindow), -dx, -dy );
+    WX_PIZZA(m_wxwindow)->scroll(dx, dy);
 
     m_clipPaintRegion = false;
 
 
     m_clipPaintRegion = false;
 
@@ -4408,3 +4338,11 @@ void wxRemoveGrab(wxWindow* window)
 {
     gtk_grab_remove( (GtkWidget*) window->GetHandle() );
 }
 {
     gtk_grab_remove( (GtkWidget*) window->GetHandle() );
 }
+
+GdkWindow* wxWindowGTK::GTKGetDrawingWindow() const
+{
+    GdkWindow* window = NULL;
+    if (m_wxwindow)
+        window = m_wxwindow->window;
+    return window;
+}
index d2ad366660a476f3e0ede97020bdd0a4cd7e938e..889718e44be8bf55b2f5e8f643edf689d7a7a06a 100644 (file)
@@ -4224,3 +4224,11 @@ void wxWinModule::OnExit()
     if (g_eraseGC)
         gdk_gc_unref( g_eraseGC );
 }
     if (g_eraseGC)
         gdk_gc_unref( g_eraseGC );
 }
+
+GdkWindow* wxWindowGTK::GTKGetDrawingWindow() const
+{
+    GdkWindow* window = NULL;
+    if (m_wxwindow)
+        window = GTK_PIZZA(m_wxwindow)->bin_window;
+    return window;
+}
index 7f4ad8b4910a281bd4c64e986a6d113b4bb34a41..c3e72b52d1cd827be9bf5c5301feb3c72a48a96d 100644 (file)
@@ -37,7 +37,7 @@
 #include "wx/thread.h"              // wxMutex/wxMutexLocker
 
 #ifdef __WXGTK__
 #include "wx/thread.h"              // wxMutex/wxMutexLocker
 
 #ifdef __WXGTK__
-#    include "wx/gtk/win_gtk.h"
+    #include <gtk/gtk.h>
 #    include <gdk/gdkx.h>           // for GDK_WINDOW_XWINDOW
 #endif
 
 #    include <gdk/gdkx.h>           // for GDK_WINDOW_XWINDOW
 #endif
 
@@ -282,7 +282,7 @@ static gboolean gtk_window_expose_callback(GtkWidget *widget,
     if(event->count > 0)
         return FALSE;
 
     if(event->count > 0)
         return FALSE;
 
-    GdkWindow *window = GTK_PIZZA(be->GetControl()->m_wxwindow)->bin_window;
+    GdkWindow *window = be->GetControl()->GTKGetDrawingWindow();
 
     // I've seen this reccommended somewhere...
     // TODO: Is this needed? Maybe it is just cruft...
 
     // I've seen this reccommended somewhere...
     // TODO: Is this needed? Maybe it is just cruft...
@@ -320,7 +320,7 @@ static gboolean gtk_window_expose_callback(GtkWidget *widget,
 //-----------------------------------------------------------------------------
 #ifdef __WXGTK__
 extern "C" {
 //-----------------------------------------------------------------------------
 #ifdef __WXGTK__
 extern "C" {
-static gint gtk_window_realize_callback(GtkWidget* theWidget,
+static gint gtk_window_realize_callback(GtkWidget*,
                                         wxGStreamerMediaBackend* be)
 {
     DEBUG_MAIN_THREAD // TODO: Is this neccessary?
                                         wxGStreamerMediaBackend* be)
 {
     DEBUG_MAIN_THREAD // TODO: Is this neccessary?
@@ -333,7 +333,7 @@ static gint gtk_window_realize_callback(GtkWidget* theWidget,
     wxYield();    // FIXME: RN: X Server gets an error/crash if I don't do
                   //       this or a messagebox beforehand?!?!??
 
     wxYield();    // FIXME: RN: X Server gets an error/crash if I don't do
                   //       this or a messagebox beforehand?!?!??
 
-    GdkWindow *window = GTK_PIZZA(theWidget)->bin_window;
+    GdkWindow *window = be->GetControl()->GTKGetDrawingWindow();
     wxASSERT(window);
 
     gst_x_overlay_set_xwindow_id( GST_X_OVERLAY(be->m_xoverlay),
     wxASSERT(window);
 
     gst_x_overlay_set_xwindow_id( GST_X_OVERLAY(be->m_xoverlay),
@@ -737,7 +737,7 @@ void wxGStreamerMediaBackend::SetupXOverlay()
     else
     {
         wxYield(); // see realize callback...
     else
     {
         wxYield(); // see realize callback...
-        GdkWindow *window = GTK_PIZZA(m_ctrl->m_wxwindow)->bin_window;
+        GdkWindow *window = m_ctrl->m_wxwindow->GTKGetDrawingWindow();
         wxASSERT(window);
 #endif
 
         wxASSERT(window);
 #endif