#else
#include <gtk/gtkfeatures.h>
#endif
- extern const unsigned int gtk_major_version;
- extern const unsigned int gtk_minor_version;
- extern const unsigned int gtk_micro_version;
#endif
#include "wx/platinfo.h"
wxASSERT_MSG( GetChildren().GetCount() == 0, wxT("children not destroyed") );
- // reset the top-level parent's default item if it is this widget
+ // notify the parent about this window destruction
if ( m_parent )
- {
- wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent((wxWindow*)this),
- wxTopLevelWindow);
-
- if ( tlw && tlw->GetDefaultItem() == this )
- tlw->SetDefaultItem(NULL);
- if ( tlw && tlw->GetTmpDefaultItem() == this )
- tlw->SetTmpDefaultItem(NULL);
- }
-
- // reset the dangling pointer our parent window may keep to us
- if ( m_parent )
- {
m_parent->RemoveChild(this);
- }
#if wxUSE_CARET
delete m_caret;
if ( m_windowSizer )
{
- // Adjust to window size, since the return value of GetWindowSizeForVirtualSize is
- // expressed in window and not client size
- wxSize minSize = m_windowSizer->GetMinSize();
- wxSize size(GetSize());
- wxSize clientSize(GetClientSize());
-
- wxSize minWindowSize(minSize.x + size.x - clientSize.x,
- minSize.y + size.y - clientSize.y);
-
- best = GetWindowSizeForVirtualSize(minWindowSize);
-
- return best;
+ best = m_windowSizer->GetMinSize();
}
#if wxUSE_CONSTRAINTS
else if ( m_constraints )
// logic is the same as above
if ( !m_hasFgCol && !m_foregroundColour.Ok() )
{
- wxASSERT_MSG( !m_hasFgCol, _T("we have invalid explicit fg colour?") );
-
wxColour colFg = GetDefaultAttributes().colFg;
if ( !colFg.Ok() )
UpdateWindowUI(wxUPDATE_UI_RECURSE);
}
+// ----------------------------------------------------------------------------
+// menu-related functions
+// ----------------------------------------------------------------------------
+
+#if wxUSE_MENUS
+
+// this is used to pass the id of the selected item from the menu event handler
+// to the main function itself
+//
+// it's ok to use a global here as there can be at most one popup menu shown at
+// any time
+static int gs_popupMenuSelection = wxID_NONE;
+
+void wxWindowBase::InternalOnPopupMenu(wxCommandEvent& event)
+{
+ // store the id in a global variable where we'll retrieve it from later
+ gs_popupMenuSelection = event.GetId();
+}
+
+int
+wxWindowBase::DoGetPopupMenuSelectionFromUser(wxMenu& menu, int x, int y)
+{
+ gs_popupMenuSelection = wxID_NONE;
+
+ Connect(wxEVT_COMMAND_MENU_SELECTED,
+ wxCommandEventHandler(wxWindowBase::InternalOnPopupMenu),
+ NULL,
+ this);
+
+ PopupMenu(&menu, x, y);
+
+ Disconnect(wxEVT_COMMAND_MENU_SELECTED,
+ wxCommandEventHandler(wxWindowBase::InternalOnPopupMenu),
+ NULL,
+ this);
+
+ return gs_popupMenuSelection;
+}
+
+#endif // wxUSE_MENUS
+
// methods for drawing the sizers in a visible way
#ifdef __WXDEBUG__
wxMessageBox(msg, _T("wxWidgets information"),
wxICON_INFORMATION | wxOK,
(wxWindow *)this);
+#endif // wxUSE_MSGDLG
}
else
-#endif // wxUSE_MSGDLG
{
event.Skip();
}
{
border = GetDefaultBorder();
}
+ else if ( border == wxBORDER_THEME )
+ {
+ border = GetDefaultBorderForControl();
+ }
return border;
}