]> sigrok.org Git - pulseview.git/commitdiff
View: Limit header pane width
authorSoeren Apel <redacted>
Thu, 1 Jun 2017 20:42:20 +0000 (22:42 +0200)
committerUwe Hermann <redacted>
Fri, 2 Jun 2017 11:37:02 +0000 (13:37 +0200)
pv/view/view.cpp
pv/view/view.hpp

index f3afd937795104d18768ca65089091819a5e351e..17b9c1532cdea80da45e8fbce0e13ff7783a2a3d 100644 (file)
@@ -204,6 +204,9 @@ View::View(Session &session, bool is_main_view, QWidget *parent) :
        connect(ruler_, SIGNAL(selection_changed()),
                this, SIGNAL(selection_changed()));
 
        connect(ruler_, SIGNAL(selection_changed()),
                this, SIGNAL(selection_changed()));
 
+       connect(splitter_, SIGNAL(splitterMoved(int, int)),
+               this, SLOT(on_splitter_moved()));
+
        connect(this, SIGNAL(hover_point_changed()),
                this, SLOT(on_hover_point_changed()));
 
        connect(this, SIGNAL(hover_point_changed()),
                this, SLOT(on_hover_point_changed()));
 
@@ -874,7 +877,10 @@ bool View::header_fully_visible() const
        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();
 
-       return (header_pane_width >= header_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));
 }
 
 void View::update_layout()
 }
 
 void View::update_layout()
@@ -1040,8 +1046,13 @@ void View::row_item_appearance_changed(bool label, bool content)
 
 void View::time_item_appearance_changed(bool label, bool content)
 {
 
 void View::time_item_appearance_changed(bool label, bool content)
 {
-       if (label)
+       if (label) {
                ruler_->update();
                ruler_->update();
+
+               // Make sure the header pane width is updated, too
+               update_layout();
+       }
+
        if (content)
                viewport_->update();
 }
        if (content)
                viewport_->update();
 }
@@ -1055,6 +1066,15 @@ void View::extents_changed(bool horz, bool vert)
        lazy_event_handler_.start();
 }
 
        lazy_event_handler_.start();
 }
 
+void View::on_splitter_moved()
+{
+       // Setting the maximum width of the header widget doesn't work as
+       // expected because the splitter would allow the user to make the
+       // pane wider than that, creating empty space as a result.
+       // To make this work, we stricly enforce the maximum width by calling
+       update_layout();
+}
+
 void View::h_scroll_value_changed(int value)
 {
        if (updating_scroll_)
 void View::h_scroll_value_changed(int value)
 {
        if (updating_scroll_)
index 8d5e60f2f35ed76262b6654c6ad85f66cbb4fc3b..1184213150d21449423f97156f9bafa9fbe01f81 100644 (file)
@@ -353,6 +353,7 @@ public:
 
 private Q_SLOTS:
 
 
 private Q_SLOTS:
 
+       void on_splitter_moved();
        void h_scroll_value_changed(int value);
        void v_scroll_value_changed();
 
        void h_scroll_value_changed(int value);
        void v_scroll_value_changed();