- // It is important to hide the widgets before invoking
- // QWidget::resizeEvent(), otherwise it is possible that
- // the dock widgets are shrinked when having a small
- // statusbar width (bug #202147).
- m_zoomWidget->hide();
- m_spaceInfo->hide();
-
- QWidget::resizeEvent(event);
- QMetaObject::invokeMethod(this, "assureVisibleText", Qt::QueuedConnection);
+ Q_UNUSED(event);
+
+ KMenu menu(this);
+
+ QAction* copyAction = 0;
+ switch (type()) {
+ case Default:
+ case OperationCompleted:
+ case Information:
+ copyAction = menu.addAction(i18nc("@action:inmenu", "Copy Information Message"));
+ break;
+ case Error:
+ copyAction = menu.addAction(i18nc("@action:inmenu", "Copy Error Message"));
+ break;
+ default: break;
+ }
+
+ GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+
+ QAction* showZoomSliderAction = menu.addAction(i18nc("@action:inmenu", "Show Zoom Slider"));
+ showZoomSliderAction->setCheckable(true);
+ showZoomSliderAction->setChecked(settings->showZoomSlider());
+
+ QAction* showSpaceInfoAction = menu.addAction(i18nc("@action:inmenu", "Show Space Information"));
+ showSpaceInfoAction->setCheckable(true);
+ showSpaceInfoAction->setChecked(settings->showSpaceInfo());
+
+ const QAction* action = menu.exec(QCursor::pos());
+ if (action == copyAction) {
+ QMimeData* mimeData = new QMimeData();
+ mimeData->setText(message());
+ QApplication::clipboard()->setMimeData(mimeData);
+ } else if (action == showZoomSliderAction) {
+ const bool visible = showZoomSliderAction->isChecked();
+ settings->setShowZoomSlider(visible);
+ m_zoomWidget->setVisible(visible);
+ } else if (action == showSpaceInfoAction) {
+ const bool visible = showSpaceInfoAction->isChecked();
+ settings->setShowSpaceInfo(visible);
+ m_spaceInfo->setVisible(visible);
+ }