// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "univbutton.h"
-#endif
-
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#include "wx/univ/colschem.h"
#include "wx/stockitem.h"
+// ----------------------------------------------------------------------------
+// wxStdButtonInputHandler: translates SPACE and ENTER keys and the left mouse
+// click into button press/release actions
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxStdButtonInputHandler : public wxStdInputHandler
+{
+public:
+ wxStdButtonInputHandler(wxInputHandler *inphand);
+
+ virtual bool HandleKey(wxInputConsumer *consumer,
+ const wxKeyEvent& event,
+ bool pressed);
+ virtual bool HandleMouse(wxInputConsumer *consumer,
+ const wxMouseEvent& event);
+ virtual bool HandleMouseMove(wxInputConsumer *consumer,
+ const wxMouseEvent& event);
+ virtual bool HandleFocus(wxInputConsumer *consumer,
+ const wxFocusEvent& event);
+ virtual bool HandleActivation(wxInputConsumer *consumer, bool activated);
+
+private:
+ // the window (button) which has capture or NULL and the flag telling if
+ // the mouse is inside the button which captured it or not
+ wxWindow *m_winCapture;
+ bool m_winHasMouse;
+};
+
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
if (label.empty() && wxIsStockID(id))
label = wxGetStockLabel(id);
- long ctrl_style = style & !wxBU_ALIGN_MASK;
-
- wxASSERT_MSG( (ctrl_style & wxALIGN_MASK) == 0,
- _T("Some style conflicts with align flags") );
+ long ctrl_style = style & ~wxBU_ALIGN_MASK;
+ ctrl_style = ctrl_style & ~wxALIGN_MASK;
if((style & wxBU_RIGHT) == wxBU_RIGHT)
ctrl_style |= wxALIGN_RIGHT;
return false;
SetLabel(label);
- SetImageLabel(bitmap);
- // SetBestSize(size); -- called by SetImageLabel()
+
+ if (bitmap.Ok())
+ SetImageLabel(bitmap); // SetInitialSize called by SetImageLabel()
+ else
+ SetInitialSize(size);
CreateInputHandler(wxINP_HANDLER_BUTTON);
return true;
}
+/* static */
+wxInputHandler *wxButton::GetStdInputHandler(wxInputHandler *handlerDef)
+{
+ static wxStdButtonInputHandler s_handlerBtn(handlerDef);
+
+ return &s_handlerBtn;
+}
+
// ----------------------------------------------------------------------------
// misc
// ----------------------------------------------------------------------------
m_marginBmpX = x + 2;
m_marginBmpY = y + 2;
- SetBestSize(wxDefaultSize);
+ SetInitialSize(wxDefaultSize);
}
-void wxButton::SetDefault()
+wxWindow *wxButton::SetDefault()
{
m_isDefault = true;
+
+ return wxButtonBase::SetDefault();
}
// ============================================================================