New "pizza" widget implementation. Window border widths now match the GtkStyle they are drawn with.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49687 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
16
Makefile.in
16
Makefile.in
@@ -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@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@ $(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@monodll_win_gtk.o: $(srcdir)/src/gtk/win_gtk.cpp $(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@ $(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@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@ $(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@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@ $(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@monolib_win_gtk.o: $(srcdir)/src/gtk/win_gtk.cpp $(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@ $(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@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@ $(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@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@ $(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@coredll_win_gtk.o: $(srcdir)/src/gtk/win_gtk.cpp $(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@ $(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@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@ $(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@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@ $(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@corelib_win_gtk.o: $(srcdir)/src/gtk/win_gtk.cpp $(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@ $(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@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@ $(CCC) -c -o $@ $(CORELIB_CFLAGS) $(srcdir)/src/gtk1/win_gtk.c
|
||||||
|
@@ -984,7 +984,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
src/gtk/tooltip.cpp
|
src/gtk/tooltip.cpp
|
||||||
src/gtk/toplevel.cpp
|
src/gtk/toplevel.cpp
|
||||||
src/gtk/utilsgtk.cpp
|
src/gtk/utilsgtk.cpp
|
||||||
src/gtk/win_gtk.c
|
src/gtk/win_gtk.cpp
|
||||||
src/gtk/window.cpp
|
src/gtk/window.cpp
|
||||||
</set>
|
</set>
|
||||||
<set var="GTK_LOWLEVEL_HDR" hints="files">
|
<set var="GTK_LOWLEVEL_HDR" hints="files">
|
||||||
|
@@ -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
|
// Author: Robert Roebling
|
||||||
// Id: $Id$
|
// Id: $Id$
|
||||||
// Copyright: (c) 1998 Robert Roebling
|
// Copyright: (c) 1998 Robert Roebling
|
||||||
// Licence: wxWindows licence
|
// Licence: wxWindows licence
|
||||||
/////////////////////////////////////////////////////////////////////////// */
|
/////////////////////////////////////////////////////////////////////////// */
|
||||||
|
|
||||||
|
#ifndef _WX_GTK_PIZZA_H_
|
||||||
|
#define _WX_GTK_PIZZA_H_
|
||||||
|
|
||||||
#ifndef __GTK_PIZZA_H__
|
#include <gtk/gtkfixed.h>
|
||||||
#define __GTK_PIZZA_H__
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#define WX_PIZZA(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, wxPizza::type(), wxPizza)
|
||||||
extern "C" {
|
#define WX_IS_PIZZA(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, wxPizza::type())
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#include <gtk/gtkcontainer.h>
|
struct WXDLLIMPEXP_CORE wxPizza
|
||||||
|
|
||||||
#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
|
|
||||||
{
|
{
|
||||||
GtkContainer container;
|
static GtkWidget* New(long windowStyle = 0);
|
||||||
GList *children;
|
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);
|
||||||
|
|
||||||
guint m_xoffset;
|
GtkFixed m_fixed;
|
||||||
guint m_yoffset;
|
GdkWindow* m_backing_window;
|
||||||
|
int m_scroll_x;
|
||||||
gboolean m_noscroll;
|
int m_scroll_y;
|
||||||
|
int m_border_style;
|
||||||
GdkWindow *bin_window;
|
bool m_is_scrollable;
|
||||||
};
|
};
|
||||||
|
|
||||||
WXDLLIMPEXP_CORE
|
#endif // _WX_GTK_PIZZA_H_
|
||||||
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__ */
|
|
||||||
|
@@ -184,6 +184,8 @@ public:
|
|||||||
// fire off capture lost events.
|
// fire off capture lost events.
|
||||||
void GTKReleaseMouseAndNotify();
|
void GTKReleaseMouseAndNotify();
|
||||||
|
|
||||||
|
GdkWindow* GTKGetDrawingWindow() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Override GTKWidgetNeedsMnemonic and return true if your
|
// Override GTKWidgetNeedsMnemonic and return true if your
|
||||||
// needs to set its mnemonic widget, such as for a
|
// needs to set its mnemonic widget, such as for a
|
||||||
|
@@ -110,6 +110,8 @@ public:
|
|||||||
|
|
||||||
virtual bool IsDoubleBuffered() const { return false; }
|
virtual bool IsDoubleBuffered() const { return false; }
|
||||||
|
|
||||||
|
GdkWindow* GTKGetDrawingWindow() const;
|
||||||
|
|
||||||
// implementation
|
// implementation
|
||||||
// --------------
|
// --------------
|
||||||
|
|
||||||
|
@@ -41,7 +41,6 @@
|
|||||||
|
|
||||||
#ifdef __WXGTK__
|
#ifdef __WXGTK__
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include "wx/gtk/win_gtk.h"
|
|
||||||
#include "wx/renderer.h"
|
#include "wx/renderer.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -467,12 +466,12 @@ void wxAuiDefaultDockArt::DrawSash(wxDC& dc, wxWindow *window, int orientation,
|
|||||||
|
|
||||||
if (!window) return;
|
if (!window) return;
|
||||||
if (!window->m_wxwindow) 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
|
gtk_paint_handle
|
||||||
(
|
(
|
||||||
window->m_wxwindow->style,
|
window->m_wxwindow->style,
|
||||||
GTK_PIZZA(window->m_wxwindow)->bin_window,
|
window->GTKGetDrawingWindow(),
|
||||||
// flags & wxCONTROL_CURRENT ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL,
|
// flags & wxCONTROL_CURRENT ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL,
|
||||||
GTK_STATE_NORMAL,
|
GTK_STATE_NORMAL,
|
||||||
GTK_SHADOW_NONE,
|
GTK_SHADOW_NONE,
|
||||||
|
@@ -33,7 +33,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __WXGTK__
|
#ifdef __WXGTK__
|
||||||
#include "wx/gtk/win_gtk.h"
|
#include <gtk/gtk.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/graphics.h"
|
#include "wx/graphics.h"
|
||||||
|
@@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include "wx/gtk/win_gtk.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// we only have to do it here when we use wxStatusBarGeneric in addition to the
|
// 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)
|
if (GetLayoutDirection() == wxLayout_RightToLeft)
|
||||||
{
|
{
|
||||||
gtk_paint_resize_grip( m_widget->style,
|
gtk_paint_resize_grip( m_widget->style,
|
||||||
GTK_PIZZA(m_wxwindow)->bin_window,
|
GTKGetDrawingWindow(),
|
||||||
(GtkStateType) GTK_WIDGET_STATE (m_widget),
|
(GtkStateType) GTK_WIDGET_STATE (m_widget),
|
||||||
NULL,
|
NULL,
|
||||||
m_widget,
|
m_widget,
|
||||||
@@ -215,7 +214,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
gtk_paint_resize_grip( m_widget->style,
|
gtk_paint_resize_grip( m_widget->style,
|
||||||
GTK_PIZZA(m_wxwindow)->bin_window,
|
GTKGetDrawingWindow(),
|
||||||
(GtkStateType) GTK_WIDGET_STATE (m_widget),
|
(GtkStateType) GTK_WIDGET_STATE (m_widget),
|
||||||
NULL,
|
NULL,
|
||||||
m_widget,
|
m_widget,
|
||||||
@@ -423,7 +422,7 @@ void wxStatusBarGeneric::OnLeftDown(wxMouseEvent& event)
|
|||||||
if (!GTK_IS_WINDOW (ancestor))
|
if (!GTK_IS_WINDOW (ancestor))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window;
|
GdkWindow *source = GTKGetDrawingWindow();
|
||||||
|
|
||||||
int org_x = 0;
|
int org_x = 0;
|
||||||
int org_y = 0;
|
int org_y = 0;
|
||||||
@@ -470,7 +469,7 @@ void wxStatusBarGeneric::OnRightDown(wxMouseEvent& event)
|
|||||||
if (!GTK_IS_WINDOW (ancestor))
|
if (!GTK_IS_WINDOW (ancestor))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window;
|
GdkWindow *source = GTKGetDrawingWindow();
|
||||||
|
|
||||||
int org_x = 0;
|
int org_x = 0;
|
||||||
int org_y = 0;
|
int org_y = 0;
|
||||||
|
@@ -26,7 +26,6 @@
|
|||||||
#include <gpe/init.h>
|
#include <gpe/init.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/gtk/win_gtk.h"
|
|
||||||
#include "wx/gtk/private.h"
|
#include "wx/gtk/private.h"
|
||||||
#include "wx/apptrait.h"
|
#include "wx/apptrait.h"
|
||||||
|
|
||||||
|
@@ -28,7 +28,6 @@
|
|||||||
#include "wx/fontutil.h"
|
#include "wx/fontutil.h"
|
||||||
#include "wx/scrolwin.h"
|
#include "wx/scrolwin.h"
|
||||||
|
|
||||||
#include "wx/gtk/win_gtk.h"
|
|
||||||
#include "wx/gtk/private.h"
|
#include "wx/gtk/private.h"
|
||||||
|
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
@@ -311,8 +310,7 @@ wxWindowDC::wxWindowDC( wxWindow *window )
|
|||||||
m_layout = pango_layout_new( m_context );
|
m_layout = pango_layout_new( m_context );
|
||||||
m_fontdesc = pango_font_description_copy( widget->style->font_desc );
|
m_fontdesc = pango_font_description_copy( widget->style->font_desc );
|
||||||
|
|
||||||
GtkPizza *pizza = GTK_PIZZA( widget );
|
m_window = widget->window;
|
||||||
m_window = pizza->bin_window;
|
|
||||||
|
|
||||||
// Window not realized ?
|
// Window not realized ?
|
||||||
if (!m_window)
|
if (!m_window)
|
||||||
|
@@ -26,8 +26,6 @@
|
|||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <gdk/gdkx.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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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),
|
gtk_widget_set_size_request(
|
||||||
child->m_widget,
|
child->m_widget, child->m_width, child->m_height);
|
||||||
child->m_x,
|
gtk_fixed_put(
|
||||||
child->m_y,
|
GTK_FIXED(parent->m_wxwindow), child->m_widget, child->m_x, child->m_y);
|
||||||
child->m_width,
|
|
||||||
child->m_height );
|
|
||||||
|
|
||||||
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_signal_connect (m_widget, "delete_event",
|
||||||
G_CALLBACK (gtk_dialog_delete_callback), this);
|
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_show( m_wxwindow );
|
||||||
GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
||||||
|
|
||||||
|
@@ -33,7 +33,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include "wx/gtk/win_gtk.h"
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxRendererGTK: our wxRendererNative implementation
|
// wxRendererGTK: our wxRendererNative implementation
|
||||||
|
@@ -557,7 +557,7 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent,
|
|||||||
gtk_container_add( GTK_CONTAINER(m_widget), m_mainWidget );
|
gtk_container_add( GTK_CONTAINER(m_widget), m_mainWidget );
|
||||||
|
|
||||||
// m_wxwindow is the client area
|
// m_wxwindow is the client area
|
||||||
m_wxwindow = gtk_pizza_new_no_scroll();
|
m_wxwindow = wxPizza::New();
|
||||||
gtk_widget_show( m_wxwindow );
|
gtk_widget_show( m_wxwindow );
|
||||||
gtk_container_add( GTK_CONTAINER(m_mainWidget), m_wxwindow );
|
gtk_container_add( GTK_CONTAINER(m_mainWidget), m_wxwindow );
|
||||||
|
|
||||||
@@ -1105,8 +1105,7 @@ bool wxTopLevelWindowGTK::SetShape(const wxRegion& region)
|
|||||||
GdkWindow *window = NULL;
|
GdkWindow *window = NULL;
|
||||||
if (m_wxwindow)
|
if (m_wxwindow)
|
||||||
{
|
{
|
||||||
window = GTK_PIZZA(m_wxwindow)->bin_window;
|
do_shape_combine_region(m_wxwindow->window, region);
|
||||||
do_shape_combine_region(window, region);
|
|
||||||
}
|
}
|
||||||
window = m_widget->window;
|
window = m_widget->window;
|
||||||
return do_shape_combine_region(window, region);
|
return do_shape_combine_region(window, region);
|
||||||
|
@@ -112,19 +112,19 @@
|
|||||||
can find in m_widget (defined in wxWindow)
|
can find in m_widget (defined in wxWindow)
|
||||||
|
|
||||||
When the class has a client area for drawing into and for containing children
|
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
|
it has to handle the client area widget (of the type wxPizza, defined in
|
||||||
win_gtk.c), but there could be any number of widgets, handled by a class
|
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 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
|
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
|
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
|
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
|
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
|
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
|
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-
|
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.
|
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-
|
If the m_wxwindow field is set, then all input to this widget is inter-
|
||||||
@@ -138,10 +138,10 @@
|
|||||||
clicking on a scrollbar belonging to scrolled window will inevitably move
|
clicking on a scrollbar belonging to scrolled window will inevitably move
|
||||||
the window. In wxWidgets, the scrollbar will only emit an event, send this
|
the window. In wxWidgets, the scrollbar will only emit an event, send this
|
||||||
to (normally) a wxScrolledWindow and that class will call ScrollWindow()
|
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
|
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
|
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
|
// if this event is for the border-only GdkWindow
|
||||||
// GTK 2.0, so we don't need to defer anything to idle
|
if (gdk_event->window != widget->window)
|
||||||
// time anymore.
|
return false;
|
||||||
|
|
||||||
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 0
|
#if 0
|
||||||
if (win->GetName())
|
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))
|
if ((win->m_wxwindow) && (win->GetLayoutDirection() == wxLayout_RightToLeft))
|
||||||
{
|
{
|
||||||
// origin in the upper right corner
|
// 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);
|
wxPizza* pizza = WX_PIZZA(win->m_wxwindow);
|
||||||
xx += gtk_pizza_get_xoffset( pizza );
|
xx += pizza->m_scroll_x;
|
||||||
yy += gtk_pizza_get_yoffset( pizza );
|
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),
|
GtkDirectionType WXUNUSED(direction),
|
||||||
wxWindowGTK *win)
|
wxWindowGTK *win)
|
||||||
{
|
{
|
||||||
// the default handler for focus signal in GtkPizza (or, rather, in
|
// the default handler for focus signal in GtkScrolledWindow sets
|
||||||
// GtkScrolledWindow from which GtkPizza inherits this behaviour) sets
|
|
||||||
// focus to the window itself even if it doesn't accept focus, i.e. has no
|
// 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
|
// 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
|
// 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
|
DEBUG_MAIN_THREAD
|
||||||
|
|
||||||
if (win->m_imData)
|
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;
|
int h = alloc->height;
|
||||||
if (win->m_wxwindow)
|
if (win->m_wxwindow)
|
||||||
{
|
{
|
||||||
const int border = GTK_CONTAINER(win->m_wxwindow)->border_width;
|
int border_x, border_y;
|
||||||
w -= 2 * border;
|
WX_PIZZA(win->m_wxwindow)->get_border_widths(border_x, border_y);
|
||||||
h -= 2 * border;
|
w -= 2 * border_x;
|
||||||
|
h -= 2 * border_y;
|
||||||
if (w < 0) w = 0;
|
if (w < 0) w = 0;
|
||||||
if (h < 0) h = 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
|
/* the window might have been scrolled already, do we
|
||||||
have to adapt the position */
|
have to adapt the position */
|
||||||
GtkPizza *pizza = GTK_PIZZA(parent->m_wxwindow);
|
wxPizza* pizza = WX_PIZZA(parent->m_wxwindow);
|
||||||
child->m_x += gtk_pizza_get_xoffset( pizza );
|
child->m_x += pizza->m_scroll_x;
|
||||||
child->m_y += gtk_pizza_get_yoffset( pizza );
|
child->m_y += pizza->m_scroll_y;
|
||||||
|
|
||||||
gtk_pizza_put( GTK_PIZZA(parent->m_wxwindow),
|
gtk_widget_set_size_request(
|
||||||
child->m_widget,
|
child->m_widget, child->m_width, child->m_height);
|
||||||
child->m_x,
|
gtk_fixed_put(
|
||||||
child->m_y,
|
GTK_FIXED(parent->m_wxwindow), child->m_widget, child->m_x, child->m_y);
|
||||||
child->m_width,
|
|
||||||
child->m_height );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -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);
|
G_CALLBACK (gtk_window_expose_callback), this);
|
||||||
|
|
||||||
if (GetLayoutDirection() == wxLayout_LeftToRight)
|
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_signal_connect (m_imData->context, "commit",
|
||||||
G_CALLBACK (gtk_wxwindow_commit_cb), this);
|
G_CALLBACK (gtk_wxwindow_commit_cb), this);
|
||||||
|
|
||||||
// these are called when the "sunken" or "raised" borders are drawn
|
// border drawing
|
||||||
g_signal_connect (m_widget, "expose_event",
|
#ifndef __WXUNIVERSAL__
|
||||||
G_CALLBACK (gtk_window_own_expose_callback), this);
|
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);
|
wxPizza* pizza = WX_PIZZA(m_parent->m_wxwindow);
|
||||||
m_x = x + gtk_pizza_get_xoffset(pizza);
|
m_x = x + pizza->m_scroll_x;
|
||||||
m_y = y + gtk_pizza_get_yoffset(pizza);
|
m_y = y + pizza->m_scroll_y;
|
||||||
|
|
||||||
int left_border = 0;
|
int left_border = 0;
|
||||||
int right_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)
|
if (window)
|
||||||
gdk_window_set_cursor( window, cursor.GetCursor() );
|
gdk_window_set_cursor( window, cursor.GetCursor() );
|
||||||
|
|
||||||
@@ -2894,9 +2830,10 @@ void wxWindowGTK::DoGetClientSize( int *width, int *height ) const
|
|||||||
if (m_hasScrolling)
|
if (m_hasScrolling)
|
||||||
GetScrollbarWidth(m_widget, dw, dh);
|
GetScrollbarWidth(m_widget, dw, dh);
|
||||||
|
|
||||||
const int border = GTK_CONTAINER(m_wxwindow)->border_width;
|
int border_x, border_y;
|
||||||
dw += 2 * border;
|
WX_PIZZA(m_wxwindow)->get_border_widths(border_x, border_y);
|
||||||
dh += 2 * border;
|
dw += 2 * border_x;
|
||||||
|
dh += 2 * border_y;
|
||||||
|
|
||||||
w -= dw;
|
w -= dw;
|
||||||
h -= dh;
|
h -= dh;
|
||||||
@@ -2918,16 +2855,16 @@ void wxWindowGTK::DoGetPosition( int *x, int *y ) const
|
|||||||
int dy = 0;
|
int dy = 0;
|
||||||
if (!IsTopLevel() && m_parent && m_parent->m_wxwindow)
|
if (!IsTopLevel() && m_parent && m_parent->m_wxwindow)
|
||||||
{
|
{
|
||||||
GtkPizza *pizza = GTK_PIZZA(m_parent->m_wxwindow);
|
wxPizza* pizza = WX_PIZZA(m_parent->m_wxwindow);
|
||||||
dx = gtk_pizza_get_xoffset( pizza );
|
dx = pizza->m_scroll_x;
|
||||||
dy = gtk_pizza_get_yoffset( pizza );
|
dy = pizza->m_scroll_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_x == -1 && m_y == -1)
|
if (m_x == -1 && m_y == -1)
|
||||||
{
|
{
|
||||||
GdkWindow *source = (GdkWindow *) NULL;
|
GdkWindow *source = (GdkWindow *) NULL;
|
||||||
if (m_wxwindow)
|
if (m_wxwindow)
|
||||||
source = GTK_PIZZA(m_wxwindow)->bin_window;
|
source = m_wxwindow->window;
|
||||||
else
|
else
|
||||||
source = m_widget->window;
|
source = m_widget->window;
|
||||||
|
|
||||||
@@ -2957,7 +2894,7 @@ void wxWindowGTK::DoClientToScreen( int *x, int *y ) const
|
|||||||
|
|
||||||
GdkWindow *source = (GdkWindow *) NULL;
|
GdkWindow *source = (GdkWindow *) NULL;
|
||||||
if (m_wxwindow)
|
if (m_wxwindow)
|
||||||
source = GTK_PIZZA(m_wxwindow)->bin_window;
|
source = m_wxwindow->window;
|
||||||
else
|
else
|
||||||
source = m_widget->window;
|
source = m_widget->window;
|
||||||
|
|
||||||
@@ -2994,7 +2931,7 @@ void wxWindowGTK::DoScreenToClient( int *x, int *y ) const
|
|||||||
|
|
||||||
GdkWindow *source = (GdkWindow *) NULL;
|
GdkWindow *source = (GdkWindow *) NULL;
|
||||||
if (m_wxwindow)
|
if (m_wxwindow)
|
||||||
source = GTK_PIZZA(m_wxwindow)->bin_window;
|
source = m_wxwindow->window;
|
||||||
else
|
else
|
||||||
source = m_widget->window;
|
source = m_widget->window;
|
||||||
|
|
||||||
@@ -3394,7 +3331,7 @@ wxWindowGTK::AdjustForLayoutDirection(wxCoord x,
|
|||||||
wxCoord WXUNUSED(width),
|
wxCoord WXUNUSED(width),
|
||||||
wxCoord WXUNUSED(widthTotal)) const
|
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;
|
GdkWindow *window = (GdkWindow*) NULL;
|
||||||
if (m_wxwindow)
|
if (m_wxwindow)
|
||||||
window = GTK_PIZZA(m_wxwindow)->bin_window;
|
window = m_wxwindow->window;
|
||||||
else
|
else
|
||||||
window = GetConnectWidget()->window;
|
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,
|
GdkRectangle gdk_rect,
|
||||||
*p;
|
*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)
|
if (m_wxwindow && m_wxwindow->window)
|
||||||
gdk_window_process_updates( GTK_PIZZA(m_wxwindow)->bin_window, FALSE );
|
gdk_window_process_updates(m_wxwindow->window, false);
|
||||||
if (m_widget && m_widget->window && (m_wxwindow != m_widget))
|
if (m_widget && m_widget->window && (m_wxwindow != m_widget))
|
||||||
gdk_window_process_updates( m_widget->window, FALSE );
|
gdk_window_process_updates( m_widget->window, FALSE );
|
||||||
|
|
||||||
@@ -3724,8 +3661,7 @@ void wxWindowGTK::GtkSendPaintEvents()
|
|||||||
m_updateRegion.Clear();
|
m_updateRegion.Clear();
|
||||||
|
|
||||||
gint width;
|
gint width;
|
||||||
gdk_window_get_geometry( GTK_PIZZA(m_wxwindow)->bin_window,
|
gdk_drawable_get_size(m_wxwindow->window, &width, NULL);
|
||||||
NULL, NULL, &width, NULL, NULL );
|
|
||||||
|
|
||||||
wxRegionIterator upd( m_nativeUpdateRegion );
|
wxRegionIterator upd( m_nativeUpdateRegion );
|
||||||
while (upd)
|
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))
|
if (GetThemeEnabled() && (GetBackgroundStyle() == wxBG_STYLE_SYSTEM))
|
||||||
{
|
{
|
||||||
// find ancestor from which to steal background
|
// find ancestor from which to steal background
|
||||||
@@ -3765,7 +3698,7 @@ void wxWindowGTK::GtkSendPaintEvents()
|
|||||||
rect.height = upd.GetHeight();
|
rect.height = upd.GetHeight();
|
||||||
|
|
||||||
gtk_paint_flat_box( parent->m_widget->style,
|
gtk_paint_flat_box( parent->m_widget->style,
|
||||||
pizza->bin_window,
|
m_wxwindow->window,
|
||||||
(GtkStateType)GTK_WIDGET_STATE(m_wxwindow),
|
(GtkStateType)GTK_WIDGET_STATE(m_wxwindow),
|
||||||
GTK_SHADOW_NONE,
|
GTK_SHADOW_NONE,
|
||||||
&rect,
|
&rect,
|
||||||
@@ -3992,7 +3925,7 @@ bool wxWindowGTK::SetBackgroundStyle(wxBackgroundStyle style)
|
|||||||
GdkWindow *window;
|
GdkWindow *window;
|
||||||
if ( m_wxwindow )
|
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;
|
GdkWindow *window = (GdkWindow*) NULL;
|
||||||
if (m_wxwindow)
|
if (m_wxwindow)
|
||||||
window = GTK_PIZZA(m_wxwindow)->bin_window;
|
window = m_wxwindow->window;
|
||||||
else
|
else
|
||||||
window = GetConnectWidget()->window;
|
window = GetConnectWidget()->window;
|
||||||
|
|
||||||
@@ -4121,7 +4054,7 @@ void wxWindowGTK::DoReleaseMouse()
|
|||||||
|
|
||||||
GdkWindow *window = (GdkWindow*) NULL;
|
GdkWindow *window = (GdkWindow*) NULL;
|
||||||
if (m_wxwindow)
|
if (m_wxwindow)
|
||||||
window = GTK_PIZZA(m_wxwindow)->bin_window;
|
window = m_wxwindow->window;
|
||||||
else
|
else
|
||||||
window = GetConnectWidget()->window;
|
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)
|
WX_PIZZA(m_wxwindow)->scroll(dx, dy);
|
||||||
gtk_pizza_scroll( GTK_PIZZA(m_wxwindow), dx, -dy );
|
|
||||||
else
|
|
||||||
gtk_pizza_scroll( GTK_PIZZA(m_wxwindow), -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;
|
||||||
|
}
|
||||||
|
@@ -4224,3 +4224,11 @@ void wxWinModule::OnExit()
|
|||||||
if (g_eraseGC)
|
if (g_eraseGC)
|
||||||
gdk_gc_unref( 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;
|
||||||
|
}
|
||||||
|
@@ -37,7 +37,7 @@
|
|||||||
#include "wx/thread.h" // wxMutex/wxMutexLocker
|
#include "wx/thread.h" // wxMutex/wxMutexLocker
|
||||||
|
|
||||||
#ifdef __WXGTK__
|
#ifdef __WXGTK__
|
||||||
# include "wx/gtk/win_gtk.h"
|
#include <gtk/gtk.h>
|
||||||
# include <gdk/gdkx.h> // for GDK_WINDOW_XWINDOW
|
# include <gdk/gdkx.h> // for GDK_WINDOW_XWINDOW
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -282,7 +282,7 @@ static gboolean gtk_window_expose_callback(GtkWidget *widget,
|
|||||||
if(event->count > 0)
|
if(event->count > 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
GdkWindow *window = GTK_PIZZA(be->GetControl()->m_wxwindow)->bin_window;
|
GdkWindow *window = be->GetControl()->GTKGetDrawingWindow();
|
||||||
|
|
||||||
// I've seen this reccommended somewhere...
|
// I've seen this reccommended somewhere...
|
||||||
// TODO: Is this needed? Maybe it is just cruft...
|
// TODO: Is this needed? Maybe it is just cruft...
|
||||||
@@ -320,7 +320,7 @@ static gboolean gtk_window_expose_callback(GtkWidget *widget,
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
#ifdef __WXGTK__
|
#ifdef __WXGTK__
|
||||||
extern "C" {
|
extern "C" {
|
||||||
static gint gtk_window_realize_callback(GtkWidget* theWidget,
|
static gint gtk_window_realize_callback(GtkWidget*,
|
||||||
wxGStreamerMediaBackend* be)
|
wxGStreamerMediaBackend* be)
|
||||||
{
|
{
|
||||||
DEBUG_MAIN_THREAD // TODO: Is this neccessary?
|
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
|
wxYield(); // FIXME: RN: X Server gets an error/crash if I don't do
|
||||||
// this or a messagebox beforehand?!?!??
|
// this or a messagebox beforehand?!?!??
|
||||||
|
|
||||||
GdkWindow *window = GTK_PIZZA(theWidget)->bin_window;
|
GdkWindow *window = be->GetControl()->GTKGetDrawingWindow();
|
||||||
wxASSERT(window);
|
wxASSERT(window);
|
||||||
|
|
||||||
gst_x_overlay_set_xwindow_id( GST_X_OVERLAY(be->m_xoverlay),
|
gst_x_overlay_set_xwindow_id( GST_X_OVERLAY(be->m_xoverlay),
|
||||||
@@ -737,7 +737,7 @@ void wxGStreamerMediaBackend::SetupXOverlay()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
wxYield(); // see realize callback...
|
wxYield(); // see realize callback...
|
||||||
GdkWindow *window = GTK_PIZZA(m_ctrl->m_wxwindow)->bin_window;
|
GdkWindow *window = m_ctrl->m_wxwindow->GTKGetDrawingWindow();
|
||||||
wxASSERT(window);
|
wxASSERT(window);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user