X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fe63109fc4429d3ca70310102f0a5daaee02f861..fb1e6455778e1696e6498431df40335d4731240f:/src/propgrid/editors.cpp diff --git a/src/propgrid/editors.cpp b/src/propgrid/editors.cpp index 433a16112d..850016e812 100644 --- a/src/propgrid/editors.cpp +++ b/src/propgrid/editors.cpp @@ -6,7 +6,7 @@ // Created: 2007-04-14 // RCS-ID: $Id$ // Copyright: (c) Jaakko Salli -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // For compilers that support precompilation, includes "wx/wx.h". @@ -487,7 +487,7 @@ void wxPGTextCtrlEditor_OnFocus( wxPGProperty* property, { // Make sure there is correct text (instead of unspecified value // indicator or hint text) - int flags = property->HasFlag(wxPG_PROP_READONLY) ? + int flags = property->HasFlag(wxPG_PROP_READONLY) ? 0 : wxPG_EDITABLE_VALUE; wxString correctText = property->GetValueAsString(flags); @@ -499,7 +499,7 @@ void wxPGTextCtrlEditor_OnFocus( wxPGProperty* property, tc->SetSelection(-1,-1); } - + void wxPGTextCtrlEditor::OnFocus( wxPGProperty* property, wxWindow* wnd ) const { @@ -507,7 +507,12 @@ void wxPGTextCtrlEditor::OnFocus( wxPGProperty* property, wxPGTextCtrlEditor_OnFocus(property, tc); } -wxPGTextCtrlEditor::~wxPGTextCtrlEditor() { } +wxPGTextCtrlEditor::~wxPGTextCtrlEditor() +{ + // Reset the global pointer. Useful when wxPropertyGrid is accessed + // from an external main loop. + wxPG_EDITOR(TextCtrl) = NULL; +} // ----------------------------------------------------------------------- @@ -848,6 +853,10 @@ void wxPropertyGrid::OnComboItemPaint( const wxPGComboBox* pCb, else { renderFlags |= wxPGCellRenderer::ChoicePopup; + + // For consistency, always use normal font when drawing drop down + // items + dc.SetFont(GetFont()); } // If not drawing a selected popup item, then give property's @@ -1212,7 +1221,10 @@ bool wxPGChoiceEditor::CanContainCustomImage() const } -wxPGChoiceEditor::~wxPGChoiceEditor() { } +wxPGChoiceEditor::~wxPGChoiceEditor() +{ + wxPG_EDITOR(Choice) = NULL; +} // ----------------------------------------------------------------------- @@ -1296,7 +1308,11 @@ void wxPGComboBoxEditor::OnFocus( wxPGProperty* property, } -wxPGComboBoxEditor::~wxPGComboBoxEditor() { } +wxPGComboBoxEditor::~wxPGComboBoxEditor() +{ + wxPG_EDITOR(ComboBox) = NULL; +} + // ----------------------------------------------------------------------- @@ -1348,8 +1364,10 @@ wxPGWindowList wxPGChoiceAndButtonEditor::CreateControls( wxPropertyGrid* propGr } -wxPGChoiceAndButtonEditor::~wxPGChoiceAndButtonEditor() { } - +wxPGChoiceAndButtonEditor::~wxPGChoiceAndButtonEditor() +{ + wxPG_EDITOR(ChoiceAndButton) = NULL; +} // ----------------------------------------------------------------------- // wxPGTextCtrlAndButtonEditor @@ -1373,8 +1391,10 @@ wxPGWindowList wxPGTextCtrlAndButtonEditor::CreateControls( wxPropertyGrid* prop } -wxPGTextCtrlAndButtonEditor::~wxPGTextCtrlAndButtonEditor() { } - +wxPGTextCtrlAndButtonEditor::~wxPGTextCtrlAndButtonEditor() +{ + wxPG_EDITOR(TextCtrlAndButton) = NULL; +} // ----------------------------------------------------------------------- // wxPGCheckBoxEditor @@ -1508,8 +1528,7 @@ END_EVENT_TABLE() wxSimpleCheckBox::~wxSimpleCheckBox() { - delete ms_doubleBuffer; - ms_doubleBuffer = NULL; + wxDELETE(ms_doubleBuffer); } wxBitmap* wxSimpleCheckBox::ms_doubleBuffer = NULL; @@ -1705,8 +1724,10 @@ void wxPGCheckBoxEditor::SetValueToUnspecified( wxPGProperty* WXUNUSED(property) } -wxPGCheckBoxEditor::~wxPGCheckBoxEditor() { } - +wxPGCheckBoxEditor::~wxPGCheckBoxEditor() +{ + wxPG_EDITOR(CheckBox) = NULL; +} #endif // wxPG_INCLUDE_CHECKBOX @@ -1727,8 +1748,10 @@ wxWindow* wxPropertyGrid::GetEditorControl() const void wxPropertyGrid::CorrectEditorWidgetSizeX() { int secWid = 0; - int newSplitterx = m_pState->DoGetSplitterPosition(m_selColumn-1); - int newWidth = newSplitterx + m_pState->m_colWidths[m_selColumn]; + + // Use fixed selColumn 1 for main editor widgets + int newSplitterx = m_pState->DoGetSplitterPosition(0); + int newWidth = newSplitterx + m_pState->m_colWidths[1]; if ( m_wndEditor2 ) { @@ -1768,25 +1791,41 @@ void wxPropertyGrid::CorrectEditorWidgetSizeX() void wxPropertyGrid::CorrectEditorWidgetPosY() { - if ( GetSelection() && (m_wndEditor || m_wndEditor2) ) - { - wxRect r = GetEditorWidgetRect(GetSelection(), m_selColumn); + wxPGProperty* selected = GetSelection(); - if ( m_wndEditor ) + if ( selected ) + { + if ( m_labelEditor ) { - wxPoint pos = m_wndEditor->GetPosition(); + wxRect r = GetEditorWidgetRect(selected, m_selColumn); + wxPoint pos = m_labelEditor->GetPosition(); // Calculate y offset int offset = pos.y % m_lineHeight; - m_wndEditor->Move(pos.x, r.y + offset); + m_labelEditor->Move(pos.x, r.y + offset); } - if ( m_wndEditor2 ) + if ( m_wndEditor || m_wndEditor2 ) { - wxPoint pos = m_wndEditor2->GetPosition(); + wxRect r = GetEditorWidgetRect(selected, 1); + + if ( m_wndEditor ) + { + wxPoint pos = m_wndEditor->GetPosition(); + + // Calculate y offset + int offset = pos.y % m_lineHeight; + + m_wndEditor->Move(pos.x, r.y + offset); + } - m_wndEditor2->Move(pos.x, r.y); + if ( m_wndEditor2 ) + { + wxPoint pos = m_wndEditor2->GetPosition(); + + m_wndEditor2->Move(pos.x, r.y); + } } } } @@ -1897,6 +1936,13 @@ wxWindow* wxPropertyGrid::GenerateEditorTextCtrl( const wxPoint& pos, } #endif + // This code is repeated from DoSelectProperty(). However, font boldness + // must be set before margin is set up below in FixPosForTextCtrl(). + if ( forColumn == 1 && + prop->HasFlag(wxPG_PROP_MODIFIED) && + HasFlag(wxPG_BOLD_MODIFIED) ) + tc->SetFont( m_captionFont ); + // Center the control vertically if ( !hasSpecialSize ) FixPosForTextCtrl(tc, forColumn);