]> git.saurik.com Git - wxWidgets.git/commitdiff
attempts to fix wxStaticBitmap::SetBitmap() - still doesn't work
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 7 Jul 1999 16:00:06 +0000 (16:00 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 7 Jul 1999 16:00:06 +0000 (16:00 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2961 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/statbmp.h
include/wx/gtk1/statbmp.h
src/gtk/app.cpp
src/gtk/statbmp.cpp
src/gtk1/app.cpp
src/gtk1/statbmp.cpp

index cfedc1c50230334731ac9e6605809c2924c34787..4716ffd797fb45c02bbb1c4350b7080166465e3c 100644 (file)
@@ -75,6 +75,9 @@ public:
     }
 
 private:
     }
 
 private:
+    // creates the new pixmap widget
+    void CreatePixmapWidget();
+
     wxBitmap   m_bitmap;
 };
 
     wxBitmap   m_bitmap;
 };
 
index cfedc1c50230334731ac9e6605809c2924c34787..4716ffd797fb45c02bbb1c4350b7080166465e3c 100644 (file)
@@ -75,6 +75,9 @@ public:
     }
 
 private:
     }
 
 private:
+    // creates the new pixmap widget
+    void CreatePixmapWidget();
+
     wxBitmap   m_bitmap;
 };
 
     wxBitmap   m_bitmap;
 };
 
index 4fbd74c2f0f82233d4c9c0c0cffca6d6c9bf869d..a690ab53a49ad69de6a36f9031a718961af7c78e 100644 (file)
@@ -46,7 +46,7 @@
 //-----------------------------------------------------------------------------
 
 wxApp *wxTheApp = (wxApp *)  NULL;
 //-----------------------------------------------------------------------------
 
 wxApp *wxTheApp = (wxApp *)  NULL;
-wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL;
+wxAppInitializerFunction wxAppBase::m_appInitFn = (wxAppInitializerFunction) NULL;
 
 #if wxUSE_THREADS
 extern wxList *wxPendingEvents;
 
 #if wxUSE_THREADS
 extern wxList *wxPendingEvents;
index d27737a420a5ea35c956fe17474d62e202f6a2a7..ac1b7529b83ea6b1bd96a296a3884582ee221cc3 100644 (file)
@@ -35,9 +35,21 @@ wxStaticBitmap::wxStaticBitmap( wxWindow *parent, wxWindowID id, const wxBitmap
     Create( parent, id, bitmap, pos, size, style, name );
 }
 
     Create( parent, id, bitmap, pos, size, style, name );
 }
 
+void wxStaticBitmap::CreatePixmapWidget()
+{
+    wxCHECK_RET( m_bitmap.Ok(), "should only be called if we have a bitmap" );
+
+    GdkBitmap *mask = (GdkBitmap *) NULL;
+    if ( m_bitmap.GetMask() )
+        mask = m_bitmap.GetMask()->GetBitmap();
+    m_widget = gtk_pixmap_new( m_bitmap.GetPixmap(), mask );
+
+    PostCreation();
+}
+
 bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
 bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name )
+                             const wxPoint &pos, const wxSize &size,
+                             long style, const wxString &name )
 {
     m_needParent = TRUE;
 
 {
     m_needParent = TRUE;
 
@@ -49,9 +61,7 @@ bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bi
 
     if (m_bitmap.Ok())
     {
 
     if (m_bitmap.Ok())
     {
-        GdkBitmap *mask = (GdkBitmap *) NULL;
-        if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap();
-        m_widget = gtk_pixmap_new( m_bitmap.GetPixmap(), mask );
+        CreatePixmapWidget();
 
         if (newSize.x == -1) newSize.x = m_bitmap.GetWidth();
         if (newSize.y == -1) newSize.y = m_bitmap.GetHeight();
 
         if (newSize.x == -1) newSize.x = m_bitmap.GetWidth();
         if (newSize.y == -1) newSize.y = m_bitmap.GetHeight();
@@ -60,12 +70,12 @@ bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bi
     else
     {
         m_widget = gtk_label_new( "Bitmap" );
     else
     {
         m_widget = gtk_label_new( "Bitmap" );
+
+        PostCreation();
     }
 
     m_parent->DoAddChild( this );
 
     }
 
     m_parent->DoAddChild( this );
 
-    PostCreation();
-
     Show( TRUE );
 
     return TRUE;
     Show( TRUE );
 
     return TRUE;
@@ -73,10 +83,20 @@ bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bi
 
 void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap )
 {
 
 void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap )
 {
+    bool hasWidget = m_bitmap.Ok();
     m_bitmap = bitmap;
 
     if (m_bitmap.Ok())
     {
     m_bitmap = bitmap;
 
     if (m_bitmap.Ok())
     {
+        if ( !hasWidget )
+        {
+            gtk_widget_destroy( m_widget );
+
+            // recreate m_widget because we'd created a label and not a bitmap
+            // above
+            CreatePixmapWidget();
+        }
+
         GdkBitmap *mask = (GdkBitmap *) NULL;
         if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap();
         gtk_pixmap_set( GTK_PIXMAP(m_widget), m_bitmap.GetPixmap(), mask );
         GdkBitmap *mask = (GdkBitmap *) NULL;
         if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap();
         gtk_pixmap_set( GTK_PIXMAP(m_widget), m_bitmap.GetPixmap(), mask );
index 4fbd74c2f0f82233d4c9c0c0cffca6d6c9bf869d..a690ab53a49ad69de6a36f9031a718961af7c78e 100644 (file)
@@ -46,7 +46,7 @@
 //-----------------------------------------------------------------------------
 
 wxApp *wxTheApp = (wxApp *)  NULL;
 //-----------------------------------------------------------------------------
 
 wxApp *wxTheApp = (wxApp *)  NULL;
-wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL;
+wxAppInitializerFunction wxAppBase::m_appInitFn = (wxAppInitializerFunction) NULL;
 
 #if wxUSE_THREADS
 extern wxList *wxPendingEvents;
 
 #if wxUSE_THREADS
 extern wxList *wxPendingEvents;
index d27737a420a5ea35c956fe17474d62e202f6a2a7..ac1b7529b83ea6b1bd96a296a3884582ee221cc3 100644 (file)
@@ -35,9 +35,21 @@ wxStaticBitmap::wxStaticBitmap( wxWindow *parent, wxWindowID id, const wxBitmap
     Create( parent, id, bitmap, pos, size, style, name );
 }
 
     Create( parent, id, bitmap, pos, size, style, name );
 }
 
+void wxStaticBitmap::CreatePixmapWidget()
+{
+    wxCHECK_RET( m_bitmap.Ok(), "should only be called if we have a bitmap" );
+
+    GdkBitmap *mask = (GdkBitmap *) NULL;
+    if ( m_bitmap.GetMask() )
+        mask = m_bitmap.GetMask()->GetBitmap();
+    m_widget = gtk_pixmap_new( m_bitmap.GetPixmap(), mask );
+
+    PostCreation();
+}
+
 bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
 bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name )
+                             const wxPoint &pos, const wxSize &size,
+                             long style, const wxString &name )
 {
     m_needParent = TRUE;
 
 {
     m_needParent = TRUE;
 
@@ -49,9 +61,7 @@ bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bi
 
     if (m_bitmap.Ok())
     {
 
     if (m_bitmap.Ok())
     {
-        GdkBitmap *mask = (GdkBitmap *) NULL;
-        if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap();
-        m_widget = gtk_pixmap_new( m_bitmap.GetPixmap(), mask );
+        CreatePixmapWidget();
 
         if (newSize.x == -1) newSize.x = m_bitmap.GetWidth();
         if (newSize.y == -1) newSize.y = m_bitmap.GetHeight();
 
         if (newSize.x == -1) newSize.x = m_bitmap.GetWidth();
         if (newSize.y == -1) newSize.y = m_bitmap.GetHeight();
@@ -60,12 +70,12 @@ bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bi
     else
     {
         m_widget = gtk_label_new( "Bitmap" );
     else
     {
         m_widget = gtk_label_new( "Bitmap" );
+
+        PostCreation();
     }
 
     m_parent->DoAddChild( this );
 
     }
 
     m_parent->DoAddChild( this );
 
-    PostCreation();
-
     Show( TRUE );
 
     return TRUE;
     Show( TRUE );
 
     return TRUE;
@@ -73,10 +83,20 @@ bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bi
 
 void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap )
 {
 
 void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap )
 {
+    bool hasWidget = m_bitmap.Ok();
     m_bitmap = bitmap;
 
     if (m_bitmap.Ok())
     {
     m_bitmap = bitmap;
 
     if (m_bitmap.Ok())
     {
+        if ( !hasWidget )
+        {
+            gtk_widget_destroy( m_widget );
+
+            // recreate m_widget because we'd created a label and not a bitmap
+            // above
+            CreatePixmapWidget();
+        }
+
         GdkBitmap *mask = (GdkBitmap *) NULL;
         if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap();
         gtk_pixmap_set( GTK_PIXMAP(m_widget), m_bitmap.GetPixmap(), mask );
         GdkBitmap *mask = (GdkBitmap *) NULL;
         if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap();
         gtk_pixmap_set( GTK_PIXMAP(m_widget), m_bitmap.GetPixmap(), mask );