diff --git a/extensions/extrawindow.cpp b/extensions/extrawindow.cpp index de696bd..ae80b93 100644 --- a/extensions/extrawindow.cpp +++ b/extensions/extrawindow.cpp @@ -25,11 +25,11 @@ public: display->setTextInteractionFlags(Qt::TextSelectableByMouse); display->setAlignment(Qt::AlignTop); display->setWordWrap(true); - display->setMaximumHeight(600); + display->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); setWindowFlags(Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground); setSizeGripEnabled(true); - resize(400, 1); + resize(400, 300); show(); auto setBackgroundColor = [=](QColor color) @@ -60,7 +60,14 @@ public: SetWindowPos((HWND)winId(), topmost ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); settings->setValue(TOPMOST, topmost); }; + auto setLock = [=](bool lock) + { + locked = lock; + setSizeGripEnabled(!lock); + settings->setValue(SIZE_LOCK, lock); + }; setGeometry(settings->value(WINDOW, geometry()).toRect()); + setLock(settings->value(SIZE_LOCK, false).toBool()); setTopmost(settings->value(TOPMOST, false).toBool()); setFontSize(settings->value(FONT_SIZE, 16).toInt()); setBackgroundColor(settings->value(BG_COLOR, palette().window().color()).value()); @@ -70,6 +77,9 @@ public: auto topmost = menu->addAction(TOPMOST, setTopmost); topmost->setCheckable(true); topmost->setChecked(settings->value(TOPMOST, false).toBool()); + auto lock = menu->addAction(SIZE_LOCK, setLock); + lock->setCheckable(true); + lock->setChecked(settings->value(SIZE_LOCK, false).toBool()); menu->addAction(BG_COLOR, [=] { setBackgroundColor(QColorDialog::getColor(bgColor, this, BG_COLOR, QColorDialog::ShowAlphaChannel)); }); menu->addAction(TEXT_COLOR, [=] { setTextColor(QColorDialog::getColor(display->palette().windowText().color(), this, TEXT_COLOR, QColorDialog::ShowAlphaChannel)); }); menu->addAction(FONT_SIZE, [=] { setFontSize(QInputDialog::getInt(this, FONT_SIZE, "", display->font().pointSize(), 0, INT_MAX, 1, nullptr, Qt::WindowCloseButtonHint)); }); @@ -87,24 +97,19 @@ private: QPainter(this).fillRect(rect(), bgColor); } - void resizeEvent(QResizeEvent* event) override - { - display->setMaximumWidth(event->size().width()); - QDialog::resizeEvent(event); - } - - void mousePressEvent(QMouseEvent* event) + void mousePressEvent(QMouseEvent* event) override { oldPos = event->globalPos(); } - void mouseMoveEvent(QMouseEvent* event) + void mouseMoveEvent(QMouseEvent* event) override { const QPoint delta = event->globalPos() - oldPos; - move(x() + delta.x(), y() + delta.y()); + if (!locked) move(x() + delta.x(), y() + delta.y()); oldPos = event->globalPos(); } + bool locked; QColor bgColor; QPoint oldPos; }*window = nullptr; diff --git a/include/text.h b/include/text.h index 4c284dc..aae5a1c 100644 --- a/include/text.h +++ b/include/text.h @@ -52,10 +52,11 @@ extern const char* GOOGLE_PROMPT; extern const wchar_t* TOO_MANY_TRANS_REQUESTS; extern const wchar_t* TRANSLATION_ERROR; extern const char* EXTRA_WINDOW_INFO; +extern const char* TOPMOST; +extern const char* SIZE_LOCK; extern const char* BG_COLOR; extern const char* TEXT_COLOR; extern const char* FONT_SIZE; -extern const char* TOPMOST; extern const char* LUA_INTRO; extern const char* LOAD_LUA_SCRIPT; extern const wchar_t* LUA_ERROR; diff --git a/text.cpp b/text.cpp index 08952a4..8e989c1 100644 --- a/text.cpp +++ b/text.cpp @@ -81,10 +81,11 @@ const wchar_t* TOO_MANY_TRANS_REQUESTS = L"Too many translation requests: refuse const wchar_t* TRANSLATION_ERROR = L"Error while translating"; const char* EXTRA_WINDOW_INFO = u8R"(Right click to change settings Click and drag on window edges to move, or the bottom right corner to resize)"; +const char* TOPMOST = u8"Always on Top"; +const char* SIZE_LOCK = u8"Size Locked"; const char* BG_COLOR = u8"Background Color"; const char* TEXT_COLOR = u8"Text Color"; const char* FONT_SIZE = u8"Font Size"; -const char* TOPMOST = u8"Always on Top"; const char* LUA_INTRO = u8R"(--[[ ProcessSentence is called each time Textractor receives a sentence of text.