Changeset View
Changeset View
Standalone View
Standalone View
krusader/GUI/krlistwidget.cpp
Show All 18 Lines | |||||
19 | *****************************************************************************/ | 19 | *****************************************************************************/ | ||
20 | 20 | | |||
21 | #include "krlistwidget.h" | 21 | #include "krlistwidget.h" | ||
22 | #include "krstyleproxy.h" | 22 | #include "krstyleproxy.h" | ||
23 | 23 | | |||
24 | // QtGui | 24 | // QtGui | ||
25 | #include <QContextMenuEvent> | 25 | #include <QContextMenuEvent> | ||
26 | 26 | | |||
27 | KrListWidget::KrListWidget(QWidget * parent) : QListWidget(parent) | 27 | KrListWidget::KrListWidget(QWidget *parent) : QListWidget(parent) | ||
28 | { | 28 | { | ||
29 | KrStyleProxy *style = new KrStyleProxy(); | 29 | KrStyleProxy *style = new KrStyleProxy(); | ||
30 | style->setParent(this); | 30 | style->setParent(this); | ||
31 | setStyle(style); | 31 | setStyle(style); | ||
32 | } | | |||
33 | | ||||
34 | bool KrListWidget::event(QEvent * event) | | |||
35 | { | | |||
36 | switch (event->type()) { | | |||
37 | // HACK: QT 4 Context menu key isn't handled properly | | |||
38 | case QEvent::ContextMenu: { | | |||
39 | QContextMenuEvent* ce = (QContextMenuEvent*) event; | | |||
40 | | ||||
41 | if (ce->reason() == QContextMenuEvent::Mouse) { | | |||
42 | QPoint pos = viewport()->mapFromGlobal(ce->globalPos()); | | |||
43 | 32 | | |||
33 | setContextMenuPolicy(Qt::CustomContextMenu); | ||||
34 | connect(this, &QListWidget::customContextMenuRequested, [=](const QPoint &pos) { | ||||
44 | QListWidgetItem * item = itemAt(pos); | 35 | QListWidgetItem *item = itemAt(pos); | ||
45 | 36 | emit itemRightClicked(item, viewport()->mapToGlobal(pos)); | |||
46 | emit itemRightClicked(item, ce->globalPos()); | 37 | }); | ||
47 | return true; | | |||
48 | } else { | | |||
49 | if (currentItem()) { | | |||
50 | QRect r = visualItemRect(currentItem()); | | |||
51 | QPoint p = viewport()->mapToGlobal(QPoint(r.x() + 5, r.y() + 5)); | | |||
52 | | ||||
53 | emit itemRightClicked(currentItem(), p); | | |||
54 | return true; | | |||
55 | } | | |||
56 | } | | |||
57 | } | | |||
58 | break; | | |||
59 | default: | | |||
60 | break; | | |||
61 | } | | |||
62 | | ||||
63 | return QListWidget::event(event); | | |||
64 | } | 38 | } |