]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/grid.cpp
Began to move wxAUI docs to latex.
[wxWidgets.git] / src / generic / grid.cpp
index 7be6a92d1f84fe0ecdd86736b5bba21e6fefbd51..d91d508dd2cf0bc3722cf3b87ca09bdec8b569c9 100644 (file)
@@ -1192,27 +1192,30 @@ bool wxGridCellFloatEditor::IsAcceptedKey(wxKeyEvent& event)
 {
     if ( wxGridCellEditor::IsAcceptedKey(event) )
     {
-        int keycode = event.GetKeyCode();
-        printf("%d\n", keycode);
-        // accept digits, 'e' as in '1e+6', also '-', '+', and '.'
-        char tmpbuf[2];
-        tmpbuf[0] = (char) keycode;
-        tmpbuf[1] = '\0';
-        wxString strbuf(tmpbuf, *wxConvCurrent);
+        const int keycode = event.GetKeyCode();
+        if ( isascii(keycode) )
+        {
+            char tmpbuf[2];
+            tmpbuf[0] = (char) keycode;
+            tmpbuf[1] = '\0';
+            wxString strbuf(tmpbuf, *wxConvCurrent);
 
 #if wxUSE_INTL
-        bool is_decimal_point =
-            ( strbuf == wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT,
-                                          wxLOCALE_CAT_NUMBER) );
+            const wxString decimalPoint =
+                wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT, wxLOCALE_CAT_NUMBER);
 #else
-        bool is_decimal_point = ( strbuf == _T(".") );
+            const wxString decimalPoint(_T('.'));
 #endif
 
-        if ( (keycode < 128) &&
-             (wxIsdigit(keycode) || tolower(keycode) == 'e' ||
-              is_decimal_point || keycode == '+' || keycode == '-') )
-        {
-            return true;
+            // accept digits, 'e' as in '1e+6', also '-', '+', and '.'
+            if ( wxIsdigit(keycode) ||
+                    tolower(keycode) == 'e' ||
+                        keycode == decimalPoint ||
+                            keycode == '+' ||
+                                keycode == '-' )
+            {
+                return true;
+            }
         }
     }
 
@@ -7954,8 +7957,8 @@ void wxGrid::DrawTextRectangle(wxDC& dc,
             continue;
         }
 
-        long lineWidth,
-             lineHeight;
+        long lineWidth = 0,
+             lineHeight = 0;
         dc.GetTextExtent(line, &lineWidth, &lineHeight);
 
         switch ( horizAlign )
@@ -8529,15 +8532,23 @@ int wxGrid::XToCol( int x, bool clipToMinMax )
     return GetColAt( maxPos );
 }
 
-// return the row number that that the y coord is near the edge of, or
-// -1 if not near an edge
+// return the row number that that the y coord is near
+//  the edge of, or -1 if not near an edge.
+// coords can only possibly be near an edge if
+//    (a) the row/column is large enough to still allow for an "inner" area
+//        that is _not_ nead the edge (i.e., if the height/width is smaller
+//        than WXGRID_LABEL_EDGE_ZONE, coords are _never_ considered to be
+//        near the edge).
+//   and
+//    (b) resizing rows/columns (the thing for which edge detection is
+//        relevant at all) is enabled.
 //
 int wxGrid::YToEdgeOfRow( int y )
 {
     int i;
     i = internalYToRow(y);
 
-    if ( GetRowHeight(i) > WXGRID_LABEL_EDGE_ZONE )
+    if ( GetRowHeight(i) > WXGRID_LABEL_EDGE_ZONE && CanDragRowSize() )
     {
         // We know that we are in row i, test whether we are
         // close enough to lower or upper border, respectively.
@@ -8552,13 +8563,14 @@ int wxGrid::YToEdgeOfRow( int y )
 
 // return the col number that that the x coord is near the edge of, or
 // -1 if not near an edge
+// See comment at YToEdgeOfRow for conditions on edge detection.
 //
 int wxGrid::XToEdgeOfCol( int x )
 {
     int i;
     i = internalXToCol(x);
 
-    if ( GetColWidth(i) > WXGRID_LABEL_EDGE_ZONE )
+    if ( GetColWidth(i) > WXGRID_LABEL_EDGE_ZONE && CanDragColSize() )
     {
         // We know that we are in column i; test whether we are
         // close enough to right or left border, respectively.