]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/bmpbuttn.cpp
fixed (rare but fatal) bug in wxWindowDisabler
[wxWidgets.git] / src / gtk / bmpbuttn.cpp
index 7bfc477e35f54819d4a66952fbe8d6eae66f1ef9..32ac3f8575e43d1d0af43d91bf273fefc594479a 100644 (file)
@@ -15,8 +15,8 @@
 
 #if wxUSE_BMPBUTTON
 
-#include "gdk/gdk.h"
-#include "gtk/gtk.h"
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
 
 //-----------------------------------------------------------------------------
 // classes
@@ -43,7 +43,8 @@ extern bool   g_blockEventsOnDrag;
 
 static void gtk_bmpbutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button )
 {
-    if (g_isIdle) wxapp_install_idle_handler();
+    if (g_isIdle) 
+        wxapp_install_idle_handler();
 
     if (!button->m_hasVMT) return;
     if (g_blockEventsOnDrag) return;
@@ -105,7 +106,7 @@ static void gtk_bmpbutton_release_callback( GtkWidget *WXUNUSED(widget), wxBitma
 // wxBitmapButton
 //-----------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton,wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton,wxButton)
 
 wxBitmapButton::wxBitmapButton()
 {
@@ -118,13 +119,12 @@ bool wxBitmapButton::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bi
     m_needParent = TRUE;
     m_acceptsFocus = TRUE;
   
-    wxSize newSize = size;
-
-    PreCreation( parent, id, pos, newSize, style, name );
-  
-#if wxUSE_VALIDATORS
-    SetValidator( validator );
-#endif
+    if (!PreCreation( parent, pos, size ) ||
+        !CreateBase( parent, id, pos, size, style, validator, name ))
+    {
+        wxFAIL_MSG( wxT("wxBitmapButton creation failed") );
+       return FALSE;
+    }
 
     m_bitmap   = bitmap;
     m_disabled = bitmap;
@@ -142,6 +142,8 @@ bool wxBitmapButton::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bi
 
     if (m_bitmap.Ok())
     {
+        wxSize newSize = size;
+
         GdkBitmap *mask = (GdkBitmap *) NULL;
         if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap();
         GtkWidget *pixmap = gtk_pixmap_new( m_bitmap.GetPixmap(), mask );
@@ -189,14 +191,14 @@ void wxBitmapButton::SetDefault()
 
 void wxBitmapButton::SetLabel( const wxString &label )
 {
-    wxCHECK_RET( m_widget != NULL, _T("invalid button") );
+    wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
 
     wxControl::SetLabel( label );
 }
 
 wxString wxBitmapButton::GetLabel() const
 {
-    wxCHECK_MSG( m_widget != NULL, _T(""), _T("invalid button") );
+    wxCHECK_MSG( m_widget != NULL, wxT(""), wxT("invalid button") );
 
     return wxControl::GetLabel();
 }
@@ -207,7 +209,7 @@ void wxBitmapButton::ApplyWidgetStyle()
 
 void wxBitmapButton::SetBitmap()
 {
-    wxCHECK_RET( m_widget != NULL, _T("invalid button") );
+    wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
 
     wxBitmap the_one;
   
@@ -216,15 +218,15 @@ void wxBitmapButton::SetBitmap()
     else 
     {
         if (m_isSelected) 
-       {
-           the_one = m_selected;
-       }
+           {
+               the_one = m_selected;
+           }
         else 
-       {
+           {
             if (m_hasFocus) 
-               the_one = m_focus;
+                   the_one = m_focus;
             else 
-               the_one = m_bitmap;
+                   the_one = m_bitmap;
         }
     }
 
@@ -242,7 +244,7 @@ void wxBitmapButton::SetBitmap()
 
 void wxBitmapButton::SetBitmapDisabled( const wxBitmap& bitmap ) 
 {
-  wxCHECK_RET( m_widget != NULL, _T("invalid button") );
+  wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
 
   if ( ! m_disabled.Ok() ) return;
   m_disabled = bitmap;
@@ -252,7 +254,7 @@ void wxBitmapButton::SetBitmapDisabled( const wxBitmap& bitmap )
 
 void wxBitmapButton::SetBitmapFocus( const wxBitmap& bitmap ) 
 {
-    wxCHECK_RET( m_widget != NULL, _T("invalid button") );
+    wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
 
     if ( ! m_focus.Ok() ) return;
     m_focus = bitmap;
@@ -262,7 +264,7 @@ void wxBitmapButton::SetBitmapFocus( const wxBitmap& bitmap )
 
 void wxBitmapButton::SetBitmapLabel( const wxBitmap& bitmap )
 {
-    wxCHECK_RET( m_widget != NULL, _T("invalid button") );
+    wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
 
     if (!m_bitmap.Ok()) return;
     m_bitmap = bitmap;
@@ -272,7 +274,7 @@ void wxBitmapButton::SetBitmapLabel( const wxBitmap& bitmap )
 
 void wxBitmapButton::SetBitmapSelected( const wxBitmap& bitmap )
 {
-    wxCHECK_RET( m_widget != NULL, _T("invalid button") );
+    wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
 
     if ( ! m_selected.Ok() ) return;
     m_selected = bitmap;
@@ -313,5 +315,5 @@ void wxBitmapButton::EndSelect()
     m_isSelected = FALSE;
     SetBitmap();
 }
+#endif
 
-#endif
\ No newline at end of file