Qt: Proto tree fixes

Make sure ProtoTree::toString stops at the right place.

Don't emit fieldSelected when we're processing a context menu event. It
doesn't appear to be needed and it triggers unwanted automatic scrolling
when prefs.gui_auto_scroll_on_expand is enabled.

Change-Id: I351a6974d07aea6fdd3eb0b5c1975a1b8d8eb7da
Reviewed-on: https://code.wireshark.org/review/25396
Reviewed-by: Gerald Combs <gerald@wireshark.org>
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Gerald Combs 2018-01-19 11:02:07 -08:00 committed by Anders Broman
parent 73f5afb75f
commit 145e3a5dc3
2 changed files with 5 additions and 6 deletions

View File

@ -183,8 +183,6 @@ void ProtoTree::contextMenuEvent(QContextMenuEvent *event)
decode_as_->setData(QVariant::fromValue(true));
// Set menu sensitivity and action data.
emit fieldSelected(&finfo);
ctx_menu_.exec(event->globalPos());
decode_as_->setData(QVariant());
}
@ -499,9 +497,10 @@ void ProtoTree::restoreSelectedField()
autoScrollTo(cur_index);
}
const QString ProtoTree::toString(const QModelIndex &index) const
const QString ProtoTree::toString(const QModelIndex &start_idx) const
{
QModelIndex cur_idx = index.isValid() ? index : proto_tree_model_->index(0, 0);
QModelIndex cur_idx = start_idx.isValid() ? start_idx : proto_tree_model_->index(0, 0);
QModelIndex stop_idx = proto_tree_model_->index(cur_idx.row() + 1, 0, cur_idx.parent());
QString tree_string;
int indent_level = 0;
@ -524,7 +523,7 @@ const QString ProtoTree::toString(const QModelIndex &index) const
// Next parent
cur_idx = proto_tree_model_->index(cur_idx.parent().row() + 1, 0, cur_idx.parent().parent());
indent_level--;
} while (cur_idx.isValid() && cur_idx != index && indent_level >= 0);
} while (cur_idx.isValid() && cur_idx.internalPointer() != stop_idx.internalPointer() && indent_level >= 0);
return tree_string;
}

View File

@ -38,7 +38,7 @@ public:
void clear();
void closeContextMenu();
void restoreSelectedField();
const QString toString(const QModelIndex &index = QModelIndex()) const;
const QString toString(const QModelIndex &start_idx = QModelIndex()) const;
protected:
virtual void contextMenuEvent(QContextMenuEvent *event);