Mercurial > octave
changeset 24652:ef60416c4686
directly edit scalar numeric & logical values in cell arrays (bug #52988)
* variable-editor-model.cc (variable_editor::impl::cell): Don't
require subeditor for scalar numeric and logical values in cell
arrays. Create label in same way for all objects.
* ov-cell.cc (octave_cell::edit_display): Correctly call edit_display
for individual scalar numeric and logical values instead of calling
edit_display recursively for all scalar objects. Return dimensions
and type if element is not a scalar numeric or logical array.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 29 Jan 2018 16:22:30 -0500 |
parents | d88323efe969 |
children | f0de21a6a426 |
files | libgui/src/variable-editor-model.cc libinterp/octave-value/ov-cell.cc |
diffstat | 2 files changed, 13 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/variable-editor-model.cc Mon Jan 29 15:19:09 2018 -0500 +++ b/libgui/src/variable-editor-model.cc Mon Jan 29 16:22:30 2018 -0500 @@ -91,16 +91,12 @@ Cell cval = val.cell_value (); octave_value ov = cval(r,c); - dim_vector dv = ov.dims (); - - m_requires_sub_editor = true; - m_data = make_label ("", ov); + if (! (ov.numel () == 1 && (ov.isnumeric () || ov.islogical ()))) + m_requires_sub_editor = true; } - else - { - m_data = QString::fromStdString (val.edit_display (r, c)); - } + + m_data = QString::fromStdString (val.edit_display (r, c)); } cell (const QString& d, const QString& s, const QString& t, @@ -133,6 +129,7 @@ m_rows (0), m_cols (0), m_table (), m_label (label), m_validity (true), m_validtext (make_label (m_name, m_value)) { + m_label->setText (m_validtext); } impl (const impl&) = delete;
--- a/libinterp/octave-value/ov-cell.cc Mon Jan 29 15:19:09 2018 -0500 +++ b/libinterp/octave-value/ov-cell.cc Mon Jan 29 16:22:30 2018 -0500 @@ -106,10 +106,15 @@ { octave_value val = matrix(i,j); - if (val.numel () == 1) - return edit_display(0,0); + if (val.numel () == 1 && (val.isnumeric () || val.islogical ())) + return val.edit_display (0, 0); else - return "type + dims"; + { + std::string tname = val.type_name (); + dim_vector dv = val.dims (); + std::string dimstr = dv.str (); + return "[" + dimstr + " " + tname + "]"; + } } template <>