From e081bf3d864d5662716668d6b4adcb0871d11dae Mon Sep 17 00:00:00 2001 From: Soeren Apel Date: Tue, 29 Dec 2015 23:12:26 +0100 Subject: [PATCH] Make traces non-draggable outside the header area --- pv/view/trace.cpp | 11 +++++++++++ pv/view/trace.hpp | 5 +++++ pv/view/view.cpp | 5 +++++ pv/view/view.hpp | 2 ++ 4 files changed, 23 insertions(+) diff --git a/pv/view/trace.cpp b/pv/view/trace.cpp index f7bba9ff..f7e7ebf2 100644 --- a/pv/view/trace.cpp +++ b/pv/view/trace.cpp @@ -80,6 +80,17 @@ void Trace::set_coloured_bg(bool state) coloured_bg_ = state; } +bool Trace::is_draggable() const +{ + const View *const view = owner_->view(); + assert(view); + + QPoint cursor_pos = view->mapFromGlobal(QCursor::pos()); + + // The signal is draggable only in the header area + return (cursor_pos.x() <= view->header_size().width()); +} + void Trace::paint_label(QPainter &p, const QRect &rect, bool hover) { const int y = get_visual_y(); diff --git a/pv/view/trace.hpp b/pv/view/trace.hpp index c9582c61..acaa341a 100644 --- a/pv/view/trace.hpp +++ b/pv/view/trace.hpp @@ -81,6 +81,11 @@ public: */ void set_coloured_bg(bool state); + /** + * Returns true if the item may be dragged/moved. + */ + bool is_draggable() const; + /** * Computes the outline rectangle of the viewport hit-box. * @param rect the rectangle of the viewport area. diff --git a/pv/view/view.cpp b/pv/view/view.cpp index c9b08bf8..124048bd 100644 --- a/pv/view/view.cpp +++ b/pv/view/view.cpp @@ -203,6 +203,11 @@ const Viewport* View::viewport() const return viewport_; } +const QSize View::header_size() const +{ + return header_->sizeHint(); +} + vector< shared_ptr > View::time_items() const { const vector> f(flags()); diff --git a/pv/view/view.hpp b/pv/view/view.hpp index 635273da..8aa55125 100644 --- a/pv/view/view.hpp +++ b/pv/view/view.hpp @@ -95,6 +95,8 @@ public: const Viewport* viewport() const; + const QSize header_size() const; + /** * Gets a list of time markers. */ -- 2.30.2