]> git.saurik.com Git - wxWidgets.git/blobdiff - src/propgrid/editors.cpp
better wheel support
[wxWidgets.git] / src / propgrid / editors.cpp
index 4df662710db60b309af7db0b04c4695e00275d87..140e0ff5963178d376490fba8e6b6cf9cf9c5eec 100644 (file)
@@ -212,7 +212,7 @@ void wxPGEditor::SetControlAppearance( wxPropertyGrid* pg,
                                        wxWindow* ctrl,
                                        const wxPGCell& cell,
                                        const wxPGCell& oCell,
-                                       bool WXUNUSED(unspecified) ) const
+                                       bool unspecified ) const
 {
     // Get old editor appearance
     wxTextCtrl* tc = NULL;
@@ -262,6 +262,9 @@ void wxPGEditor::SetControlAppearance( wxPropertyGrid* pg,
         }
     }
 
+    // Do not make the mistake of calling GetClassDefaultAttributes()
+    // here. It is static, while GetDefaultAttributes() is virtual
+    // and the correct one to use.
     wxVisualAttributes vattrs = ctrl->GetDefaultAttributes();
 
     // Foreground colour
@@ -298,7 +301,8 @@ void wxPGEditor::SetControlAppearance( wxPropertyGrid* pg,
     }
 
     // Also call the old SetValueToUnspecified()
-    SetValueToUnspecified(property, ctrl);
+    if ( unspecified )
+        SetValueToUnspecified(property, ctrl);
 }
 
 void wxPGEditor::SetValueToUnspecified( wxPGProperty* WXUNUSED(property),
@@ -482,7 +486,7 @@ void wxPGTextCtrlEditor_OnFocus( wxPGProperty* property,
                                  wxTextCtrl* tc )
 {
     // Make sure there is correct text (instead of unspecified value
-    // indicator or inline help)
+    // indicator or hint text)
     int flags = property->HasFlag(wxPG_PROP_READONLY) ? 
         0 : wxPG_EDITABLE_VALUE;
     wxString correctText = property->GetValueAsString(flags);
@@ -656,7 +660,17 @@ public:
                              int flags ) const
     {
         wxPropertyGrid* pg = GetGrid();
-        pg->OnComboItemPaint( this, item, &dc, (wxRect&)rect, flags );
+
+        // Handle hint text via super class
+        if ( (flags & wxODCB_PAINTING_CONTROL) &&
+             ShouldUseHintText(flags) )
+        {
+            wxOwnerDrawnComboBox::OnDrawItem(dc, rect, item, flags);
+        }
+        else
+        {
+            pg->OnComboItemPaint( this, item, &dc, (wxRect&)rect, flags );
+        }
     }
 
     virtual wxCoord OnMeasureItem( size_t item ) const
@@ -1032,7 +1046,11 @@ wxWindow* wxPGChoiceEditor::CreateControlsBase( wxPropertyGrid* propGrid,
     cb->SetButtonPosition(si.y,0,wxRIGHT);
     cb->SetMargins(wxPG_XBEFORETEXT-1);
 
-    wxPGChoiceEditor_SetCustomPaintWidth( propGrid, cb, property->GetCommonValue() );
+    // Set hint text
+    cb->SetHint(property->GetHintText());
+
+    wxPGChoiceEditor_SetCustomPaintWidth( propGrid, cb,
+                                          property->GetCommonValue() );
 
     if ( index >= 0 && index < (int)cb->GetCount() )
     {
@@ -1898,6 +1916,9 @@ wxWindow* wxPropertyGrid::GenerateEditorTextCtrl( const wxPoint& pos,
         tc->AutoComplete(attrVal.GetArrayString());
     }
 
+    // Set hint text
+    tc->SetHint(prop->GetHintText());
+
     return tc;
 }