Re-implemented to filter the parent's events.
97{
99 return false;
100 }
101
102 switch (e->type()) {
103 case QEvent::ShortcutOverride:
104 if (
key && (
static_cast<QKeyEvent *
>(e)->
key() ==
key)) {
108 e->accept();
109 return true;
110 }
111 break;
112 case QEvent::ChildAdded:
113 case QEvent::ChildRemoved:
114
115 if (!static_cast<QChildEvent *>(e)->child()->isWidgetType()) {
116 break;
117 }
118 Q_FALLTHROUGH();
119 case QEvent::Resize:
120 case QEvent::LayoutRequest:
121 case QEvent::WindowActivate:
122 case QEvent::WindowDeactivate:
126 }
127 break;
128
129 case QEvent::MouseButtonPress:
131
132 QWidget *
w =
static_cast<QWidget *
>(obj)->childAt(
static_cast<QMouseEvent *
>(e)->pos());
133 if (!w) {
134 w =
static_cast<QWidget *
>(obj);
135 }
136 if (!w) {
137 return false;
138 }
139
140 QString text;
141 if (qobject_cast<QLabel *>(w)) {
142 text =
static_cast<QLabel *
>(
w)->text();
143 } else if (qobject_cast<QAbstractButton *>(w)) {
144 text =
static_cast<QAbstractButton *
>(
w)->text();
145 } else if (qobject_cast<QComboBox *>(w)) {
146 text =
static_cast<QComboBox *
>(
w)->currentText();
147 } else if (qobject_cast<QTabBar *>(w)) {
148 text =
static_cast<QTabBar *
>(
w)->tabText(
static_cast<QTabBar *
>(w)->tabAt(
static_cast<QMouseEvent *
>(e)->pos()));
149 } else if (qobject_cast<QGroupBox *>(w)) {
150 text =
static_cast<QGroupBox *
>(
w)->title();
151 } else if (qobject_cast<QMenu *>(obj)) {
152 QAction *a = static_cast<QMenu *>(obj)->actionAt(static_cast<QMouseEvent *>(e)->pos());
153 if (!a) {
154 return false;
155 }
156 text = a->text();
157 if (text.isEmpty()) {
158 text = a->iconText();
159 }
160 }
161 if (text.isEmpty()) {
162 return false;
163 }
164
165 if (static_cast<QMouseEvent *>(e)->modifiers() == Qt::ControlModifier) {
166 text.remove(QChar::fromLatin1('&'));
167 }
168
169
171 QClipboard *clipboard = QApplication::clipboard();
172 clipboard->setText(text);
173 } else {
174 QProcess *script = new QProcess(this);
176 connect(script, SIGNAL(finished(
int,QProcess::ExitStatus)), script, SLOT(deleteLater()));
177 }
178 e->accept();
179 return true;
180
181
182 }
183 return false;
184 case QEvent::Timer:
185 case QEvent::MouseMove:
186 case QEvent::Paint:
187 return false;
188 default:
189
190 break;
191 }
192 return false;
193}
QString button(const QWheelEvent &ev)