]> sigrok.org Git - pulseview.git/blobdiff - pv/view/view.hpp
View: Optimize header pane sizing
[pulseview.git] / pv / view / view.hpp
index 1819ffddaba08873b30b10d23a900beed0001189..76a38f16630b672cdd2a5ba1ebcc2378ca363277 100644 (file)
@@ -29,6 +29,7 @@
 
 #include <QAbstractScrollArea>
 #include <QSizeF>
+#include <QSplitter>
 
 #include <pv/data/signaldata.hpp>
 #include <pv/util.hpp>
@@ -70,13 +71,12 @@ class Trace;
 class Viewport;
 class TriggerMarker;
 
-class CustomAbstractScrollArea : public QAbstractScrollArea
+class CustomScrollArea : public QAbstractScrollArea
 {
        Q_OBJECT
 
 public:
-       CustomAbstractScrollArea(QWidget *parent = nullptr);
-       void setViewportMargins(int left, int top, int right, int bottom);
+       CustomScrollArea(QWidget *parent = nullptr);
        bool viewportEvent(QEvent *event);
 };
 
@@ -315,12 +315,18 @@ private:
         */
        void calculate_tick_spacing();
 
+       void adjust_top_margin();
+
        void update_scroll();
 
        void reset_scroll();
 
        void set_scroll_default();
 
+       bool header_was_shrunk() const;
+
+       void expand_header_to_fit();
+
        void update_layout();
 
        TraceTreeItemOwner* find_prevalent_trace_group(
@@ -349,6 +355,7 @@ public:
 
 private Q_SLOTS:
 
+       void on_splitter_moved();
        void h_scroll_value_changed(int value);
        void v_scroll_value_changed();
 
@@ -398,9 +405,11 @@ private Q_SLOTS:
        void set_time_unit(pv::util::TimeUnit time_unit);
 
 private:
+       CustomScrollArea *scrollarea_;
        Viewport *viewport_;
        Ruler *ruler_;
        Header *header_;
+       QSplitter *splitter_;
 
        unordered_set< shared_ptr<Signal> > signals_;
 
@@ -408,8 +417,6 @@ private:
        vector< shared_ptr<DecodeTrace> > decode_traces_;
 #endif
 
-       CustomAbstractScrollArea scrollarea_;
-
        /// The view time scale in seconds per pixel.
        double scale_;