/////////////////////////////////////////////////////////////////////////////
// Name: src/gtk/window.cpp
-// Purpose:
+// Purpose: wxWindowGTK implementation
// Author: Robert Roebling
// Id: $Id$
// Copyright: (c) 1998 Robert Roebling, Julian Smart
return HandleWindowEvent(event);
}
+bool wxWindowGTK::GTKShouldIgnoreEvent() const
+{
+ return !m_hasVMT || g_blockEventsOnDrag;
+}
+
int wxWindowGTK::GTKCallbackCommonPrologue(GdkEventAny *event) const
{
if (!m_hasVMT)
void wxWindowGTK::AddChildGTK(wxWindowGTK* child)
{
- /* the window might have been scrolled already, do we
- have to adapt the position */
+ wxASSERT_MSG(m_wxwindow, "Cannot add a child to a window without a client area");
+
+ // the window might have been scrolled already, we
+ // have to adapt the position
wxPizza* pizza = WX_PIZZA(m_wxwindow);
child->m_x += pizza->m_scroll_x;
child->m_y += pizza->m_scroll_y;
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
+ wxASSERT_MSG(m_parent && m_parent->m_wxwindow,
+ "the parent window has no client area?");
WX_PIZZA(m_parent->m_wxwindow)->move(m_widget, x, y);
}
bool wxWindowGTK::Show( bool show )
{
- wxCHECK_MSG( (m_widget != NULL), false, wxT("invalid window") );
-
- if (!wxWindowBase::Show(show))
+ if ( !wxWindowBase::Show(show) )
{
// nothing to do
return false;
}
- if (show && m_showOnIdle)
+ // notice that we may call Hide() before the window is created and this is
+ // actually useful to create it hidden initially -- but we can't call
+ // Show() before it is created
+ if ( !m_widget )
{
- // deferred
+ wxASSERT_MSG( !show, "can't show invalid window" );
+ return true;
}
- else
+
+ if ( show )
{
- if (show)
- gtk_widget_show(m_widget);
- else
- gtk_widget_hide(m_widget);
- wxShowEvent eventShow(GetId(), show);
- eventShow.SetEventObject(this);
- HandleWindowEvent(eventShow);
+ if ( m_showOnIdle )
+ {
+ // defer until later
+ return true;
+ }
+
+ gtk_widget_show(m_widget);
}
+ else // hide
+ {
+ gtk_widget_hide(m_widget);
+ }
+
+ wxShowEvent eventShow(GetId(), show);
+ eventShow.SetEventObject(this);
+ HandleWindowEvent(eventShow);
return true;
}
return (int) PANGO_PIXELS(rect.width);
}
-void wxWindowGTK::GetTextExtent( const wxString& string,
- int *x,
- int *y,
- int *descent,
- int *externalLeading,
- const wxFont *theFont ) const
+void wxWindowGTK::DoGetTextExtent( const wxString& string,
+ int *x,
+ int *y,
+ int *descent,
+ int *externalLeading,
+ const wxFont *theFont ) const
{
wxFont fontToUse = theFont ? *theFont : GetFont();