Updated doc for wxFileExists()
Corrected redrawing and OpenGl canvas Made new font code in utilsunix compile (Why does Vadim never need any headers?) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3790 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -31,7 +31,8 @@ slashes.
|
|||||||
|
|
||||||
\func{bool}{wxFileExists}{\param{const wxString\& }{filename}}
|
\func{bool}{wxFileExists}{\param{const wxString\& }{filename}}
|
||||||
|
|
||||||
Returns TRUE if the file exists.
|
Returns TRUE if the file exists. It also returns TRUE if the file is
|
||||||
|
a directory.
|
||||||
|
|
||||||
\membersection{::wxFileNameFromPath}
|
\membersection{::wxFileNameFromPath}
|
||||||
|
|
||||||
|
@@ -2657,9 +2657,23 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
|
|||||||
if (!rect)
|
if (!rect)
|
||||||
{
|
{
|
||||||
if (m_wxwindow)
|
if (m_wxwindow)
|
||||||
gtk_widget_draw( m_wxwindow, (GdkRectangle*) NULL );
|
{
|
||||||
|
/* call the callback directly for preventing GTK from
|
||||||
|
clearing the bakground */
|
||||||
|
int w = 0;
|
||||||
|
int h = 0;
|
||||||
|
GetClientSize( &w, &h );
|
||||||
|
GdkRectangle gdk_rect;
|
||||||
|
gdk_rect.x = 0;
|
||||||
|
gdk_rect.y = 0;
|
||||||
|
gdk_rect.width = w;
|
||||||
|
gdk_rect.height = h;
|
||||||
|
gtk_window_draw_callback( m_wxwindow, &gdk_rect, this );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
gtk_widget_draw( m_widget, (GdkRectangle*) NULL );
|
gtk_widget_draw( m_widget, (GdkRectangle*) NULL );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2670,9 +2684,15 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
|
|||||||
gdk_rect.height = rect->height;
|
gdk_rect.height = rect->height;
|
||||||
|
|
||||||
if (m_wxwindow)
|
if (m_wxwindow)
|
||||||
gtk_widget_draw( m_wxwindow, &gdk_rect );
|
{
|
||||||
|
/* call the callback directly for preventing GTK from
|
||||||
|
clearing the bakground */
|
||||||
|
gtk_window_draw_callback( m_wxwindow, &gdk_rect, this );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
gtk_widget_draw( m_widget, &gdk_rect );
|
gtk_widget_draw( m_widget, &gdk_rect );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2657,9 +2657,23 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
|
|||||||
if (!rect)
|
if (!rect)
|
||||||
{
|
{
|
||||||
if (m_wxwindow)
|
if (m_wxwindow)
|
||||||
gtk_widget_draw( m_wxwindow, (GdkRectangle*) NULL );
|
{
|
||||||
|
/* call the callback directly for preventing GTK from
|
||||||
|
clearing the bakground */
|
||||||
|
int w = 0;
|
||||||
|
int h = 0;
|
||||||
|
GetClientSize( &w, &h );
|
||||||
|
GdkRectangle gdk_rect;
|
||||||
|
gdk_rect.x = 0;
|
||||||
|
gdk_rect.y = 0;
|
||||||
|
gdk_rect.width = w;
|
||||||
|
gdk_rect.height = h;
|
||||||
|
gtk_window_draw_callback( m_wxwindow, &gdk_rect, this );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
gtk_widget_draw( m_widget, (GdkRectangle*) NULL );
|
gtk_widget_draw( m_widget, (GdkRectangle*) NULL );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2670,9 +2684,15 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
|
|||||||
gdk_rect.height = rect->height;
|
gdk_rect.height = rect->height;
|
||||||
|
|
||||||
if (m_wxwindow)
|
if (m_wxwindow)
|
||||||
gtk_widget_draw( m_wxwindow, &gdk_rect );
|
{
|
||||||
|
/* call the callback directly for preventing GTK from
|
||||||
|
clearing the bakground */
|
||||||
|
gtk_window_draw_callback( m_wxwindow, &gdk_rect, this );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
gtk_widget_draw( m_widget, &gdk_rect );
|
gtk_widget_draw( m_widget, &gdk_rect );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -586,6 +586,9 @@ void wxFatalError( const wxString &msg, const wxString &title )
|
|||||||
XFreeFont((Display *)wxGetDisplay(), font);
|
XFreeFont((Display *)wxGetDisplay(), font);
|
||||||
}
|
}
|
||||||
#elif defined(__WXGTK__)
|
#elif defined(__WXGTK__)
|
||||||
|
|
||||||
|
#include "gdk/gdk.h"
|
||||||
|
|
||||||
static inline wxNativeFont wxLoadFont(const wxString& fontSpec)
|
static inline wxNativeFont wxLoadFont(const wxString& fontSpec)
|
||||||
{
|
{
|
||||||
return gdk_font_load( wxConvCurrent->cWX2MB(fontSpec) );
|
return gdk_font_load( wxConvCurrent->cWX2MB(fontSpec) );
|
||||||
|
@@ -128,52 +128,6 @@ wxPalette wxGLContext::CreateDefaultPalette()
|
|||||||
return wxNullPalette;
|
return wxNullPalette;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// "expose_event" of m_glWidget
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
static void gtk_window_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExpose *gdk_event, wxWindow *win )
|
|
||||||
{
|
|
||||||
if (!win->m_hasVMT) return;
|
|
||||||
|
|
||||||
win->GetUpdateRegion().Union( gdk_event->area.x,
|
|
||||||
gdk_event->area.y,
|
|
||||||
gdk_event->area.width,
|
|
||||||
gdk_event->area.height );
|
|
||||||
|
|
||||||
if (gdk_event->count > 0) return;
|
|
||||||
|
|
||||||
/*
|
|
||||||
printf( "OnExpose from " );
|
|
||||||
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
|
|
||||||
printf( win->GetClassInfo()->GetClassName() );
|
|
||||||
printf( ".\n" );
|
|
||||||
*/
|
|
||||||
|
|
||||||
wxPaintEvent event( win->GetId() );
|
|
||||||
event.SetEventObject( win );
|
|
||||||
win->GetEventHandler()->ProcessEvent( event );
|
|
||||||
|
|
||||||
win->GetUpdateRegion().Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// "draw" of m_glWidget
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
static void gtk_window_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle *rect, wxWindow *win )
|
|
||||||
{
|
|
||||||
if (!win->m_hasVMT) return;
|
|
||||||
|
|
||||||
win->GetUpdateRegion().Union( rect->x, rect->y, rect->width, rect->height );
|
|
||||||
|
|
||||||
wxPaintEvent event( win->GetId() );
|
|
||||||
event.SetEventObject( win );
|
|
||||||
win->GetEventHandler()->ProcessEvent( event );
|
|
||||||
|
|
||||||
win->GetUpdateRegion().Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
// wxGlCanvas
|
// wxGlCanvas
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
@@ -212,6 +166,16 @@ bool wxGLCanvas::Create( wxWindow *parent,
|
|||||||
int *attribList,
|
int *attribList,
|
||||||
const wxPalette& palette)
|
const wxPalette& palette)
|
||||||
{
|
{
|
||||||
|
m_needParent = TRUE;
|
||||||
|
m_acceptsFocus = TRUE;
|
||||||
|
|
||||||
|
if (!PreCreation( parent, pos, size ) ||
|
||||||
|
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
|
||||||
|
{
|
||||||
|
wxFAIL_MSG( _T("wxGLCanvas creation failed") );
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (!attribList)
|
if (!attribList)
|
||||||
{
|
{
|
||||||
int data[] = { GLX_RGBA,
|
int data[] = { GLX_RGBA,
|
||||||
@@ -251,6 +215,7 @@ bool wxGLCanvas::Create( wxWindow *parent,
|
|||||||
attribList = (int*) data;
|
attribList = (int*) data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Display *dpy = GDK_DISPLAY();
|
Display *dpy = GDK_DISPLAY();
|
||||||
|
|
||||||
g_vi = glXChooseVisual( dpy, DefaultScreen(dpy), attribList );
|
g_vi = glXChooseVisual( dpy, DefaultScreen(dpy), attribList );
|
||||||
@@ -262,45 +227,37 @@ bool wxGLCanvas::Create( wxWindow *parent,
|
|||||||
gtk_widget_push_visual( visual );
|
gtk_widget_push_visual( visual );
|
||||||
|
|
||||||
m_glWidget = gtk_myfixed_new();
|
m_glWidget = gtk_myfixed_new();
|
||||||
|
m_widget = m_glWidget;
|
||||||
|
|
||||||
gtk_widget_pop_visual();
|
gtk_widget_pop_visual();
|
||||||
gtk_widget_pop_colormap();
|
gtk_widget_pop_colormap();
|
||||||
|
|
||||||
wxScrolledWindow::Create( parent, id, pos, size, style, name );
|
m_parent->DoAddChild( this );
|
||||||
|
|
||||||
GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
|
||||||
GTK_WIDGET_SET_FLAGS( m_glWidget, GTK_CAN_FOCUS );
|
|
||||||
|
|
||||||
gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), m_glWidget, 0, 0, m_width, m_height );
|
|
||||||
|
|
||||||
gtk_signal_connect( GTK_OBJECT(m_glWidget), "expose_event",
|
|
||||||
GTK_SIGNAL_FUNC(gtk_window_expose_callback), (gpointer)this );
|
|
||||||
|
|
||||||
gtk_signal_connect( GTK_OBJECT(m_glWidget), "draw",
|
|
||||||
GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this );
|
|
||||||
|
|
||||||
/* connect to key press and mouse handlers etc. */
|
|
||||||
ConnectWidget( m_glWidget );
|
|
||||||
|
|
||||||
|
|
||||||
/* must be realized for OpenGl output */
|
/* must be realized for OpenGl output */
|
||||||
gtk_widget_realize( m_glWidget );
|
gtk_widget_realize( m_glWidget );
|
||||||
|
|
||||||
gtk_widget_show( m_glWidget );
|
|
||||||
|
|
||||||
m_glContext = new wxGLContext( TRUE, this, palette, shared );
|
m_glContext = new wxGLContext( TRUE, this, palette, shared );
|
||||||
|
|
||||||
XFree( g_vi );
|
XFree( g_vi );
|
||||||
g_vi = (XVisualInfo*) NULL;
|
g_vi = (XVisualInfo*) NULL;
|
||||||
|
|
||||||
gdk_window_set_back_pixmap( m_glWidget->window, None, 0 );
|
// gdk_window_set_back_pixmap( m_glWidget->window, None, 0 );
|
||||||
|
|
||||||
|
/* we pretend to have a m_wxwindow so that PostCreation hooks
|
||||||
|
up the events for expose and draw */
|
||||||
|
m_wxwindow = m_glWidget;
|
||||||
|
PostCreation();
|
||||||
|
|
||||||
|
Show( TRUE );
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGLCanvas::~wxGLCanvas()
|
wxGLCanvas::~wxGLCanvas()
|
||||||
{
|
{
|
||||||
if (m_glContext) delete m_glContext;
|
if (m_glContext) delete m_glContext;
|
||||||
|
m_wxwindow = (GtkWidget*) NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxGLCanvas::SwapBuffers()
|
void wxGLCanvas::SwapBuffers()
|
||||||
@@ -335,78 +292,6 @@ void wxGLCanvas::SetColour( const char *colour )
|
|||||||
if (m_glContext) m_glContext->SetColour( colour );
|
if (m_glContext) m_glContext->SetColour( colour );
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxGLCanvas::DoSetSize( int x, int y, int width, int height, int sizeFlags )
|
|
||||||
{
|
|
||||||
if (m_resizing) return; // I don't like recursions
|
|
||||||
m_resizing = TRUE;
|
|
||||||
|
|
||||||
if (m_parent->m_wxwindow == NULL) // i.e. wxNotebook
|
|
||||||
{
|
|
||||||
// don't set the size for children of wxNotebook, just take the values.
|
|
||||||
m_x = x;
|
|
||||||
m_y = y;
|
|
||||||
m_width = width;
|
|
||||||
m_height = height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int old_width = m_width;
|
|
||||||
int old_height = m_height;
|
|
||||||
|
|
||||||
if ((sizeFlags & wxSIZE_ALLOW_MINUS_ONE) == 0)
|
|
||||||
{
|
|
||||||
if (x != -1) m_x = x;
|
|
||||||
if (y != -1) m_y = y;
|
|
||||||
if (width != -1) m_width = width;
|
|
||||||
if (height != -1) m_height = height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_x = x;
|
|
||||||
m_y = y;
|
|
||||||
m_width = width;
|
|
||||||
m_height = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
|
|
||||||
{
|
|
||||||
if (width == -1) m_width = 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((sizeFlags & wxSIZE_AUTO_HEIGHT) == wxSIZE_AUTO_HEIGHT)
|
|
||||||
{
|
|
||||||
if (height == -1) m_height = 26;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
|
|
||||||
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
|
|
||||||
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
|
|
||||||
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
|
|
||||||
|
|
||||||
gtk_myfixed_set_size( GTK_MYFIXED(m_parent->m_wxwindow),
|
|
||||||
m_widget,
|
|
||||||
m_x,
|
|
||||||
m_y,
|
|
||||||
m_width,
|
|
||||||
m_height );
|
|
||||||
|
|
||||||
gtk_myfixed_set_size( GTK_MYFIXED(m_wxwindow),
|
|
||||||
m_glWidget,
|
|
||||||
m_x,
|
|
||||||
m_y,
|
|
||||||
m_width,
|
|
||||||
m_height );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_sizeSet = TRUE;
|
|
||||||
|
|
||||||
wxSizeEvent event( wxSize(m_width,m_height), GetId() );
|
|
||||||
event.SetEventObject( this );
|
|
||||||
GetEventHandler()->ProcessEvent( event );
|
|
||||||
|
|
||||||
m_resizing = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget *wxGLCanvas::GetConnectWidget()
|
GtkWidget *wxGLCanvas::GetConnectWidget()
|
||||||
{
|
{
|
||||||
return m_glWidget;
|
return m_glWidget;
|
||||||
|
@@ -131,9 +131,6 @@ class wxGLCanvas: public wxScrolledWindow
|
|||||||
|
|
||||||
// implementation
|
// implementation
|
||||||
|
|
||||||
virtual void DoSetSize( int x, int y, int width, int height,
|
|
||||||
int sizeFlags = wxSIZE_AUTO );
|
|
||||||
|
|
||||||
virtual GtkWidget *GetConnectWidget();
|
virtual GtkWidget *GetConnectWidget();
|
||||||
bool IsOwnGtkWindow( GdkWindow *window );
|
bool IsOwnGtkWindow( GdkWindow *window );
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user