chore: allow dragging focus overlay

This commit is contained in:
talksik
2026-02-01 13:47:41 -08:00
parent 9e68c554f4
commit ca3478f51e
3 changed files with 114 additions and 34 deletions
+28 -1
View File
@@ -2,10 +2,12 @@
#include "ui_focusoverlay.h" #include "ui_focusoverlay.h"
#include <QScreen> #include <QScreen>
#include <QGuiApplication> #include <QGuiApplication>
#include <QMouseEvent>
FocusOverlay::FocusOverlay(QWidget *parent) FocusOverlay::FocusOverlay(QWidget *parent)
: QWidget(parent), : QWidget(parent),
ui(new Ui::FocusOverlay) ui(new Ui::FocusOverlay),
m_dragging(false)
{ {
ui->setupUi(this); ui->setupUi(this);
@@ -71,3 +73,28 @@ void FocusOverlay::positionAtBottomCenter()
move(x, y); move(x, y);
} }
void FocusOverlay::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
m_dragging = true;
m_dragStartPosition = event->globalPosition().toPoint() - frameGeometry().topLeft();
event->accept();
}
}
void FocusOverlay::mouseMoveEvent(QMouseEvent *event)
{
if (m_dragging && (event->buttons() & Qt::LeftButton)) {
move(event->globalPosition().toPoint() - m_dragStartPosition);
event->accept();
}
}
void FocusOverlay::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
m_dragging = false;
event->accept();
}
}
+9
View File
@@ -26,9 +26,18 @@ private slots:
void onResetButtonClicked(); void onResetButtonClicked();
void onEndButtonClicked(); void onEndButtonClicked();
protected:
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
private: private:
Ui::FocusOverlay *ui; Ui::FocusOverlay *ui;
void positionAtBottomCenter(); void positionAtBottomCenter();
// For dragging
bool m_dragging;
QPoint m_dragStartPosition;
}; };
#endif // FOCUSOVERLAY_H #endif // FOCUSOVERLAY_H
+51 -7
View File
@@ -6,10 +6,28 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>400</width> <width>350</width>
<height>120</height> <height>102</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>350</width>
<height>80</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>350</width>
<height>102</height>
</size>
</property>
<property name="windowTitle"> <property name="windowTitle">
<string>Focus Session</string> <string>Focus Session</string>
</property> </property>
@@ -41,7 +59,7 @@ QPushButton:pressed {
background-color: rgba(60, 60, 60, 255); background-color: rgba(60, 60, 60, 255);
}</string> }</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing"> <property name="spacing">
<number>10</number> <number>10</number>
</property> </property>
@@ -57,12 +75,29 @@ QPushButton:pressed {
<property name="bottomMargin"> <property name="bottomMargin">
<number>15</number> <number>15</number>
</property> </property>
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>2</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item> <item>
<widget class="QLabel" name="onelinerLabel"> <widget class="QLabel" name="onelinerLabel">
<property name="font"> <property name="font">
<font> <font>
<pointsize>14</pointsize> <pointsize>14</pointsize>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
@@ -70,7 +105,7 @@ QPushButton:pressed {
<string>Session Oneliner</string> <string>Session Oneliner</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
@@ -85,17 +120,26 @@ QPushButton:pressed {
<string>Elapsed: 00:00:00</string> <string>Elapsed: 00:00:00</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout>
</widget>
</item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QPushButton" name="resetButton"> <widget class="QPushButton" name="resetButton">
<property name="text"> <property name="text">
<string>Reset</string> <string>Reset</string>
</property> </property>
<property name="default">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>