+ if (!button->m_hasVMT) return;
+ if (g_blockEventsOnDrag) return;
+
+ button->NotFocus();
+}
+
+//-----------------------------------------------------------------------------
+// "pressed"
+//-----------------------------------------------------------------------------
+
+static void gtk_bmpbutton_press_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button )
+{
+ if (!button->m_hasVMT) return;
+ if (g_blockEventsOnDrag) return;
+
+ button->StartSelect();
+}
+
+//-----------------------------------------------------------------------------
+// "released"
+//-----------------------------------------------------------------------------
+
+static void gtk_bmpbutton_release_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button )
+{
+ if (!button->m_hasVMT) return;
+ if (g_blockEventsOnDrag) return;
+
+ button->EndSelect();
+}
+
+//-----------------------------------------------------------------------------
+// wxBitmapButton
+//-----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton,wxButton)
+
+void wxBitmapButton::Init()
+{
+ m_hasFocus =
+ m_isSelected = FALSE;
+}
+
+bool wxBitmapButton::Create( wxWindow *parent,
+ wxWindowID id,
+ const wxBitmap& bitmap,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style,
+ const wxValidator& validator,
+ const wxString &name )
+{
+ m_needParent = TRUE;
+ m_acceptsFocus = TRUE;
+
+ if (!PreCreation( parent, pos, size ) ||
+ !CreateBase( parent, id, pos, size, style, validator, name ))
+ {
+ wxFAIL_MSG( wxT("wxBitmapButton creation failed") );
+ return FALSE;
+ }