// Name: src/gtk1/toplevel.cpp
// Purpose:
// Author: Robert Roebling
-// Id: $Id$
// Copyright: (c) 1998 Robert Roebling
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/dcclient.h"
#include "wx/dialog.h"
#include "wx/timer.h"
+ #include "wx/settings.h"
+ #include "wx/control.h"
#endif
-#include "wx/control.h"
#include "wx/gtk1/private.h"
-#include "wx/settings.h"
#include "wx/evtloop.h"
#include <glib.h>
// data
// ----------------------------------------------------------------------------
-extern wxList wxPendingDelete;
-
extern int g_openDialogs;
extern wxWindowGTK *g_delayedFocus;
// the frame that is currently active (i.e. its child has focus). It is
// used to generate wxActivateEvents
-static wxTopLevelWindowGTK *g_activeFrame = (wxTopLevelWindowGTK*) NULL;
-static wxTopLevelWindowGTK *g_lastActiveFrame = (wxTopLevelWindowGTK*) NULL;
+static wxTopLevelWindowGTK *g_activeFrame = NULL;
+static wxTopLevelWindowGTK *g_lastActiveFrame = NULL;
// if we detect that the app has got/lost the focus, we set this variable to
// either TRUE or FALSE and an activate event will be sent during the next
wxLogTrace(wxT("activate"), wxT("Activating frame %p (from focus_in)"), g_activeFrame);
wxActivateEvent event(wxEVT_ACTIVATE, true, g_activeFrame->GetId());
event.SetEventObject(g_activeFrame);
- g_activeFrame->GetEventHandler()->ProcessEvent(event);
+ g_activeFrame->HandleWindowEvent(event);
return FALSE;
}
//-----------------------------------------------------------------------------
extern "C" {
-static gint gtk_frame_focus_out_callback( GtkWidget *widget,
+static gint gtk_frame_focus_out_callback( GtkWidget *WXUNUSED(widget),
GdkEventFocus *WXUNUSED(gdk_event),
- wxTopLevelWindowGTK *win )
+ wxTopLevelWindowGTK *WXUNUSED(win) )
{
if (g_isIdle)
wxapp_install_idle_handler();
wxLogTrace(wxT("activate"), wxT("Activating frame %p (from focus_in)"), g_activeFrame);
wxActivateEvent event(wxEVT_ACTIVATE, false, g_activeFrame->GetId());
event.SetEventObject(g_activeFrame);
- g_activeFrame->GetEventHandler()->ProcessEvent(event);
+ g_activeFrame->HandleWindowEvent(event);
g_activeFrame = NULL;
}
wxMoveEvent mevent( wxPoint(win->m_x,win->m_y), win->GetId() );
mevent.SetEventObject( win );
- win->GetEventHandler()->ProcessEvent( mevent );
+ win->HandleWindowEvent( mevent );
return FALSE;
}
// reset the icon
wxIconBundle iconsOld = win->GetIcons();
- if ( iconsOld.GetIcon(-1).Ok() )
+ if ( !iconsOld.IsEmpty() )
{
win->SetIcon( wxNullIcon );
win->SetIcons( iconsOld );
m_sizeSet = false;
m_miniEdge = 0;
m_miniTitle = 0;
- m_mainWidget = (GtkWidget*) NULL;
+ m_mainWidget = NULL;
m_insertInClientArea = true;
m_isIconized = false;
m_fsIsShowing = false;
{
if (m_grabbed)
{
- wxASSERT_MSG( false, _T("Window still grabbed"));
+ wxASSERT_MSG( false, wxT("Window still grabbed"));
RemoveGrab();
}
- m_isBeingDeleted = true;
+ SendDestroyEvent();
// it may also be GtkScrolledWindow in the case of an MDI child
if (GTK_IS_WINDOW(m_widget))
: maxHeight ;
gtk_window_set_geometry_hints( GTK_WINDOW(m_widget),
- (GtkWidget*) NULL,
+ NULL,
&geom,
(GdkWindowHints) flag );
// send size event to frame
wxSizeEvent event( wxSize(m_width,m_height), GetId() );
event.SetEventObject( this );
- GetEventHandler()->ProcessEvent( event );
+ HandleWindowEvent( event );
m_resizing = false;
}
if ( g_delayedFocus &&
wxGetTopLevelParent((wxWindow*)g_delayedFocus) == this )
{
- wxLogTrace(_T("focus"),
- _T("Setting focus from wxTLW::OnIdle() to %s(%s)"),
+ wxLogTrace(wxT("focus"),
+ wxT("Setting focus from wxTLW::OnIdle() to %s(%s)"),
g_delayedFocus->GetClassInfo()->GetClassName(),
g_delayedFocus->GetLabel().c_str());
gtk_window_set_title( GTK_WINDOW(m_widget), wxGTK_CONV( title ) );
}
-void wxTopLevelWindowGTK::SetIcon( const wxIcon &icon )
-{
- SetIcons( wxIconBundle( icon ) );
-}
-
void wxTopLevelWindowGTK::SetIcons( const wxIconBundle &icons )
{
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
wxTopLevelWindowBase::SetIcons( icons );
+ if ( icons.IsEmpty() )
+ return;
+
GdkWindow* window = m_widget->window;
if (!window)
return;
wxIcon icon = icons.GetIcon(-1);
- if (icon.Ok())
+ if (icon.IsOk())
{
wxMask *mask = icon.GetMask();
- GdkBitmap *bm = (GdkBitmap *) NULL;
+ GdkBitmap *bm = NULL;
if (mask) bm = mask->GetBitmap();
- gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm );
+ gdk_window_set_icon( m_widget->window, NULL, icon.GetPixmap(), bm );
}
wxSetIconsX11( (WXDisplay*)GDK_WINDOW_XDISPLAY( window ),
// frame state: maximized/iconized/normal
// ----------------------------------------------------------------------------
-void wxTopLevelWindowGTK::Maximize(bool maximize)
+void wxTopLevelWindowGTK::Maximize(bool WXUNUSED(maximize))
{
- wxFAIL_MSG( _T("not implemented") );
+ wxFAIL_MSG( wxT("not implemented") );
}
bool wxTopLevelWindowGTK::IsMaximized() const
{
- // wxFAIL_MSG( _T("not implemented") );
+ // wxFAIL_MSG( wxT("not implemented") );
// This is an approximation
return false;
void wxTopLevelWindowGTK::Restore()
{
- wxFAIL_MSG( _T("not implemented") );
+ wxFAIL_MSG( wxT("not implemented") );
}
void wxTopLevelWindowGTK::Iconize( bool iconize )
GdkWindow *window = m_widget->window;
// you should do it later, for example from OnCreate() handler
- wxCHECK_RET( window, _T("frame not created yet - can't iconize") );
+ wxCHECK_RET( window, wxT("frame not created yet - can't iconize") );
XIconifyWindow( GDK_WINDOW_XDISPLAY( window ),
GDK_WINDOW_XWINDOW( window ),
bool wxTopLevelWindowGTK::SetShape(const wxRegion& region)
{
wxCHECK_MSG( HasFlag(wxFRAME_SHAPED), false,
- _T("Shaped windows must be created with the wxFRAME_SHAPED style."));
+ wxT("Shaped windows must be created with the wxFRAME_SHAPED style."));
GdkWindow *window = NULL;
if (m_wxwindow)