* @brief Handles mouse move events for window dragging. */
| 692 | * @brief Handles mouse move events for window dragging. |
| 693 | */ |
| 694 | void Titlebar::mouseMoveEvent(QMouseEvent* event) |
| 695 | { |
| 696 | if (!m_dragging || !window()) { |
| 697 | event->accept(); |
| 698 | return; |
| 699 | } |
| 700 | |
| 701 | auto* win = window(); |
| 702 | m_dragging = false; |
| 703 | |
| 704 | if (isMaximized()) { |
| 705 | const qreal relativeX = event->position().x() / width(); |
| 706 | const QPointF globalPos = event->globalPosition(); |
| 707 | |
| 708 | win->showNormal(); |
| 709 | win->setPosition(qRound(globalPos.x() - win->width() * relativeX), |
| 710 | qRound(globalPos.y() - height() / 2)); |
| 711 | } |
| 712 | |
| 713 | win->startSystemMove(); |
| 714 | event->accept(); |
| 715 | } |
| 716 | |
| 717 | /** |
| 718 | * @brief Toggles the window maximized state on double-click. |