+bool DolphinColumnView::eventFilter(QObject* watched, QEvent* event)
+{
+ if (watched == m_resizeWidget) {
+ switch (event->type()) {
+ case QEvent::MouseButtonPress: {
+ // Initiate the resizing of the column
+ QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event);
+ m_resizeXOrigin = mouseEvent->globalX();
+ m_resizeWidget->setMouseTracking(true);
+ event->accept();
+ return true;
+ }
+
+ case QEvent::MouseButtonDblClick: {
+ // Reset the column width to the default value
+ const ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
+ setMaximumWidth(settings->columnWidth());
+ m_container->layoutColumns();
+ m_resizeWidget->setMouseTracking(false);
+ m_resizeXOrigin = -1;
+ event->accept();
+ return true;
+ }
+
+ case QEvent::MouseMove: {
+ // Resize the column and trigger a relayout of the container
+ QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event);
+ int requestedWidth = maximumWidth() - m_resizeXOrigin + mouseEvent->globalX();;
+ if (requestedWidth < minimumWidth()) {
+ requestedWidth = minimumWidth();
+ }
+ setMaximumWidth(requestedWidth);
+
+ m_container->layoutColumns();
+
+ m_resizeXOrigin = mouseEvent->globalX();
+
+ event->accept();
+ return true;
+ }
+
+ case QEvent::MouseButtonRelease: {
+ // The resizing has been finished
+ m_resizeWidget->setMouseTracking(false);
+ m_resizeXOrigin = -1;
+ event->accept();
+ return true;
+ }
+
+ default:
+ break;
+ }
+ }
+ return DolphinTreeView::eventFilter(watched, event);
+}