*/
-//-------------------------------------------------------------------------
-// constants
-//-------------------------------------------------------------------------
-
-#define FRAME_BORDER_WIDTH 2
-
//-----------------------------------------------------------------------------
// data
//-----------------------------------------------------------------------------
the last click here */
static guint32 gs_timeLastClick = 0;
+#if (GTK_MINOR_VERSION > 0)
+
//-----------------------------------------------------------------------------
// local code (see below)
//-----------------------------------------------------------------------------
dx += widget->allocation.x;
dy += widget->allocation.y;
}
- else
- if (win->m_parent)
- {
- wxPoint pt(win->m_parent->GetClientAreaOrigin());
- dx += pt.x;
- dy += pt.y;
- }
if (win->m_windowStyle & wxRAISED_BORDER)
{
draw_frame( widget, win );
}
+#endif
+
//-----------------------------------------------------------------------------
// "expose_event" of m_wxwindow
//-----------------------------------------------------------------------------
}
}
- wxPoint pt(win->GetClientAreaOrigin());
- event.m_x -= pt.x;
- event.m_y -= pt.y;
-
event.SetEventObject( win );
gs_timeLastClick = gdk_event->time;
}
}
- wxPoint pt(win->GetClientAreaOrigin());
- event.m_x -= pt.x;
- event.m_y -= pt.y;
-
event.SetEventObject( win );
if (win->GetEventHandler()->ProcessEvent( event ))
}
}
- wxPoint pt(win->GetClientAreaOrigin());
- event.m_x -= pt.x;
- event.m_y -= pt.y;
-
event.SetEventObject( win );
if (win->GetEventHandler()->ProcessEvent( event ))
event.m_x = (long)x;
event.m_y = (long)y;
- wxPoint pt(win->GetClientAreaOrigin());
- event.m_x -= pt.x;
- event.m_y -= pt.y;
-
if (win->GetEventHandler()->ProcessEvent( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "enter_notify_event" );
event.m_x = (long)x;
event.m_y = (long)y;
- wxPoint pt(win->GetClientAreaOrigin());
- event.m_x -= pt.x;
- event.m_y -= pt.y;
-
if (win->GetEventHandler()->ProcessEvent( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "leave_notify_event" );
child->m_width,
child->m_height );
- if (wxIS_KIND_OF(parent,wxFrame))
- {
- parent->m_sizeSet = FALSE;
- }
-
if (parent->m_windowStyle & wxTAB_TRAVERSAL)
{
/* we now allow a window to get the focus as long as it
const wxPoint &pos, const wxSize &size,
long style, const wxString &name )
{
- wxASSERT_MSG( m_isWindow, "Init() must have been called before!" );
+ wxASSERT_MSG( m_isWindow, _T("Init() must have been called before!") );
PreCreation( parent, id, pos, size, style, name );
const wxPoint &pos, const wxSize &size,
long style, const wxString &name )
{
- wxASSERT_MSG( (!m_needParent) || (parent), "Need complete parent." );
+ wxASSERT_MSG( (!m_needParent) || (parent), _T("Need complete parent.") );
m_widget = (GtkWidget*) NULL;
m_wxwindow = (GtkWidget*) NULL;
void wxWindow::PostCreation()
{
- wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+ wxASSERT_MSG( (m_widget != NULL), _T("invalid window") );
if (m_wxwindow)
{
gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw",
GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this );
+#if (GTK_MINOR_VERSION > 0)
/* these are called when the "sunken" or "raised" borders are drawn */
gtk_signal_connect( GTK_OBJECT(m_widget), "expose_event",
GTK_SIGNAL_FUNC(gtk_window_own_expose_callback), (gpointer)this );
gtk_signal_connect( GTK_OBJECT(m_widget), "draw",
GTK_SIGNAL_FUNC(gtk_window_own_draw_callback), (gpointer)this );
+#endif
}
ConnectWidget( GetConnectWidget() );
bool wxWindow::Close( bool force )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+ wxASSERT_MSG( (m_widget != NULL), _T("invalid window") );
wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId);
event.SetEventObject(this);
bool wxWindow::Destroy()
{
- wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+ wxASSERT_MSG( (m_widget != NULL), _T("invalid window") );
m_hasVMT = FALSE;
delete this;
// are we to set fonts here ?
}
-wxPoint wxWindow::GetClientAreaOrigin() const
-{
- return wxPoint(0,0);
-}
-
-void wxWindow::AdjustForParentClientOrigin( int& x, int& y, int sizeFlags )
-{
- if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent())
- {
- wxPoint pt(GetParent()->GetClientAreaOrigin());
- x += pt.x;
- y += pt.y;
- }
-}
-
void wxWindow::DoSetSize( int x, int y, int width, int height, int sizeFlags )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid window" );
- wxASSERT_MSG( (m_parent != NULL), "wxWindow::SetSize requires parent.\n" );
+ wxASSERT_MSG( (m_widget != NULL), _T("invalid window") );
+ wxASSERT_MSG( (m_parent != NULL), _T("wxWindow::SetSize requires parent.\n") );
if (m_resizing) return; /* I don't like recursions */
m_resizing = TRUE;
/* the default button has a border around it */
int border = 5;
- wxPoint pt( m_parent->GetClientAreaOrigin() );
- gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), m_widget, m_x+pt.x-border, m_y+pt.y-border );
+ gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), m_widget, m_x-border, m_y-border );
gtk_widget_set_usize( m_widget, m_width+2*border, m_height+2*border );
}
else
{
- wxPoint pt( m_parent->GetClientAreaOrigin() );
- gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), m_widget, m_x+pt.x, m_y+pt.y );
+ gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), m_widget, m_x, m_y );
if ((old_width != m_width) || (old_height != m_height))
gtk_widget_set_usize( m_widget, m_width, m_height );
void wxWindow::GetSize( int *width, int *height ) const
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
if (width) (*width) = m_width;
if (height) (*height) = m_height;
void wxWindow::DoSetClientSize( int width, int height )
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
if (!m_wxwindow)
{
void wxWindow::GetClientSize( int *width, int *height ) const
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
if (!m_wxwindow)
{
void wxWindow::GetPosition( int *x, int *y ) const
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
if (x) (*x) = m_x;
if (y) (*y) = m_y;
void wxWindow::ClientToScreen( int *x, int *y )
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
GdkWindow *source = (GdkWindow *) NULL;
if (m_wxwindow)
}
}
- wxPoint pt(GetClientAreaOrigin());
- org_x += pt.x;
- org_y += pt.y;
-
if (x) *x += org_x;
if (y) *y += org_y;
}
void wxWindow::ScreenToClient( int *x, int *y )
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
GdkWindow *source = (GdkWindow *) NULL;
if (m_wxwindow)
}
}
- wxPoint pt(GetClientAreaOrigin());
- org_x -= pt.x;
- org_y -= pt.y;
-
if (x) *x -= org_x;
if (y) *y -= org_y;
}
void wxWindow::Centre( int direction )
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
int x = m_x;
int y = m_y;
void wxWindow::Fit()
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
int maxX = 0;
int maxY = 0;
void wxWindow::SetSizeHints( int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH) )
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
m_minWidth = minW;
m_minHeight = minH;
bool wxWindow::Show( bool show )
{
- wxCHECK_MSG( (m_widget != NULL), FALSE, "invalid window" );
+ wxCHECK_MSG( (m_widget != NULL), FALSE, _T("invalid window") );
if (show == m_isShown) return TRUE;
void wxWindow::Enable( bool enable )
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
m_isEnabled = enable;
int wxWindow::GetCharHeight() const
{
- wxCHECK_MSG( (m_widget != NULL), 12, "invalid window" );
+ wxCHECK_MSG( (m_widget != NULL), 12, _T("invalid window") );
- wxCHECK_MSG( m_font.Ok(), 12, "invalid font" );
+ wxCHECK_MSG( m_font.Ok(), 12, _T("invalid font") );
GdkFont *font = m_font.GetInternalFont( 1.0 );
int wxWindow::GetCharWidth() const
{
- wxCHECK_MSG( (m_widget != NULL), 8, "invalid window" );
+ wxCHECK_MSG( (m_widget != NULL), 8, _T("invalid window") );
- wxCHECK_MSG( m_font.Ok(), 8, "invalid font" );
+ wxCHECK_MSG( m_font.Ok(), 8, _T("invalid font") );
GdkFont *font = m_font.GetInternalFont( 1.0 );
wxFont fontToUse = m_font;
if (theFont) fontToUse = *theFont;
- wxCHECK_RET( fontToUse.Ok(), "invalid font" );
+ wxCHECK_RET( fontToUse.Ok(), _T("invalid font") );
GdkFont *font = fontToUse.GetInternalFont( 1.0 );
- if (x) (*x) = gdk_string_width( font, string );
+ if (x) (*x) = gdk_string_width( font, string.mbc_str() );
if (y) (*y) = font->ascent + font->descent;
if (descent) (*descent) = font->descent;
if (externalLeading) (*externalLeading) = 0; // ??
void wxWindow::SetFocus()
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
GtkWidget *connect_widget = GetConnectWidget();
if (connect_widget)
void wxWindow::AddChild( wxWindow *child )
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
- wxCHECK_RET( (child != NULL), "invalid child" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
+ wxCHECK_RET( (child != NULL), _T("invalid child") );
m_children.Append( child );
}
wxWindow *wxWindow::ReParent( wxWindow *newParent )
{
- wxCHECK_MSG( (m_widget != NULL), (wxWindow*) NULL, "invalid window" );
+ wxCHECK_MSG( (m_widget != NULL), (wxWindow*) NULL, _T("invalid window") );
wxWindow *oldParent = GetParent();
void wxWindow::Raise()
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
if (m_widget) gdk_window_raise( m_widget->window );
}
void wxWindow::Lower()
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
if (m_widget) gdk_window_lower( m_widget->window );
}
void wxWindow::SetCursor( const wxCursor &cursor )
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
if (cursor.Ok())
{
void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
{
- wxCHECK_RET( (m_widget != NULL), "invalid window" );
+ wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
if (eraseBackground && m_wxwindow && m_wxwindow->window)
{
void wxWindow::Clear()
{
- wxCHECK_RET( m_widget != NULL, "invalid window" );
+ wxCHECK_RET( m_widget != NULL, _T("invalid window") );
if (m_wxwindow && m_wxwindow->window)
{
m_toolTip->Apply( this );
}
-void wxWindow::ApplyToolTip( GtkTooltips *tips, const char *tip )
+void wxWindow::ApplyToolTip( GtkTooltips *tips, const wxChar *tip )
{
- gtk_tooltips_set_tip( tips, GetConnectWidget(), tip, (gchar*) NULL );
+ gtk_tooltips_set_tip( tips, GetConnectWidget(), wxConv_current->cWX2MB(tip), (gchar*) NULL );
}
#endif // wxUSE_TOOLTIPS
void wxWindow::SetBackgroundColour( const wxColour &colour )
{
- wxCHECK_RET( m_widget != NULL, "invalid window" );
+ wxCHECK_RET( m_widget != NULL, _T("invalid window") );
if (m_backgroundColour == colour) return;
void wxWindow::SetForegroundColour( const wxColour &colour )
{
- wxCHECK_RET( m_widget != NULL, "invalid window" );
+ wxCHECK_RET( m_widget != NULL, _T("invalid window") );
if (m_foregroundColour == colour) return;
bool wxWindow::Validate()
{
- wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
+ wxCHECK_MSG( m_widget != NULL, FALSE, _T("invalid window") );
wxNode *node = m_children.First();
while (node)
bool wxWindow::TransferDataToWindow()
{
- wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
+ wxCHECK_MSG( m_widget != NULL, FALSE, _T("invalid window") );
wxNode *node = m_children.First();
while (node)
bool wxWindow::TransferDataFromWindow()
{
- wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
+ wxCHECK_MSG( m_widget != NULL, FALSE, _T("invalid window") );
wxNode *node = m_children.First();
while (node)
void wxWindow::InitDialog()
{
- wxCHECK_RET( m_widget != NULL, "invalid window" );
+ wxCHECK_RET( m_widget != NULL, _T("invalid window") );
wxInitDialogEvent event(GetId());
event.SetEventObject( this );
bool wxWindow::PopupMenu( wxMenu *menu, int x, int y )
{
- wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
+ wxCHECK_MSG( m_widget != NULL, FALSE, _T("invalid window") );
- wxCHECK_MSG( menu != NULL, FALSE, "invalid popup-menu" );
+ wxCHECK_MSG( menu != NULL, FALSE, _T("invalid popup-menu") );
SetInvokingWindow( menu, this );
void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
{
- wxCHECK_RET( m_widget != NULL, "invalid window" );
+ wxCHECK_RET( m_widget != NULL, _T("invalid window") );
GtkWidget *dnd_widget = GetConnectWidget();
void wxWindow::SetFont( const wxFont &font )
{
- wxCHECK_RET( m_widget != NULL, "invalid window" );
+ wxCHECK_RET( m_widget != NULL, _T("invalid window") );
if (m_font == font) return;
void wxWindow::CaptureMouse()
{
- wxCHECK_RET( m_widget != NULL, "invalid window" );
+ wxCHECK_RET( m_widget != NULL, _T("invalid window") );
- wxCHECK_RET( g_capturing == FALSE, "CaptureMouse called twice" );
+ wxCHECK_RET( g_capturing == FALSE, _T("CaptureMouse called twice") );
GtkWidget *connect_widget = GetConnectWidget();
gtk_grab_add( connect_widget );
void wxWindow::ReleaseMouse()
{
- wxCHECK_RET( m_widget != NULL, "invalid window" );
+ wxCHECK_RET( m_widget != NULL, _T("invalid window") );
- wxCHECK_RET( g_capturing == TRUE, "ReleaseMouse called twice" );
+ wxCHECK_RET( g_capturing == TRUE, _T("ReleaseMouse called twice") );
GtkWidget *connect_widget = GetConnectWidget();
gtk_grab_remove( connect_widget );
void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
int range, bool refresh )
{
- wxCHECK_RET( m_widget != NULL, "invalid window" );
+ wxCHECK_RET( m_widget != NULL, _T("invalid window") );
- wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" );
+ wxCHECK_RET( m_wxwindow != NULL, _T("window needs client area for scrolling") );
m_hasScrolling = TRUE;
void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
{
- wxCHECK_RET( m_widget != NULL, "invalid window" );
+ wxCHECK_RET( m_widget != NULL, _T("invalid window") );
- wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" );
+ wxCHECK_RET( m_wxwindow != NULL, _T("window needs client area for scrolling") );
if (orient == wxHORIZONTAL)
{
int wxWindow::GetScrollThumb( int orient ) const
{
- wxCHECK_MSG( m_widget != NULL, 0, "invalid window" );
+ wxCHECK_MSG( m_widget != NULL, 0, _T("invalid window") );
- wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" );
+ wxCHECK_MSG( m_wxwindow != NULL, 0, _T("window needs client area for scrolling") );
if (orient == wxHORIZONTAL)
return (int)(m_hAdjust->page_size+0.5);
int wxWindow::GetScrollPos( int orient ) const
{
- wxCHECK_MSG( m_widget != NULL, 0, "invalid window" );
+ wxCHECK_MSG( m_widget != NULL, 0, _T("invalid window") );
- wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" );
+ wxCHECK_MSG( m_wxwindow != NULL, 0, _T("window needs client area for scrolling") );
if (orient == wxHORIZONTAL)
return (int)(m_hAdjust->value+0.5);
int wxWindow::GetScrollRange( int orient ) const
{
- wxCHECK_MSG( m_widget != NULL, 0, "invalid window" );
+ wxCHECK_MSG( m_widget != NULL, 0, _T("invalid window") );
- wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" );
+ wxCHECK_MSG( m_wxwindow != NULL, 0, _T("window needs client area for scrolling") );
if (orient == wxHORIZONTAL)
return (int)(m_hAdjust->upper+0.5);
void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
{
- wxCHECK_RET( m_widget != NULL, "invalid window" );
+ wxCHECK_RET( m_widget != NULL, _T("invalid window") );
+
+ wxCHECK_RET( m_wxwindow != NULL, _T("window needs client area for scrolling") );
- wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" );
+ wxNode *node = m_children.First();
+ while (node)
+ {
+ wxWindow *child = (wxWindow*) node->Data();
+ child->Move( child->m_x + dx, child->m_y + dy );
+ node = node->Next();
+ }
int cw = 0;
int ch = 0;
}
else if (constr)
{
- char *windowClass = this->GetClassInfo()->GetClassName();
+ wxChar *windowClass = this->GetClassInfo()->GetClassName();
wxString winName;
- if (GetName() == "")
- winName = "unnamed";
+ if (GetName() == _T(""))
+ winName = _T("unnamed");
else
winName = GetName();
- wxLogDebug( "Constraint(s) not satisfied for window of type %s, name %s:\n",
- (const char *)windowClass,
- (const char *)winName);
- if (!constr->left.GetDone()) wxLogDebug( " unsatisfied 'left' constraint.\n" );
- if (!constr->right.GetDone()) wxLogDebug( " unsatisfied 'right' constraint.\n" );
- if (!constr->width.GetDone()) wxLogDebug( " unsatisfied 'width' constraint.\n" );
- if (!constr->height.GetDone()) wxLogDebug( " unsatisfied 'height' constraint.\n" );
- wxLogDebug( "Please check constraints: try adding AsIs() constraints.\n" );
+ wxLogDebug( _T("Constraint(s) not satisfied for window of type %s, name %s:\n"),
+ (const wxChar *)windowClass,
+ (const wxChar *)winName);
+ if (!constr->left.GetDone()) wxLogDebug( _T(" unsatisfied 'left' constraint.\n") );
+ if (!constr->right.GetDone()) wxLogDebug( _T(" unsatisfied 'right' constraint.\n") );
+ if (!constr->width.GetDone()) wxLogDebug( _T(" unsatisfied 'width' constraint.\n") );
+ if (!constr->height.GetDone()) wxLogDebug( _T(" unsatisfied 'height' constraint.\n") );
+ wxLogDebug( _T("Please check constraints: try adding AsIs() constraints.\n") );
}
if (recurse)