]> git.saurik.com Git - wxWidgets.git/commitdiff
include
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 21 Feb 2000 14:25:20 +0000 (14:25 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 21 Feb 2000 14:25:20 +0000 (14:25 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6174 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/grid.cpp
src/generic/treectrl.cpp
src/motif/region.cpp

index a862e9ee29ff1606e82a2787fa15d1b687374ece..faeb6fcc13faed87cb0e8691d6e5dfe36ad88af0 100644 (file)
@@ -1939,6 +1939,7 @@ void wxGridWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
 #if WXGRID_DRAW_LINES
     m_owner->DrawAllGridLines( dc, reg );
 #endif
 #if WXGRID_DRAW_LINES
     m_owner->DrawAllGridLines( dc, reg );
 #endif
+    m_owner->DrawHighlight( dc );
 }
 
 
 }
 
 
@@ -3947,6 +3948,11 @@ void wxGrid::OnKeyDown( wxKeyEvent& event )
                     attr->GetEditor()->StartingKey(event);
                     attr->DecRef();
                 }
                     attr->GetEditor()->StartingKey(event);
                     attr->DecRef();
                 }
+                else
+                {
+                    // let others process char events for readonly cells
+                    event.Skip();
+                }
                 break;
         }
     }
                 break;
         }
     }
@@ -4098,11 +4104,6 @@ void wxGrid::DrawCell( wxDC& dc, const wxGridCellCoords& coords )
         // but all the rest is drawn by the cell renderer and hence may be
         // customized
         attr->GetRenderer()->Draw(*this, *attr, dc, rect, row, col, IsInSelection(coords));
         // but all the rest is drawn by the cell renderer and hence may be
         // customized
         attr->GetRenderer()->Draw(*this, *attr, dc, rect, row, col, IsInSelection(coords));
-
-        if ( isCurrent )
-        {
-            DrawCellHighlight(dc, attr);
-        }
     }
 
     attr->DecRef();
     }
 
     attr->DecRef();
@@ -4122,26 +4123,18 @@ void wxGrid::DrawCellHighlight( wxDC& dc, const wxGridCellAttr *attr )
     rect.width = m_colWidths[col] - 1;
     rect.height = m_rowHeights[row] - 1;
 
     rect.width = m_colWidths[col] - 1;
     rect.height = m_rowHeights[row] - 1;
 
-    if ( attr->IsReadOnly() )
-    {
-        // hmmm... what could we do here to show that the cell is disabled?
-        // for now, I just draw a thinner border than for the other ones, but
-        // it doesn't look really good
-        dc.SetPen(wxPen(m_gridLineColour, 2, wxSOLID));
-        dc.SetBrush(*wxTRANSPARENT_BRUSH);
+    // hmmm... what could we do here to show that the cell is disabled?
+    // for now, I just draw a thinner border than for the other ones, but
+    // it doesn't look really good
+    dc.SetPen(wxPen(m_gridLineColour, attr->IsReadOnly() ? 1 : 3, wxSOLID));
+    dc.SetBrush(*wxTRANSPARENT_BRUSH);
+
+    dc.DrawRectangle(rect);
 
 
-        dc.DrawRectangle(rect);
-    }
-    else
-    {
-        // VZ: my experiments with 3d borders...
 #if 0
 #if 0
-        dc.SetPen(wxPen(m_gridLineColour, 3, wxSOLID));
-        dc.SetBrush(*wxTRANSPARENT_BRUSH);
+        // VZ: my experiments with 3d borders...
 
 
-        dc.DrawRectangle(rect);
-#else //1
-        // FIXME we should properly set colours for arbitrary bg
+        // how to properly set colours for arbitrary bg?
         wxCoord x1 = rect.x,
                 y1 = rect.y,
                 x2 = rect.x + rect.width -1,
         wxCoord x1 = rect.x,
                 y1 = rect.y,
                 x2 = rect.x + rect.width -1,
@@ -4157,8 +4150,7 @@ void wxGrid::DrawCellHighlight( wxDC& dc, const wxGridCellAttr *attr )
         dc.SetPen(*wxBLACK_PEN);
         dc.DrawLine(x1, y2, x2, y2);
         dc.DrawLine(x2, y1, x2, y2+1);
         dc.SetPen(*wxBLACK_PEN);
         dc.DrawLine(x1, y2, x2, y2);
         dc.DrawLine(x2, y1, x2, y2+1);
-#endif // 0/1
-    }
+#endif // 0
 }
 
 void wxGrid::DrawCellBorder( wxDC& dc, const wxGridCellCoords& coords )
 }
 
 void wxGrid::DrawCellBorder( wxDC& dc, const wxGridCellCoords& coords )
@@ -4181,6 +4173,23 @@ void wxGrid::DrawCellBorder( wxDC& dc, const wxGridCellCoords& coords )
                  m_colRights[col], m_rowBottoms[row] );
 }
 
                  m_colRights[col], m_rowBottoms[row] );
 }
 
+void wxGrid::DrawHighlight(wxDC& dc)
+{
+    // if the active cell was repainted, repaint its highlight too because it
+    // might have been damaged by the grid lines
+    size_t count = m_cellsExposed.GetCount();
+    for ( size_t n = 0; n < count; n++ )
+    {
+        if ( m_cellsExposed[n] == m_currentCellCoords )
+        {
+            wxGridCellAttr* attr = GetCellAttr(m_currentCellCoords);
+            DrawCellHighlight(dc, attr);
+            attr->DecRef();
+
+            break;
+        }
+    }
+}
 
 // TODO: remove this ???
 // This is used to redraw all grid lines e.g. when the grid line colour
 
 // TODO: remove this ???
 // This is used to redraw all grid lines e.g. when the grid line colour
index 57475faf269fdc678d557f58365abd033dfce77d..dc7160f2945ef82847369e31904c3eecdd816f94 100644 (file)
@@ -607,7 +607,8 @@ void wxTreeCtrl::Init()
 
     m_dragCount = 0;
     m_isDragging = FALSE;
 
     m_dragCount = 0;
     m_isDragging = FALSE;
-    m_dropTarget = (wxGenericTreeItem *)NULL;
+    m_dropTarget =
+    m_oldSelection = (wxGenericTreeItem *)NULL;
 
     m_renameTimer = new wxTreeRenameTimer( this );
 
 
     m_renameTimer = new wxTreeRenameTimer( this );
 
@@ -2143,6 +2144,22 @@ void wxTreeCtrl::OnMouse( wxMouseEvent &event )
             // we're going to drag this item
             m_isDragging = TRUE;
 
             // we're going to drag this item
             m_isDragging = TRUE;
 
+            // remember the old cursor because we will change it while
+            // dragging
+            m_oldCursor = m_cursor;
+
+            // in a single selection control, hide the selection temporarily
+            if ( !(GetWindowStyleFlag() & wxTR_MULTIPLE) )
+            {
+                m_oldSelection = GetSelection().m_pItem;
+
+                if ( m_oldSelection )
+                {
+                    m_oldSelection->SetHilight(FALSE);
+                    RefreshLine(m_oldSelection);
+                }
+            }
+
             CaptureMouse();
         }
     }
             CaptureMouse();
         }
     }
@@ -2178,9 +2195,16 @@ void wxTreeCtrl::OnMouse( wxMouseEvent &event )
         m_isDragging = FALSE;
         m_dropTarget = (wxGenericTreeItem *)NULL;
 
         m_isDragging = FALSE;
         m_dropTarget = (wxGenericTreeItem *)NULL;
 
+        if ( m_oldSelection )
+        {
+            m_oldSelection->SetHilight(TRUE);
+            RefreshLine(m_oldSelection);
+            m_oldSelection = (wxGenericTreeItem *)NULL;
+        }
+
         ReleaseMouse();
 
         ReleaseMouse();
 
-        SetCursor(wxCURSOR_DEFAULT);
+        SetCursor(m_oldCursor);
 
         wxYield();
     }
 
         wxYield();
     }
index f9e7e47413b2926f391f345aa739c00f1d8321da..fb3b1e3db2551e6b427f0bdc01a79689adca70bf 100644 (file)
@@ -462,8 +462,7 @@ void wxRegionIterator::Reset(const wxRegion& region)
             m_numRects = count;
             m_rects = new wxRect[m_numRects];
 
             m_numRects = count;
             m_rects = new wxRect[m_numRects];
 
-            int i = 0;
-            for (i = 0; i < m_numRects; i++)
+            for (size_t i = 0; i < m_numRects; i++)
                m_rects[i] = rects[i];
 
            /*
                m_rects[i] = rects[i];
 
            /*