]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/imaglist.cpp
wxDocManager gets the only view if none other specified as the current view;
[wxWidgets.git] / src / generic / imaglist.cpp
index 368a72735a259320367b4cb4527137267461c56b..61819c387aba02e92c09219ef7e689ce7cca33ad 100644 (file)
 
 IMPLEMENT_DYNAMIC_CLASS(wxImageList, wxObject)
 
-wxImageList::wxImageList(void)
+wxImageList::wxImageList( int width, int height, bool WXUNUSED(mask), int WXUNUSED(initialCount) )
 {
+  m_width = width;
+  m_height = height;
   Create();
 };
 
-wxImageList::~wxImageList(void)
+wxImageList::~wxImageList()
 {
 };
 
-int wxImageList::GetImageCount(void) const
+int wxImageList::GetImageCount() const
 {
   return m_images.Number();
 };
 
-bool wxImageList::Create(void)
+bool wxImageList::Create()
 {
   m_images.DeleteContents( TRUE );
   return TRUE;
@@ -46,7 +48,7 @@ int wxImageList::Add( const wxBitmap &bitmap )
   return m_images.Number();
 };
 
-bool wxImageList::Replace( const int index, const wxBitmap &bitmap )
+bool wxImageList::Replace( int index, const wxBitmap &bitmap )
 {
   wxNode *node = m_images.Nth( index );
   if (!node) return FALSE;
@@ -66,21 +68,30 @@ bool wxImageList::Replace( const int index, const wxBitmap &bitmap )
   return TRUE;
 };
 
-bool wxImageList::Remove( const int index )
+bool wxImageList::Remove( int index )
 {
   wxNode *node = m_images.Nth( index );
   if (node) m_images.DeleteNode( node );
   return (node != NULL);
 };
 
-bool wxImageList::RemoveAll(void)
+bool wxImageList::RemoveAll()
 {
   m_images.Clear();
   return TRUE;
 };
 
-bool wxImageList::GetSize( const int index, int &width, int &height ) const
+bool wxImageList::GetSize( int index, int &width, int &height ) const
 {
+#ifdef __WXGTK__
+
+  width = m_width;
+  height = m_height;
+  
+  return (m_images.Nth( index ) != NULL);
+  
+#else
+  
   wxNode *node = m_images.Nth( index );
   if (node)
   {
@@ -95,17 +106,33 @@ bool wxImageList::GetSize( const int index, int &width, int &height ) const
     height = 0;
     return FALSE;
   };
+
+#endif  
 };
 
-bool wxImageList::Draw( const int index, wxDC &dc, 
-                        const int x, const int y,
-                        const int WXUNUSED(flags), const bool WXUNUSED(solidBackground) )
+bool wxImageList::Draw( int index, wxDC &dc, int x, int y,
+                        int flags, bool WXUNUSED(solidBackground) )
 {
   wxNode *node = m_images.Nth( index );
   if (!node) return FALSE;
   wxBitmap *bm = (wxBitmap*)node->Data();
+  
+#ifdef __WXGTK__
+
+  // As X doesn't have a standard size for icons, we resize here.
+  // Otherwise we'd simply have to forbid different bitmap sizes.
+
+  if ((m_width != bm->GetWidth()) ||
+      (m_height != bm->GetHeight()))
+  {
+    bm->Resize( m_width, m_height );
+  };
+  
+#endif  
+  
   wxIcon *icon = (wxIcon*)bm;
-  dc.DrawIcon( *icon, x, y );
+  dc.DrawIcon( *icon, x, y, (flags & wxIMAGELIST_DRAW_TRANSPARENT) > 0 );
+
   return TRUE;
 };