]> sigrok.org Git - pulseview.git/blobdiff - pv/view/view.cpp
Handle C-strings as UTF-8
[pulseview.git] / pv / view / view.cpp
index f727cc33b540b4fddc18b77f154a08051d3a78d4..f5f626b38a4be15bffaa84b13a187f8758dffdfb 100644 (file)
@@ -52,9 +52,6 @@ namespace view {
 const double View::MaxScale = 1e9;
 const double View::MinScale = 1e-15;
 
-const int View::LabelMarginWidth = 70;
-const int View::RulerHeight = 30;
-
 const int View::MaxScrollValue = INT_MAX / 2;
 
 const int View::SignalHeight = 30;
@@ -95,6 +92,8 @@ View::View(SigSession &session, QWidget *parent) :
        connect(_cursors.second().get(), SIGNAL(time_changed()),
                this, SLOT(marker_time_changed()));
 
+       connect(_header, SIGNAL(geometry_updated()),
+               this, SLOT(on_geometry_updated()));
        connect(_header, SIGNAL(signals_moved()),
                this, SLOT(on_signals_moved()));
 
@@ -108,7 +107,6 @@ View::View(SigSession &session, QWidget *parent) :
        connect(_ruler, SIGNAL(selection_changed()),
                this, SIGNAL(selection_changed()));
 
-       setViewportMargins(LabelMarginWidth, RulerHeight, 0, 0);
        setViewport(_viewport);
 
        _viewport->installEventFilter(this);
@@ -143,7 +141,7 @@ int View::v_offset() const
 
 void View::zoom(double steps)
 {
-       zoom(steps, (width() - LabelMarginWidth) / 2);
+       zoom(steps, _viewport->width() / 2);
 }
 
 void View::zoom(double steps, int offset)
@@ -381,6 +379,17 @@ void View::update_scroll()
                areaSize.height());
 }
 
+void View::update_layout()
+{
+       setViewportMargins(_header->sizeHint().width(),
+               _ruler->sizeHint().height(), 0, 0);
+       _ruler->setGeometry(_viewport->x(), 0,
+               _viewport->width(), _viewport->y());
+       _header->setGeometry(0, _viewport->y(),
+               _viewport->x(), _viewport->height());
+       update_scroll();
+}
+
 bool View::compare_trace_v_offsets(const shared_ptr<Trace> &a,
        const shared_ptr<Trace> &b)
 {
@@ -432,11 +441,7 @@ bool View::viewportEvent(QEvent *e)
 
 void View::resizeEvent(QResizeEvent*)
 {
-       _ruler->setGeometry(_viewport->x(), 0,
-               _viewport->width(), _viewport->y());
-       _header->setGeometry(0, _viewport->y(),
-               _viewport->x(), _viewport->height());
-       update_scroll();
+       update_layout();
 }
 
 void View::h_scroll_value_changed(int value)
@@ -474,6 +479,7 @@ void View::signals_changed()
                offset += SignalHeight + 2 * SignalMargin;
        }
 
+       update_layout();
        normalize_layout();
 }
 
@@ -510,5 +516,10 @@ void View::on_signals_moved()
        signals_moved();
 }
 
+void View::on_geometry_updated()
+{
+       update_layout();
+}
+
 } // namespace view
 } // namespace pv