projects
/
pulseview.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a20c1fc
)
Fix item dragging
author
Soeren Apel
<soeren@apelpie.net>
Mon, 20 Aug 2018 19:19:18 +0000
(21:19 +0200)
committer
Uwe Hermann
<uwe@hermann-uwe.de>
Tue, 21 Aug 2018 10:02:38 +0000
(12:02 +0200)
pv/views/trace/trace.cpp
patch
|
blob
|
history
pv/views/trace/trace.hpp
patch
|
blob
|
history
pv/views/trace/triggermarker.cpp
patch
|
blob
|
history
pv/views/trace/triggermarker.hpp
patch
|
blob
|
history
pv/views/trace/viewitem.cpp
patch
|
blob
|
history
pv/views/trace/viewitem.hpp
patch
|
blob
|
history
pv/views/trace/viewport.cpp
patch
|
blob
|
history
pv/views/trace/viewport.hpp
patch
|
blob
|
history
pv/views/trace/viewwidget.cpp
patch
|
blob
|
history
pv/views/trace/viewwidget.hpp
patch
|
blob
|
history
diff --git
a/pv/views/trace/trace.cpp
b/pv/views/trace/trace.cpp
index fe5cc281d46984c27aa331910f84e926b11f2dee..8511f7507cdec68e759b9c32d5af33e8c958cccc 100644
(file)
--- a/
pv/views/trace/trace.cpp
+++ b/
pv/views/trace/trace.cpp
@@
-87,11
+87,15
@@
bool Trace::is_selectable(QPoint pos) const
return (pos.x() <= view->header_width());
}
return (pos.x() <= view->header_width());
}
-bool Trace::is_draggable() const
+bool Trace::is_draggable(
QPoint pos
) const
{
// While the header label that belongs to this trace is draggable,
{
// While the header label that belongs to this trace is draggable,
- // the trace itself shall not be
- return false;
+ // the trace itself shall not be. Hence we return true if the header
+ // was clicked and false if the trace area was clicked
+ const View *view = owner_->view();
+ assert(view);
+
+ return (pos.x() <= view->header_width());
}
void Trace::set_segment_display_mode(SegmentDisplayMode mode)
}
void Trace::set_segment_display_mode(SegmentDisplayMode mode)
diff --git
a/pv/views/trace/trace.hpp
b/pv/views/trace/trace.hpp
index 4124ece2e3705415fff359214d3184746293c124..0b4ecce49484af09e8b60938afc5c3069cb3d936 100644
(file)
--- a/
pv/views/trace/trace.hpp
+++ b/
pv/views/trace/trace.hpp
@@
-110,7
+110,7
@@
public:
/**
* Returns true if the item may be dragged/moved.
*/
/**
* Returns true if the item may be dragged/moved.
*/
- virtual bool is_draggable() const;
+ virtual bool is_draggable(
QPoint pos
) const;
/**
* Configures the segment display mode to use.
/**
* Configures the segment display mode to use.
diff --git
a/pv/views/trace/triggermarker.cpp
b/pv/views/trace/triggermarker.cpp
index 7ef5454a8a5ccb9aa3d64c500f0ca01f598e3368..3311f3502ba2d92540939a3ad9c5102550d07dda 100644
(file)
--- a/
pv/views/trace/triggermarker.cpp
+++ b/
pv/views/trace/triggermarker.cpp
@@
-43,8
+43,9
@@
bool TriggerMarker::enabled() const
return true;
}
return true;
}
-bool TriggerMarker::is_draggable() const
+bool TriggerMarker::is_draggable(
QPoint pos
) const
{
{
+ (void)pos;
return false;
}
return false;
}
diff --git
a/pv/views/trace/triggermarker.hpp
b/pv/views/trace/triggermarker.hpp
index 9137f28c1f5b96886c032709bd6d3d32caf06580..a97fefb0d3faf8c571e347f6b7ddfa240c31af39 100644
(file)
--- a/
pv/views/trace/triggermarker.hpp
+++ b/
pv/views/trace/triggermarker.hpp
@@
-22,6
+22,8
@@
#include "timeitem.hpp"
#include "timeitem.hpp"
+#include <QPoint>
+
namespace pv {
namespace views {
namespace trace {
namespace pv {
namespace views {
namespace trace {
@@
-58,7
+60,7
@@
public:
/**
Returns true if the item may be dragged/moved.
*/
/**
Returns true if the item may be dragged/moved.
*/
- bool is_draggable() const override;
+ bool is_draggable(
QPoint pos
) const override;
/**
* Sets the time of the marker.
/**
* Sets the time of the marker.
diff --git
a/pv/views/trace/viewitem.cpp
b/pv/views/trace/viewitem.cpp
index 3627d8ca6f1bcefb160b84d609f0b0fae6c9564d..2dd8ade8c1fddb03c718c79179c4161c278dc461 100644
(file)
--- a/
pv/views/trace/viewitem.cpp
+++ b/
pv/views/trace/viewitem.cpp
@@
-55,8
+55,9
@@
void ViewItem::select(bool select)
selected_ = select;
}
selected_ = select;
}
-bool ViewItem::is_draggable() const
+bool ViewItem::is_draggable(
QPoint pos
) const
{
{
+ (void)pos;
return true;
}
return true;
}
@@
-67,8
+68,7
@@
bool ViewItem::dragging() const
void ViewItem::drag()
{
void ViewItem::drag()
{
- if (is_draggable())
- drag_point_ = drag_point(QRect());
+ drag_point_ = drag_point(QRect());
}
void ViewItem::drag_release()
}
void ViewItem::drag_release()
diff --git
a/pv/views/trace/viewitem.hpp
b/pv/views/trace/viewitem.hpp
index 8421d8614914078fc61b7c3a26a3a647f57f99c4..53ed2a60cbe891c578ba30c65eb50adb5da34c48 100644
(file)
--- a/
pv/views/trace/viewitem.hpp
+++ b/
pv/views/trace/viewitem.hpp
@@
-77,7
+77,7
@@
public:
/**
* Returns true if the item may be dragged/moved.
*/
/**
* Returns true if the item may be dragged/moved.
*/
- virtual bool is_draggable() const;
+ virtual bool is_draggable(
QPoint pos
) const;
/**
* Returns true if the item is being dragged.
/**
* Returns true if the item is being dragged.
diff --git
a/pv/views/trace/viewport.cpp
b/pv/views/trace/viewport.cpp
index e9a9df0c89b4fb4e934a24f33f0ac0f6c15df7eb..e5fb607639eac3b6ae7a2985c1c7735988c16f40 100644
(file)
--- a/
pv/views/trace/viewport.cpp
+++ b/
pv/views/trace/viewport.cpp
@@
-64,9
+64,9
@@
shared_ptr<ViewItem> Viewport::get_mouse_over_item(const QPoint &pt)
return nullptr;
}
return nullptr;
}
-void Viewport::item_hover(const shared_ptr<ViewItem> &item)
+void Viewport::item_hover(const shared_ptr<ViewItem> &item
, QPoint pos
)
{
{
- if (item && item->is_draggable())
+ if (item && item->is_draggable(
pos
))
setCursor(dynamic_pointer_cast<RowItem>(item) ?
Qt::SizeVerCursor : Qt::SizeHorCursor);
else
setCursor(dynamic_pointer_cast<RowItem>(item) ?
Qt::SizeVerCursor : Qt::SizeHorCursor);
else
diff --git
a/pv/views/trace/viewport.hpp
b/pv/views/trace/viewport.hpp
index a49084b43ebe901f6e9cd7bb6ab2ad199e41e580..1b77a0d0699e7264170f869f39097216d923103b 100644
(file)
--- a/
pv/views/trace/viewport.hpp
+++ b/
pv/views/trace/viewport.hpp
@@
-22,6
+22,7
@@
#include <boost/optional.hpp>
#include <boost/optional.hpp>
+#include <QPoint>
#include <QTimer>
#include <QTouchEvent>
#include <QTimer>
#include <QTouchEvent>
@@
-62,7
+63,7
@@
private:
* @param item The item that is being hovered over, or @c nullptr
* if no view item is being hovered over.
*/
* @param item The item that is being hovered over, or @c nullptr
* if no view item is being hovered over.
*/
- void item_hover(const shared_ptr<ViewItem> &item);
+ void item_hover(const shared_ptr<ViewItem> &item
, QPoint pos
);
/**
* Sets this item into the dragged state.
/**
* Sets this item into the dragged state.
diff --git
a/pv/views/trace/viewwidget.cpp
b/pv/views/trace/viewwidget.cpp
index a14c4fd224395eb95bc8c46d97766051a7ec0e51..c3461614ab637db740659666482d6b12ee24445c 100644
(file)
--- a/
pv/views/trace/viewwidget.cpp
+++ b/
pv/views/trace/viewwidget.cpp
@@
-50,9
+50,10
@@
void ViewWidget::clear_selection()
i->select(false);
}
i->select(false);
}
-void ViewWidget::item_hover(const shared_ptr<ViewItem> &item)
+void ViewWidget::item_hover(const shared_ptr<ViewItem> &item
, QPoint pos
)
{
(void)item;
{
(void)item;
+ (void)pos;
}
void ViewWidget::item_clicked(const shared_ptr<ViewItem> &item)
}
void ViewWidget::item_clicked(const shared_ptr<ViewItem> &item)
@@
-180,7
+181,7
@@
void ViewWidget::mouse_left_press_event(QMouseEvent *event)
bool item_dragged = false;
const auto items = this->items();
for (auto &i : items)
bool item_dragged = false;
const auto items = this->items();
for (auto &i : items)
- if (i->selected()) {
+ if (i->selected()
&& i->is_draggable(event->pos())
) {
item_dragged = true;
i->drag();
}
item_dragged = true;
i->drag();
}
@@
-281,7
+282,7
@@
void ViewWidget::mouseMoveEvent(QMouseEvent *event)
mouse_point_ = event->pos();
if (!event->buttons())
mouse_point_ = event->pos();
if (!event->buttons())
- item_hover(get_mouse_over_item(event->pos()));
+ item_hover(get_mouse_over_item(event->pos())
, event->pos()
);
else if (event->buttons() & Qt::LeftButton) {
if (!item_dragging_) {
if ((event->pos() - mouse_down_point_).manhattanLength() <
else if (event->buttons() & Qt::LeftButton) {
if (!item_dragging_) {
if ((event->pos() - mouse_down_point_).manhattanLength() <
diff --git
a/pv/views/trace/viewwidget.hpp
b/pv/views/trace/viewwidget.hpp
index e4fb73c8255debedb73963acddc0984e635a0433..f4928e67f885bcd948c10ae0b72a7da03bff5d5b 100644
(file)
--- a/
pv/views/trace/viewwidget.hpp
+++ b/
pv/views/trace/viewwidget.hpp
@@
-22,6
+22,7
@@
#include <memory>
#include <memory>
+#include <QPoint>
#include <QWidget>
using std::shared_ptr;
#include <QWidget>
using std::shared_ptr;
@@
-49,7
+50,7
@@
protected:
* if no view item is being hovered over.
* @remarks the default implementation does nothing.
*/
* if no view item is being hovered over.
* @remarks the default implementation does nothing.
*/
- virtual void item_hover(const shared_ptr<ViewItem> &item);
+ virtual void item_hover(const shared_ptr<ViewItem> &item
, QPoint pos
);
/**
* Indicates the event an a view item has been clicked.
/**
* Indicates the event an a view item has been clicked.