]> git.saurik.com Git - wxWidgets.git/commitdiff
Font fixes and icons in report view for list control
authorRobert Roebling <robert@roebling.de>
Sat, 31 Oct 1998 10:12:29 +0000 (10:12 +0000)
committerRobert Roebling <robert@roebling.de>
Sat, 31 Oct 1998 10:12:29 +0000 (10:12 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@948 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/gtk/todo.txt
include/wx/generic/listctrl.h
src/generic/listctrl.cpp

index dd928117158fa423a8d306338f11d3b5ca39dc86..5f3cd63cf73d7a5936e34011bc3b86b7e3d49e02 100644 (file)
@@ -4,9 +4,6 @@
 wxTreeCtrl
   -> Make it compile. Keyboard handling, icon support.
 
-wxListCtrl
-  -> Icon support in list mode
-
 wxClipboard
   -> Urgh.
   
index 5f9be5822d933204c9db4d0a0f7391d005da826a..235d41695858049a9b94feaf7adab932d2f6a9c2 100644 (file)
@@ -435,7 +435,6 @@ class wxListMainWindow: public wxScrolledWindow
     int                  m_visibleLines;
     wxBrush             *m_hilightBrush;
     wxColour            *m_hilightColour;
-    wxFont              *m_myFont;
     int                  m_xScroll,m_yScroll;
     bool                 m_dirty;
     wxImageList         *m_small_image_list;
@@ -479,7 +478,6 @@ class wxListMainWindow: public wxScrolledWindow
     void OnSetFocus( wxFocusEvent &event );
     void OnKillFocus( wxFocusEvent &event );
     void OnSize( wxSizeEvent &event );
-    wxFont *GetMyFont( void );
     void DrawImage( int index, wxPaintDC *dc, int x, int y );
     void GetImageSize( int index, int &width, int &height );
     int GetIndexOfLine( const wxListLineData *line );
@@ -606,6 +604,10 @@ class wxListCtrl: public wxControl
     
     // We have to hand down a few functions
     
+    void SetBackgroundColour( const wxColour &colour );
+    void SetForegroundColour( const wxColour &colour );
+    void SetFont( const wxFont &font );
+    
     void SetDropTarget( wxDropTarget *dropTarget )
       { m_mainWin->SetDropTarget( dropTarget ); }
     wxDropTarget *GetDropTarget() const
@@ -614,12 +616,8 @@ class wxListCtrl: public wxControl
       { m_mainWin->SetCursor( cursor); }
     wxColour GetBackgroundColour() const
       { return m_mainWin->GetBackgroundColour(); }
-    void SetBackgroundColour( const wxColour &colour )
-      { m_mainWin->SetBackgroundColour( colour ); }
     wxColour GetForegroundColour() const
       { return m_mainWin->GetForegroundColour(); }
-    void SetForegroundColour( const wxColour &colour )
-      { m_mainWin->SetForegroundColour( colour ); }
     bool PopupMenu( wxMenu *menu, int x, int y )
       { return m_mainWin->PopupMenu( menu, x, y ); }
 
index 6ee97c89f688299550ddd7e11a51662616dac22e..dd6990c5178db8065084977b103b77561f4b2921 100644 (file)
@@ -537,14 +537,25 @@ void wxListLineData::DoDraw( wxPaintDC *dc, bool hilight, bool paintBG )
     wxNode *node = m_items.First();
     while (node)
     {
-      wxListItemData *info = (wxListItemData*)node->Data();
-      dc->SetClippingRegion( info->GetX(), info->GetY(), info->GetWidth()-3, info->GetHeight() );
-      info->GetText( s );
+      wxListItemData *item = (wxListItemData*)node->Data();
+      dc->SetClippingRegion( item->GetX(), item->GetY(), item->GetWidth()-3, item->GetHeight() );
+      int x = item->GetX();
+      if (item->HasImage())
+      {
+        int y = 0;
+        m_owner->DrawImage( item->GetImage(), dc, x, item->GetY() );
+       m_owner->GetImageSize( item->GetImage(), x, y );
+       x += item->GetX() + 5;
+      }
+      if (item->HasText())
+      {
+        item->GetText( s );
        if (hilight)
          dc->SetTextForeground( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) );
        else
-          dc->SetTextForeground( * info->GetColour() );
-      dc->DrawText( s, info->GetX()+2, info->GetY() );
+          dc->SetTextForeground( *item->GetColour() );
+        dc->DrawText( s, x, item->GetY() );
+      }
       dc->DestroyClippingRegion();
       node = node->Next();
     }
@@ -693,7 +704,7 @@ void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
   
   dc.BeginDrawing();
      
-  dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_SYSTEM_FONT ) );
+  dc.SetFont( m_font );
 
   int w = 0;
   int h = 0;
@@ -702,6 +713,7 @@ void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
   GetClientSize( &w, &h );
 
   dc.SetTextForeground( *wxBLACK );
+  if (m_foregroundColour.Ok()) dc.SetTextForeground( m_foregroundColour );
 
   x = 1;
   y = 1;
@@ -744,7 +756,7 @@ void wxListHeaderWindow::DrawCurrent()
   dc.SetLogicalFunction( wxCOPY );
 
   dc.SetPen( wxNullPen );
-  dc.SetBrush( wxNullBrush );   
+  dc.SetBrush( wxNullBrush );
 }
 
 void wxListHeaderWindow::OnMouse( wxMouseEvent &event )
@@ -758,7 +770,6 @@ void wxListHeaderWindow::OnMouse( wxMouseEvent &event )
     {
 //      wxScreenDC::EndDrawingOnTop();
       ReleaseMouse();
-      wxYield();  // for debugging
       m_isDraging = FALSE;
       m_owner->SetColumnWidth( m_column, m_currentX-m_minX );
     }
@@ -911,7 +922,6 @@ wxListMainWindow::wxListMainWindow( void )
   m_current = (wxListLineData *) NULL;
   m_visibleLines = 0;
   m_hilightBrush = (wxBrush *) NULL;
-  m_myFont = (wxFont *) NULL;
   m_xScroll = 0;
   m_yScroll = 0;
   m_dirty = TRUE;
@@ -944,7 +954,6 @@ wxListMainWindow::wxListMainWindow( wxWindow *parent, wxWindowID id,
   m_small_spacing = 30;
   m_normal_spacing = 40;
 //  AllowDoubleClick( TRUE );
-  m_myFont = wxNORMAL_FONT;
   m_hasFocus = FALSE;
   m_dragCount = 0;
   m_isCreated = FALSE;
@@ -978,7 +987,6 @@ wxListMainWindow::~wxListMainWindow( void )
   if (m_hilightBrush) delete m_hilightBrush;
   delete m_renameTimer;
 //  if (m_hilightColour) delete m_hilightColour;
-//  if (m_myFont) delete m_myFont;
 //  delete m_text;
 }
 
@@ -1011,8 +1019,7 @@ void wxListMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
   
   dc.BeginDrawing();
 
-//  dc.SetFont( *m_myFont );
-  dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_SYSTEM_FONT ) );
+  dc.SetFont( m_font );
 
   wxNode *node = m_lines.First();
   while (node) 
@@ -1488,11 +1495,6 @@ void wxListMainWindow::OnSize( wxSizeEvent &WXUNUSED(event) )
 */
 }
 
-wxFont *wxListMainWindow::GetMyFont( void )
-{
-  return m_myFont;
-}
-
 void wxListMainWindow::DrawImage( int index, wxPaintDC *dc, int x, int y )
 {
   if ((m_mode & wxLC_ICON) && (m_normal_image_list))
@@ -1504,6 +1506,11 @@ void wxListMainWindow::DrawImage( int index, wxPaintDC *dc, int x, int y )
   {
     m_small_image_list->Draw( index, *dc, x, y, wxIMAGELIST_DRAW_TRANSPARENT );
   }
+  if ((m_mode & wxLC_REPORT) && (m_small_image_list))
+  {
+    m_small_image_list->Draw( index, *dc, x, y, wxIMAGELIST_DRAW_TRANSPARENT );
+    return;
+  }
 }
 
 void wxListMainWindow::GetImageSize( int index, int &width, int &height )
@@ -1518,6 +1525,11 @@ void wxListMainWindow::GetImageSize( int index, int &width, int &height )
     m_small_image_list->GetSize( index, width, height );
     return;
   }
+  if ((m_mode & wxLC_REPORT) && (m_small_image_list))
+  {
+    m_small_image_list->GetSize( index, width, height );
+    return;
+  }
   width = 0;
   height = 0;
 }
@@ -1832,7 +1844,7 @@ long wxListMainWindow::GetMode( void ) const
 void wxListMainWindow::CalculatePositions( void )
 {
   wxPaintDC dc( this );
-  dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_SYSTEM_FONT ) );
+  dc.SetFont( m_font );
 
   int iconSpacing = 0;
   if (m_mode & wxLC_ICON) iconSpacing = m_normal_spacing;
@@ -2670,4 +2682,24 @@ void wxListCtrl::OnIdle( wxIdleEvent &WXUNUSED(event) )
   m_mainWin->Refresh();
 }
 
+void wxListCtrl::SetBackgroundColour( const wxColour &colour )
+{ 
+  m_mainWin->SetBackgroundColour( colour );
+  m_headerWin->SetBackgroundColour( colour ); 
+  m_mainWin->m_dirty = TRUE;
+}
+
+void wxListCtrl::SetForegroundColour( const wxColour &colour )
+{ 
+  m_mainWin->SetForegroundColour( colour ); 
+  m_headerWin->SetForegroundColour( colour ); 
+  m_mainWin->m_dirty = TRUE;
+}
+    
+void wxListCtrl::SetFont( const wxFont &font )
+{ 
+  m_mainWin->SetFont( font );
+  m_headerWin->SetFont( font ); 
+  m_mainWin->m_dirty = TRUE;
+}