projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
TraceView: Properly handle the header resizing events
[pulseview.git]
/
pv
/
views
/
trace
/
view.cpp
diff --git
a/pv/views/trace/view.cpp
b/pv/views/trace/view.cpp
index f63401e61ed496f114ea0173cb985ea204c034f3..29c6fef4ee4f1ec3bb24742e46865ef8806eca1c 100644
(file)
--- a/
pv/views/trace/view.cpp
+++ b/
pv/views/trace/view.cpp
@@
-129,6
+129,7
@@
View::View(Session &session, bool is_main_view, QWidget *parent) :
offset_(0),
updating_scroll_(false),
settings_restored_(false),
offset_(0),
updating_scroll_(false),
settings_restored_(false),
+ header_was_shrunk_(false),
sticky_scrolling_(false), // Default setting is set in MainWindow::setup_ui()
always_zoom_to_fit_(false),
tick_period_(0),
sticky_scrolling_(false), // Default setting is set in MainWindow::setup_ui()
always_zoom_to_fit_(false),
tick_period_(0),
@@
-886,7
+887,7
@@
void View::set_scroll_default()
set_v_offset(extents.first);
}
set_v_offset(extents.first);
}
-bool View::header_was_shrunk() const
+void View::determine_if_header_was_shrunk()
{
const int header_pane_width = splitter_->sizes().front();
const int header_width = header_->extended_size_hint().width();
{
const int header_pane_width = splitter_->sizes().front();
const int header_width = header_->extended_size_hint().width();
@@
-894,10
+895,10
@@
bool View::header_was_shrunk() const
// Allow for a slight margin of error so that we also accept
// slight differences when e.g. a label name change increased
// the overall width
// Allow for a slight margin of error so that we also accept
// slight differences when e.g. a label name change increased
// the overall width
-
return
(header_pane_width < (header_width - 10));
+
header_was_shrunk_ =
(header_pane_width < (header_width - 10));
}
}
-void View::
expand
_header_to_fit()
+void View::
resize
_header_to_fit()
{
// Setting the maximum width of the header widget doesn't work as
// expected because the splitter would allow the user to make the
{
// Setting the maximum width of the header widget doesn't work as
// expected because the splitter would allow the user to make the
@@
-1035,8
+1036,10
@@
bool View::eventFilter(QObject *object, QEvent *event)
// resized to their final sizes.
update_layout();
// resized to their final sizes.
update_layout();
- if (!settings_restored_)
- expand_header_to_fit();
+ if (settings_restored_)
+ determine_if_header_was_shrunk();
+ else
+ resize_header_to_fit();
if (scroll_needs_defaults_) {
set_scroll_default();
if (scroll_needs_defaults_) {
set_scroll_default();
@@
-1103,14
+1106,17
@@
void View::extents_changed(bool horz, bool vert)
void View::on_signal_name_changed()
{
void View::on_signal_name_changed()
{
- if (!header_was_shrunk
()
)
-
expand
_header_to_fit();
+ if (!header_was_shrunk
_
)
+
resize
_header_to_fit();
}
void View::on_splitter_moved()
{
}
void View::on_splitter_moved()
{
- if (!header_was_shrunk())
- expand_header_to_fit();
+ // The header can only shrink when the splitter is moved manually
+ determine_if_header_was_shrunk();
+
+ if (!header_was_shrunk_)
+ resize_header_to_fit();
}
void View::h_scroll_value_changed(int value)
}
void View::h_scroll_value_changed(int value)
@@
-1151,6
+1157,7
@@
void View::signals_changed()
vector< shared_ptr<Channel> > channels;
shared_ptr<sigrok::Device> sr_dev;
vector< shared_ptr<Channel> > channels;
shared_ptr<sigrok::Device> sr_dev;
+ bool signals_added_or_removed = false;
// Do we need to set the vertical scrollbar to its default position later?
// We do if there are no traces, i.e. the scroll bar has no range set
// Do we need to set the vertical scrollbar to its default position later?
// We do if there are no traces, i.e. the scroll bar has no range set
@@
-1282,6
+1289,7
@@
void View::signals_changed()
TraceTreeItemOwner *const owner = trace->owner();
assert(owner);
owner->remove_child_item(trace);
TraceTreeItemOwner *const owner = trace->owner();
assert(owner);
owner->remove_child_item(trace);
+ signals_added_or_removed = true;
}
// Remove any empty trace groups
}
// Remove any empty trace groups
@@
-1306,13
+1314,12
@@
void View::signals_changed()
if (item->enabled())
offset += extents.second;
if (item->enabled())
offset += extents.second;
+ signals_added_or_removed = true;
}
}
- if (!new_top_level_items.empty())
- // Expand the header pane because the header should become fully
- // visible when new signals are added
- expand_header_to_fit();
+ if (signals_added_or_removed && !header_was_shrunk_)
+ resize_header_to_fit();
update_layout();
update_layout();