diff --git a/src/core/capturerequest.h b/src/core/capturerequest.h index c738a2b1..4ea26a92 100644 --- a/src/core/capturerequest.h +++ b/src/core/capturerequest.h @@ -39,7 +39,7 @@ public: ExportTask tasks() const; void addTask(ExportTask task); - void addSaveTask(const QString& path); + void addSaveTask(const QString& path = QString()); void exportCapture(const QPixmap& p); private: diff --git a/src/tools/accept/accepttool.cpp b/src/tools/accept/accepttool.cpp index 38160c61..0eea93df 100644 --- a/src/tools/accept/accepttool.cpp +++ b/src/tools/accept/accepttool.cpp @@ -8,7 +8,6 @@ #include #if defined(Q_OS_MACOS) #include "src/widgets/capture/capturewidget.h" -#include #include #endif @@ -49,19 +48,8 @@ CaptureTool* AcceptTool::copy(QObject* parent) return new AcceptTool(parent); } -void AcceptTool::pressed(const CaptureContext&) +void AcceptTool::pressed(CaptureContext&) { -#if defined(Q_OS_MACOS) - for (QWidget* widget : qApp->topLevelWidgets()) { - QString className(widget->metaObject()->className()); - if (0 == - className.compare(CaptureWidget::staticMetaObject.className())) { - widget->showNormal(); - widget->hide(); - break; - } - } -#endif emit requestAction(REQ_CAPTURE_DONE_OK); emit requestAction(REQ_CLOSE_GUI); } diff --git a/src/tools/accept/accepttool.h b/src/tools/accept/accepttool.h index a8e66059..5bd2812f 100644 --- a/src/tools/accept/accepttool.h +++ b/src/tools/accept/accepttool.h @@ -23,5 +23,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/arrow/arrowtool.cpp b/src/tools/arrow/arrowtool.cpp index fa8a77fe..707a3c81 100644 --- a/src/tools/arrow/arrowtool.cpp +++ b/src/tools/arrow/arrowtool.cpp @@ -153,7 +153,7 @@ void ArrowTool::process(QPainter& painter, const QPixmap& pixmap) painter.fillPath(m_arrowPath, QBrush(color())); } -void ArrowTool::pressed(const CaptureContext& context) +void ArrowTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/arrow/arrowtool.h b/src/tools/arrow/arrowtool.h index 6a2fd20f..03ea8199 100644 --- a/src/tools/arrow/arrowtool.h +++ b/src/tools/arrow/arrowtool.h @@ -26,7 +26,7 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; private: QPainterPath m_arrowPath; diff --git a/src/tools/capturecontext.h b/src/tools/capturecontext.h index 9799cc23..fe23e3cc 100644 --- a/src/tools/capturecontext.h +++ b/src/tools/capturecontext.h @@ -29,6 +29,7 @@ struct CaptureContext int thickness; // Mode of the capture widget bool fullscreen; + CaptureRequest* request; QPixmap selectedScreenshotArea() const; }; diff --git a/src/tools/capturetool.h b/src/tools/capturetool.h index a384dff6..dba239e5 100644 --- a/src/tools/capturetool.h +++ b/src/tools/capturetool.h @@ -190,7 +190,7 @@ public slots: // Called when the tool is activated. virtual void drawStart(const CaptureContext& context) = 0; // Called right after pressign the button which activates the tool. - virtual void pressed(const CaptureContext& context) = 0; + virtual void pressed(CaptureContext& context) = 0; // Called when the color is changed in the editor. virtual void onColorChanged(const QColor& c) = 0; // Called when the thickness of the tool is updated in the editor. diff --git a/src/tools/circle/circletool.cpp b/src/tools/circle/circletool.cpp index e4ac46bf..c0514fed 100644 --- a/src/tools/circle/circletool.cpp +++ b/src/tools/circle/circletool.cpp @@ -44,7 +44,7 @@ void CircleTool::process(QPainter& painter, const QPixmap& pixmap) painter.drawEllipse(QRect(points().first, points().second)); } -void CircleTool::pressed(const CaptureContext& context) +void CircleTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/circle/circletool.h b/src/tools/circle/circletool.h index da75f500..a69afb30 100644 --- a/src/tools/circle/circletool.h +++ b/src/tools/circle/circletool.h @@ -22,5 +22,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/circlecount/circlecounttool.cpp b/src/tools/circlecount/circlecounttool.cpp index 67e58a07..79b4afd2 100644 --- a/src/tools/circlecount/circlecounttool.cpp +++ b/src/tools/circlecount/circlecounttool.cpp @@ -166,7 +166,7 @@ void CircleCountTool::drawStart(const CaptureContext& context) m_valid = true; } -void CircleCountTool::pressed(const CaptureContext& context) +void CircleCountTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/circlecount/circlecounttool.h b/src/tools/circlecount/circlecounttool.h index 49b2527a..d2bf9d58 100644 --- a/src/tools/circlecount/circlecounttool.h +++ b/src/tools/circlecount/circlecounttool.h @@ -31,7 +31,7 @@ protected: public slots: void drawStart(const CaptureContext& context) override; - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; private: QString m_tempString; diff --git a/src/tools/copy/copytool.cpp b/src/tools/copy/copytool.cpp index d5e877b4..66e11313 100644 --- a/src/tools/copy/copytool.cpp +++ b/src/tools/copy/copytool.cpp @@ -39,9 +39,9 @@ CaptureTool* CopyTool::copy(QObject* parent) return new CopyTool(parent); } -void CopyTool::pressed(const CaptureContext& context) +void CopyTool::pressed(CaptureContext& context) { + context.request->addTask(CaptureRequest::COPY_TASK); emit requestAction(REQ_CAPTURE_DONE_OK); - ScreenshotSaver().saveToClipboard(context.selectedScreenshotArea()); emit requestAction(REQ_CLOSE_GUI); } diff --git a/src/tools/copy/copytool.h b/src/tools/copy/copytool.h index 6c19c013..947e12dc 100644 --- a/src/tools/copy/copytool.h +++ b/src/tools/copy/copytool.h @@ -23,5 +23,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/exit/exittool.cpp b/src/tools/exit/exittool.cpp index 0b71f084..66bde1a2 100644 --- a/src/tools/exit/exittool.cpp +++ b/src/tools/exit/exittool.cpp @@ -38,7 +38,7 @@ CaptureTool* ExitTool::copy(QObject* parent) return new ExitTool(parent); } -void ExitTool::pressed(const CaptureContext& context) +void ExitTool::pressed(CaptureContext& context) { Q_UNUSED(context) emit requestAction(REQ_CLOSE_GUI); diff --git a/src/tools/exit/exittool.h b/src/tools/exit/exittool.h index 976ff77a..e52f0476 100644 --- a/src/tools/exit/exittool.h +++ b/src/tools/exit/exittool.h @@ -24,5 +24,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/imgur/imguruploadertool.cpp b/src/tools/imgur/imguruploadertool.cpp index 97283b62..02478685 100644 --- a/src/tools/imgur/imguruploadertool.cpp +++ b/src/tools/imgur/imguruploadertool.cpp @@ -44,7 +44,7 @@ CaptureTool* ImgurUploaderTool::copy(QObject* parent) return new ImgurUploaderTool(parent); } -void ImgurUploaderTool::pressed(const CaptureContext& context) +void ImgurUploaderTool::pressed(CaptureContext& context) { capture = context.selectedScreenshotArea(); emit requestAction(REQ_CAPTURE_DONE_OK); diff --git a/src/tools/imgur/imguruploadertool.h b/src/tools/imgur/imguruploadertool.h index d4fda8e9..0584a54b 100644 --- a/src/tools/imgur/imguruploadertool.h +++ b/src/tools/imgur/imguruploadertool.h @@ -25,7 +25,7 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; private: QPixmap capture; diff --git a/src/tools/invert/inverttool.cpp b/src/tools/invert/inverttool.cpp index 3f52ef4f..6cd7d8a1 100644 --- a/src/tools/invert/inverttool.cpp +++ b/src/tools/invert/inverttool.cpp @@ -82,7 +82,7 @@ void InvertTool::paintMousePreview(QPainter& painter, Q_UNUSED(painter) } -void InvertTool::pressed(const CaptureContext& context) +void InvertTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/invert/inverttool.h b/src/tools/invert/inverttool.h index 4d5dba1a..8c5980c7 100644 --- a/src/tools/invert/inverttool.h +++ b/src/tools/invert/inverttool.h @@ -26,5 +26,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/launcher/applaunchertool.cpp b/src/tools/launcher/applaunchertool.cpp index dca82550..58bd292b 100644 --- a/src/tools/launcher/applaunchertool.cpp +++ b/src/tools/launcher/applaunchertool.cpp @@ -43,7 +43,7 @@ CaptureTool* AppLauncher::copy(QObject* parent) return new AppLauncher(parent); } -void AppLauncher::pressed(const CaptureContext& context) +void AppLauncher::pressed(CaptureContext& context) { capture = context.selectedScreenshotArea(); emit requestAction(REQ_CAPTURE_DONE_OK); diff --git a/src/tools/launcher/applaunchertool.h b/src/tools/launcher/applaunchertool.h index a1c22b9f..9a03fced 100644 --- a/src/tools/launcher/applaunchertool.h +++ b/src/tools/launcher/applaunchertool.h @@ -25,7 +25,7 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; private: QPixmap capture; diff --git a/src/tools/line/linetool.cpp b/src/tools/line/linetool.cpp index 548250cd..ea115abd 100644 --- a/src/tools/line/linetool.cpp +++ b/src/tools/line/linetool.cpp @@ -46,7 +46,7 @@ void LineTool::process(QPainter& painter, const QPixmap& pixmap) painter.drawLine(points().first, points().second); } -void LineTool::pressed(const CaptureContext& context) +void LineTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/line/linetool.h b/src/tools/line/linetool.h index 3a353b21..d08aed15 100644 --- a/src/tools/line/linetool.h +++ b/src/tools/line/linetool.h @@ -22,5 +22,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/marker/markertool.cpp b/src/tools/marker/markertool.cpp index 5f79dfaf..e569add1 100644 --- a/src/tools/marker/markertool.cpp +++ b/src/tools/marker/markertool.cpp @@ -84,7 +84,7 @@ void MarkerTool::drawStart(const CaptureContext& context) onThicknessChanged(context.thickness + PADDING_VALUE); } -void MarkerTool::pressed(const CaptureContext& context) +void MarkerTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/marker/markertool.h b/src/tools/marker/markertool.h index d4ccb221..5934efbb 100644 --- a/src/tools/marker/markertool.h +++ b/src/tools/marker/markertool.h @@ -26,5 +26,5 @@ protected: public slots: void drawStart(const CaptureContext& context) override; - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/move/movetool.cpp b/src/tools/move/movetool.cpp index 37d39069..b08ee8df 100644 --- a/src/tools/move/movetool.cpp +++ b/src/tools/move/movetool.cpp @@ -38,7 +38,7 @@ CaptureTool* MoveTool::copy(QObject* parent) return new MoveTool(parent); } -void MoveTool::pressed(const CaptureContext& context) +void MoveTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/move/movetool.h b/src/tools/move/movetool.h index 8fde1472..27cf0ae4 100644 --- a/src/tools/move/movetool.h +++ b/src/tools/move/movetool.h @@ -22,5 +22,5 @@ public: CaptureTool* copy(QObject* parent = nullptr) override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/pencil/penciltool.cpp b/src/tools/pencil/penciltool.cpp index bdbcfd40..a20d3ac7 100644 --- a/src/tools/pencil/penciltool.cpp +++ b/src/tools/pencil/penciltool.cpp @@ -58,7 +58,7 @@ void PencilTool::drawStart(const CaptureContext& context) m_pathArea.setBottomRight(context.mousePos); } -void PencilTool::pressed(const CaptureContext& context) +void PencilTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/pencil/penciltool.h b/src/tools/pencil/penciltool.h index 4c2f561b..404714d4 100644 --- a/src/tools/pencil/penciltool.h +++ b/src/tools/pencil/penciltool.h @@ -26,5 +26,5 @@ protected: public slots: void drawStart(const CaptureContext& context) override; - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/pin/pintool.cpp b/src/tools/pin/pintool.cpp index 3e312a2d..91934a9c 100644 --- a/src/tools/pin/pintool.cpp +++ b/src/tools/pin/pintool.cpp @@ -70,7 +70,7 @@ CaptureTool* PinTool::copy(QObject* parent) return new PinTool(parent); } -void PinTool::pressed(const CaptureContext& context) +void PinTool::pressed(CaptureContext& context) { emit requestAction(REQ_CAPTURE_DONE_OK); m_geometry = context.selection; diff --git a/src/tools/pin/pintool.h b/src/tools/pin/pintool.h index 886bb751..e9772dfc 100644 --- a/src/tools/pin/pintool.h +++ b/src/tools/pin/pintool.h @@ -25,7 +25,7 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; private: QRect m_geometry; diff --git a/src/tools/pixelate/pixelatetool.cpp b/src/tools/pixelate/pixelatetool.cpp index d1ddef79..5b7452e8 100644 --- a/src/tools/pixelate/pixelatetool.cpp +++ b/src/tools/pixelate/pixelatetool.cpp @@ -105,7 +105,7 @@ void PixelateTool::paintMousePreview(QPainter& painter, Q_UNUSED(painter) } -void PixelateTool::pressed(const CaptureContext& context) +void PixelateTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/pixelate/pixelatetool.h b/src/tools/pixelate/pixelatetool.h index 81a639c2..f4fd3b6d 100644 --- a/src/tools/pixelate/pixelatetool.h +++ b/src/tools/pixelate/pixelatetool.h @@ -26,5 +26,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/rectangle/rectangletool.cpp b/src/tools/rectangle/rectangletool.cpp index 19e9d680..64f712b2 100644 --- a/src/tools/rectangle/rectangletool.cpp +++ b/src/tools/rectangle/rectangletool.cpp @@ -73,7 +73,7 @@ void RectangleTool::drawStart(const CaptureContext& context) onThicknessChanged(context.thickness); } -void RectangleTool::pressed(const CaptureContext& context) +void RectangleTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/rectangle/rectangletool.h b/src/tools/rectangle/rectangletool.h index 7bba80ef..ba5656b4 100644 --- a/src/tools/rectangle/rectangletool.h +++ b/src/tools/rectangle/rectangletool.h @@ -23,5 +23,5 @@ protected: public slots: void drawStart(const CaptureContext& context) override; - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/redo/redotool.cpp b/src/tools/redo/redotool.cpp index 9efa1708..7ba0a836 100644 --- a/src/tools/redo/redotool.cpp +++ b/src/tools/redo/redotool.cpp @@ -38,7 +38,7 @@ CaptureTool* RedoTool::copy(QObject* parent) return new RedoTool(parent); } -void RedoTool::pressed(const CaptureContext& context) +void RedoTool::pressed(CaptureContext& context) { Q_UNUSED(context) emit requestAction(REQ_REDO_MODIFICATION); diff --git a/src/tools/redo/redotool.h b/src/tools/redo/redotool.h index 8642838b..b0879819 100644 --- a/src/tools/redo/redotool.h +++ b/src/tools/redo/redotool.h @@ -23,5 +23,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/save/savetool.cpp b/src/tools/save/savetool.cpp index 4787bc56..58d333d5 100644 --- a/src/tools/save/savetool.cpp +++ b/src/tools/save/savetool.cpp @@ -45,33 +45,9 @@ CaptureTool* SaveTool::copy(QObject* parent) return new SaveTool(parent); } -void SaveTool::pressed(const CaptureContext& context) +void SaveTool::pressed(CaptureContext& context) { -#if defined(Q_OS_MACOS) - for (QWidget* widget : qApp->topLevelWidgets()) { - QString className(widget->metaObject()->className()); - if (0 == - className.compare(CaptureWidget::staticMetaObject.className())) { - widget->showNormal(); - widget->hide(); - break; - } - } -#endif - if (context.savePath.isEmpty()) { - emit requestAction(REQ_HIDE_GUI); - qApp->processEvents(); - bool ok = ScreenshotSaver().saveToFilesystemGUI( - context.selectedScreenshotArea()); - if (ok) { - emit requestAction(REQ_CAPTURE_DONE_OK); - } - } else { - bool ok = ScreenshotSaver().saveToFilesystem( - context.selectedScreenshotArea(), context.savePath); - if (ok) { - emit requestAction(REQ_CAPTURE_DONE_OK); - } - } + context.request->addSaveTask(); + emit requestAction(REQ_CAPTURE_DONE_OK); emit requestAction(REQ_CLOSE_GUI); } diff --git a/src/tools/save/savetool.h b/src/tools/save/savetool.h index ce7f89b9..609ad07f 100644 --- a/src/tools/save/savetool.h +++ b/src/tools/save/savetool.h @@ -23,5 +23,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/selection/selectiontool.cpp b/src/tools/selection/selectiontool.cpp index 2827d381..f6e96290 100644 --- a/src/tools/selection/selectiontool.cpp +++ b/src/tools/selection/selectiontool.cpp @@ -50,7 +50,7 @@ void SelectionTool::process(QPainter& painter, const QPixmap& pixmap) painter.drawRect(QRect(points().first, points().second)); } -void SelectionTool::pressed(const CaptureContext& context) +void SelectionTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/selection/selectiontool.h b/src/tools/selection/selectiontool.h index 846a259d..aa521767 100644 --- a/src/tools/selection/selectiontool.h +++ b/src/tools/selection/selectiontool.h @@ -24,5 +24,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/sizedecrease/sizedecreasetool.cpp b/src/tools/sizedecrease/sizedecreasetool.cpp index 8e28de92..fa4439b3 100644 --- a/src/tools/sizedecrease/sizedecreasetool.cpp +++ b/src/tools/sizedecrease/sizedecreasetool.cpp @@ -52,7 +52,7 @@ CaptureTool* SizeDecreaseTool::copy(QObject* parent) return new SizeDecreaseTool(parent); } -void SizeDecreaseTool::pressed(const CaptureContext& context) +void SizeDecreaseTool::pressed(CaptureContext& context) { Q_UNUSED(context) emit requestAction(REQ_DECREASE_TOOL_SIZE); diff --git a/src/tools/sizedecrease/sizedecreasetool.h b/src/tools/sizedecrease/sizedecreasetool.h index ce558489..b28c5ba4 100644 --- a/src/tools/sizedecrease/sizedecreasetool.h +++ b/src/tools/sizedecrease/sizedecreasetool.h @@ -37,5 +37,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/sizeincrease/sizeincreasetool.cpp b/src/tools/sizeincrease/sizeincreasetool.cpp index 3c660396..a5c2e141 100644 --- a/src/tools/sizeincrease/sizeincreasetool.cpp +++ b/src/tools/sizeincrease/sizeincreasetool.cpp @@ -52,7 +52,7 @@ CaptureTool* SizeIncreaseTool::copy(QObject* parent) return new SizeIncreaseTool(parent); } -void SizeIncreaseTool::pressed(const CaptureContext& context) +void SizeIncreaseTool::pressed(CaptureContext& context) { Q_UNUSED(context) emit requestAction(REQ_INCREASE_TOOL_SIZE); diff --git a/src/tools/sizeincrease/sizeincreasetool.h b/src/tools/sizeincrease/sizeincreasetool.h index 8c64bc04..32380007 100644 --- a/src/tools/sizeincrease/sizeincreasetool.h +++ b/src/tools/sizeincrease/sizeincreasetool.h @@ -37,5 +37,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/sizeindicator/sizeindicatortool.cpp b/src/tools/sizeindicator/sizeindicatortool.cpp index d6635c69..59ee5079 100644 --- a/src/tools/sizeindicator/sizeindicatortool.cpp +++ b/src/tools/sizeindicator/sizeindicatortool.cpp @@ -38,7 +38,7 @@ CaptureTool* SizeIndicatorTool::copy(QObject* parent) return new SizeIndicatorTool(parent); } -void SizeIndicatorTool::pressed(const CaptureContext& context) +void SizeIndicatorTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/sizeindicator/sizeindicatortool.h b/src/tools/sizeindicator/sizeindicatortool.h index 3811a031..e50ff305 100644 --- a/src/tools/sizeindicator/sizeindicatortool.h +++ b/src/tools/sizeindicator/sizeindicatortool.h @@ -23,5 +23,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/tools/text/texttool.cpp b/src/tools/text/texttool.cpp index 3e6fa7bb..03aa4905 100644 --- a/src/tools/text/texttool.cpp +++ b/src/tools/text/texttool.cpp @@ -252,7 +252,7 @@ void TextTool::drawStart(const CaptureContext& context) emit requestAction(REQ_ADD_CHILD_WIDGET); } -void TextTool::pressed(const CaptureContext& context) +void TextTool::pressed(CaptureContext& context) { Q_UNUSED(context) } diff --git a/src/tools/text/texttool.h b/src/tools/text/texttool.h index 40f3e63a..2444c437 100644 --- a/src/tools/text/texttool.h +++ b/src/tools/text/texttool.h @@ -50,7 +50,7 @@ public slots: void drawEnd(const QPoint& p) override; void drawMove(const QPoint& p) override; void drawStart(const CaptureContext& context) override; - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; void onColorChanged(const QColor& c) override; void onThicknessChanged(int th) override; virtual int thickness() const override { return m_size; }; diff --git a/src/tools/undo/undotool.cpp b/src/tools/undo/undotool.cpp index 910956e5..7cfb2d2e 100644 --- a/src/tools/undo/undotool.cpp +++ b/src/tools/undo/undotool.cpp @@ -38,7 +38,7 @@ CaptureTool* UndoTool::copy(QObject* parent) return new UndoTool(parent); } -void UndoTool::pressed(const CaptureContext& context) +void UndoTool::pressed(CaptureContext& context) { Q_UNUSED(context) emit requestAction(REQ_UNDO_MODIFICATION); diff --git a/src/tools/undo/undotool.h b/src/tools/undo/undotool.h index 1771615f..0425b2b1 100644 --- a/src/tools/undo/undotool.h +++ b/src/tools/undo/undotool.h @@ -23,5 +23,5 @@ protected: CaptureTool::Type type() const override; public slots: - void pressed(const CaptureContext& context) override; + void pressed(CaptureContext& context) override; }; diff --git a/src/widgets/capture/capturewidget.cpp b/src/widgets/capture/capturewidget.cpp index 71a65aab..6e8ede01 100644 --- a/src/widgets/capture/capturewidget.cpp +++ b/src/widgets/capture/capturewidget.cpp @@ -64,7 +64,6 @@ CaptureWidget::CaptureWidget(uint id, , m_toolWidget(nullptr) , m_colorPicker(nullptr) , m_id(id) - , m_request(&*Controller::getInstance()->requests().find(id)) , m_lastMouseWheel(0) , m_updateNotificationWidget(nullptr) , m_activeToolIsMoved(false) @@ -92,7 +91,7 @@ CaptureWidget::CaptureWidget(uint id, m_uiColor = m_config.uiColor(); m_contrastUiColor = m_config.contrastUiColor(); setMouseTracking(true); - initContext(savePath, fullScreen); + initContext(fullScreen); initSelection(); initShortcuts(); // must be called after initSelection #if (defined(Q_OS_WIN) || defined(Q_OS_MACOS)) @@ -234,6 +233,17 @@ CaptureWidget::CaptureWidget(uint id, CaptureWidget::~CaptureWidget() { +#if defined(Q_OS_MACOS) + for (QWidget* widget : qApp->topLevelWidgets()) { + QString className(widget->metaObject()->className()); + if (0 == + className.compare(CaptureWidget::staticMetaObject.className())) { + widget->showNormal(); + widget->hide(); + break; + } + } +#endif if (m_captureDone) { emit captureTaken(m_id, this->pixmap(), m_context.selection); } else { @@ -245,7 +255,7 @@ void CaptureWidget::initButtons() { auto allButtonTypes = CaptureToolButton::getIterableButtonTypes(); auto visibleButtonTypes = m_config.buttons(); - if (m_request->tasks() == CaptureRequest::NO_TASK) { + if (m_context.request->tasks() == CaptureRequest::NO_TASK) { allButtonTypes.removeOne(CaptureTool::TYPE_ACCEPT); visibleButtonTypes.removeOne(CaptureTool::TYPE_ACCEPT); } @@ -792,14 +802,14 @@ void CaptureWidget::moveEvent(QMoveEvent* e) m_context.widgetOffset = mapToGlobal(QPoint(0, 0)); } -void CaptureWidget::initContext(const QString& savePath, bool fullscreen) +void CaptureWidget::initContext(bool fullscreen) { m_context.color = m_config.drawColor(); - m_context.savePath = savePath; m_context.widgetOffset = mapToGlobal(QPoint(0, 0)); m_context.mousePos = mapFromGlobal(QCursor::pos()); m_context.thickness = m_config.drawThickness(); m_context.fullscreen = fullscreen; + m_context.request = &*Controller::getInstance()->requests().find(m_id); } void CaptureWidget::initPanel() diff --git a/src/widgets/capture/capturewidget.h b/src/widgets/capture/capturewidget.h index 3f40e736..7d8190e5 100644 --- a/src/widgets/capture/capturewidget.h +++ b/src/widgets/capture/capturewidget.h @@ -101,7 +101,7 @@ private: void showColorPicker(const QPoint& pos); bool startDrawObjectTool(const QPoint& pos); QPointer activeToolObject(); - void initContext(const QString& savePath, bool fullscreen); + void initContext(bool fullscreen); void initPanel(); void initSelection(); void initShortcuts(); @@ -174,7 +174,6 @@ private: SelectionWidget::SideType m_mouseOverHandle; uint m_id; - CaptureRequest* m_request; CaptureToolObjects m_captureToolObjects; CaptureToolObjects m_captureToolObjectsBackup;