void SetLoggingOff(bool logOff) { m_loggingOff = logOff; }
bool GetLoggingOff() const { return m_loggingOff; }
- void Veto(bool veto = TRUE) { wxASSERT( m_canVeto ); m_veto = veto; }
+ void Veto(bool veto = TRUE)
+ {
+ // GetVeto() will return FALSE anyhow...
+ wxCHECK_RET( m_canVeto,
+ "call to Veto() ignored (can't veto this event)" );
+
+ m_veto = veto;
+ }
void SetCanVeto(bool canVeto) { m_canVeto = canVeto; }
bool CanVeto() const { return m_canVeto; }
- bool GetVeto() const { wxASSERT( m_canVeto ); return m_veto; }
+ bool GetVeto() const { return m_canVeto && m_veto; }
#if WXWIN_COMPATIBILITY
// This is probably obsolete now, since we use CanVeto instead, in
void OnOK( wxCommandEvent &event );
void OnPaint( wxPaintEvent& event );
void OnSize( wxSizeEvent &event );
+ void OnCloseWindow( wxCloseEvent& event );
/*
void OnCharHook( wxKeyEvent& event );
*/
bool Destroy();
- void OnCloseWindow( wxCloseEvent& event );
virtual void SetSize( int x, int y, int width, int height,
int sizeFlags = wxSIZE_AUTO );
virtual void GetClientSize( int *width, int *height ) const;
wxSize GetClientSize() const { int w, h; GetClientSize(& w, & h); return wxSize(w, h); }
-
+
virtual void SetClientSize( int const width, int const height );
virtual void SetSize( int x, int y, int width, int height,
int sizeFlags = wxSIZE_AUTO );
virtual void SetSize( int width, int height );
-
+
virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0,
const wxString& name = "statusBar");
virtual wxStatusBar *OnCreateStatusBar( int number, long style, wxWindowID id,
virtual void Maximize(bool WXUNUSED(maximize)) {}
virtual void Restore() {}
+ void OnCloseWindow( wxCloseEvent& event );
void OnActivate( wxActivateEvent &WXUNUSED(event) ) { } // called from docview.cpp
void OnSize( wxSizeEvent &event );
- void OnCloseWindow( wxCloseEvent& event );
-
+
void OnMenuHighlight( wxMenuEvent& event );
// implementation
-
+
virtual void GtkOnSize( int x, int y, int width, int height );
virtual wxPoint GetClientAreaOrigin() const;
void DoMenuUpdates();
void OnOK( wxCommandEvent &event );
void OnPaint( wxPaintEvent& event );
void OnSize( wxSizeEvent &event );
+ void OnCloseWindow( wxCloseEvent& event );
/*
void OnCharHook( wxKeyEvent& event );
*/
bool Destroy();
- void OnCloseWindow( wxCloseEvent& event );
virtual void SetSize( int x, int y, int width, int height,
int sizeFlags = wxSIZE_AUTO );
virtual void GetClientSize( int *width, int *height ) const;
wxSize GetClientSize() const { int w, h; GetClientSize(& w, & h); return wxSize(w, h); }
-
+
virtual void SetClientSize( int const width, int const height );
virtual void SetSize( int x, int y, int width, int height,
int sizeFlags = wxSIZE_AUTO );
virtual void SetSize( int width, int height );
-
+
virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0,
const wxString& name = "statusBar");
virtual wxStatusBar *OnCreateStatusBar( int number, long style, wxWindowID id,
virtual void Maximize(bool WXUNUSED(maximize)) {}
virtual void Restore() {}
+ void OnCloseWindow( wxCloseEvent& event );
void OnActivate( wxActivateEvent &WXUNUSED(event) ) { } // called from docview.cpp
void OnSize( wxSizeEvent &event );
- void OnCloseWindow( wxCloseEvent& event );
-
+
void OnMenuHighlight( wxMenuEvent& event );
// implementation
-
+
virtual void GtkOnSize( int x, int y, int width, int height );
virtual wxPoint GetClientAreaOrigin() const;
void DoMenuUpdates();
if (closing.Member(this))
return; // no loops
+ if ( event.GetVeto() )
+ return;
+
closing.Append(this);
wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
cancelEvent.SetEventObject( this );
GetEventHandler()->ProcessEvent(cancelEvent);
closing.DeleteObject(this);
-
- if ( event.CanVeto() )
- event.Veto();
}
bool wxDialog::Destroy()
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
-#pragma implementation "frame.h"
+ #pragma implementation "frame.h"
#endif
#include "wx/frame.h"
BEGIN_EVENT_TABLE(wxFrame, wxWindow)
EVT_SIZE(wxFrame::OnSize)
+ EVT_CLOSE(wxFrame::OnCloseWindow)
EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight)
END_EVENT_TABLE()
DoMenuUpdates();
}
+void wxFrame::OnCloseWindow( wxCloseEvent& event )
+{
+ // close the window if it wasn't vetoed by the application
+ if ( !event.GetVeto() )
+ Destroy();
+}
+
void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
{
wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
event.SetEventObject(this);
event.SetCanVeto(!force);
- (void)GetEventHandler()->ProcessEvent(event);
-
- // when we're forced to close we do it anyhow, otherwise only if the
- // application didn't forbid it (if the event wasn't processed, GetVeto()
- // will return FALSE too)
- if ( force || !event.GetVeto() )
- Destroy();
+ // return FALSE if window wasn't closed because the application vetoed the
+ // close event
+ return GetEventHandler()->ProcessEvent(event) && !event.GetVeto();
}
bool wxWindow::Destroy()
if (closing.Member(this))
return; // no loops
+ if ( event.GetVeto() )
+ return;
+
closing.Append(this);
wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
cancelEvent.SetEventObject( this );
GetEventHandler()->ProcessEvent(cancelEvent);
closing.DeleteObject(this);
-
- if ( event.CanVeto() )
- event.Veto();
}
bool wxDialog::Destroy()
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
-#pragma implementation "frame.h"
+ #pragma implementation "frame.h"
#endif
#include "wx/frame.h"
BEGIN_EVENT_TABLE(wxFrame, wxWindow)
EVT_SIZE(wxFrame::OnSize)
+ EVT_CLOSE(wxFrame::OnCloseWindow)
EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight)
END_EVENT_TABLE()
DoMenuUpdates();
}
+void wxFrame::OnCloseWindow( wxCloseEvent& event )
+{
+ // close the window if it wasn't vetoed by the application
+ if ( !event.GetVeto() )
+ Destroy();
+}
+
void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
{
wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
event.SetEventObject(this);
event.SetCanVeto(!force);
- (void)GetEventHandler()->ProcessEvent(event);
-
- // when we're forced to close we do it anyhow, otherwise only if the
- // application didn't forbid it (if the event wasn't processed, GetVeto()
- // will return FALSE too)
- if ( force || !event.GetVeto() )
- Destroy();
+ // return FALSE if window wasn't closed because the application vetoed the
+ // close event
+ return GetEventHandler()->ProcessEvent(event) && !event.GetVeto();
}
bool wxWindow::Destroy()