* @brief Handles double-click events on window title bars to toggle maximize/restore. */
| 2123 | * @brief Handles double-click events on window title bars to toggle maximize/restore. |
| 2124 | */ |
| 2125 | void UI::WindowManager::mouseDoubleClickEvent(QMouseEvent* event) |
| 2126 | { |
| 2127 | m_focusedWindow = topmostWindowAt(event->pos()); |
| 2128 | if (!m_focusedWindow) { |
| 2129 | QQuickItem::mouseDoubleClickEvent(event); |
| 2130 | return; |
| 2131 | } |
| 2132 | |
| 2133 | const int captionH = m_focusedWindow->property("captionHeight").toInt(); |
| 2134 | const int externcW = m_focusedWindow->property("externControlWidth").toInt(); |
| 2135 | const int buttonsW = m_focusedWindow->property("windowControlsWidth").toInt(); |
| 2136 | const auto localPos = m_focusedWindow->mapFromItem(this, event->pos()); |
| 2137 | if (localPos.y() <= captionH && localPos.x() <= m_focusedWindow->width() - buttonsW |
| 2138 | && localPos.x() > externcW) { |
| 2139 | const QString state = m_focusedWindow->property("state").toString(); |
| 2140 | |
| 2141 | if (state == "maximized") |
| 2142 | QMetaObject::invokeMethod(m_focusedWindow, "restoreClicked"); |
| 2143 | |
| 2144 | else if (state == "normal") |
| 2145 | QMetaObject::invokeMethod(m_focusedWindow, "maximizeClicked"); |
| 2146 | |
| 2147 | event->accept(); |
| 2148 | return; |
| 2149 | } |
| 2150 | |
| 2151 | QQuickItem::mouseDoubleClickEvent(event); |
| 2152 | } |