mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
Merge remote-tracking branch 'antis81/ngf/fix/screen-grabber'
This commit is contained in:
commit
9cafb31eca
|
@ -34,8 +34,8 @@
|
||||||
#include "toolboxgraphicsitem.h"
|
#include "toolboxgraphicsitem.h"
|
||||||
#include "src/widget/widget.h"
|
#include "src/widget/widget.h"
|
||||||
|
|
||||||
ScreenshotGrabber::ScreenshotGrabber(QWidget* parent)
|
ScreenshotGrabber::ScreenshotGrabber(QObject* parent)
|
||||||
: QWidget(parent)
|
: QObject(parent)
|
||||||
{
|
{
|
||||||
scene = new QGraphicsScene;
|
scene = new QGraphicsScene;
|
||||||
window = new QGraphicsView (scene); // Top-level widget
|
window = new QGraphicsView (scene); // Top-level widget
|
||||||
|
@ -66,7 +66,7 @@ bool ScreenshotGrabber::eventFilter(QObject* object, QEvent* event)
|
||||||
if (event->type() == QEvent::KeyPress)
|
if (event->type() == QEvent::KeyPress)
|
||||||
return handleKeyPress(static_cast<QKeyEvent*>(event));
|
return handleKeyPress(static_cast<QKeyEvent*>(event));
|
||||||
|
|
||||||
return QWidget::eventFilter(object, event);
|
return QObject::eventFilter(object, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenshotGrabber::showGrabber()
|
void ScreenshotGrabber::showGrabber()
|
||||||
|
@ -76,7 +76,14 @@ void ScreenshotGrabber::showGrabber()
|
||||||
this->window->show();
|
this->window->show();
|
||||||
this->window->setFocus();
|
this->window->setFocus();
|
||||||
this->window->grabKeyboard();
|
this->window->grabKeyboard();
|
||||||
adjustWindowSize();
|
|
||||||
|
QRect fullGrabbedRect = screenGrab.rect();
|
||||||
|
QRect rec = QApplication::primaryScreen()->virtualGeometry();
|
||||||
|
|
||||||
|
this->window->setGeometry(rec);
|
||||||
|
this->scene->setSceneRect(fullGrabbedRect);
|
||||||
|
this->overlay->setRect(fullGrabbedRect);
|
||||||
|
|
||||||
adjustTooltipPosition();
|
adjustTooltipPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,28 +198,15 @@ void ScreenshotGrabber::reject()
|
||||||
Widget::getInstance()->setVisible(true); // show window if it was hidden
|
Widget::getInstance()->setVisible(true); // show window if it was hidden
|
||||||
}
|
}
|
||||||
|
|
||||||
QRect ScreenshotGrabber::getSystemScreenRect()
|
|
||||||
{
|
|
||||||
return QApplication::primaryScreen()->virtualGeometry();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenshotGrabber::adjustWindowSize()
|
|
||||||
{
|
|
||||||
QRect systemScreenRect = getSystemScreenRect();
|
|
||||||
qDebug() << "adjusting grabber size to" << systemScreenRect;
|
|
||||||
|
|
||||||
this->window->setGeometry(systemScreenRect);
|
|
||||||
this->window->scene()->setSceneRect(systemScreenRect);
|
|
||||||
this->overlay->setRect(systemScreenRect);
|
|
||||||
}
|
|
||||||
|
|
||||||
QPixmap ScreenshotGrabber::grabScreen()
|
QPixmap ScreenshotGrabber::grabScreen()
|
||||||
{
|
{
|
||||||
QScreen* screen = QApplication::primaryScreen();
|
QScreen* screen = QGuiApplication::primaryScreen();
|
||||||
if (screen)
|
QRect rec = screen->virtualGeometry();
|
||||||
return screen->grabWindow(0);
|
return screen->grabWindow(QApplication::desktop()->winId(),
|
||||||
|
rec.x(),
|
||||||
return QPixmap();
|
rec.y(),
|
||||||
|
rec.width(),
|
||||||
|
rec.height());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenshotGrabber::beginRectChooser(QGraphicsSceneMouseEvent* event)
|
void ScreenshotGrabber::beginRectChooser(QGraphicsSceneMouseEvent* event)
|
||||||
|
|
|
@ -35,12 +35,12 @@ class QGraphicsTextItem;
|
||||||
class QGraphicsScene;
|
class QGraphicsScene;
|
||||||
class QGraphicsView;
|
class QGraphicsView;
|
||||||
|
|
||||||
class ScreenshotGrabber : public QWidget
|
class ScreenshotGrabber : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ScreenshotGrabber(QWidget* parent);
|
ScreenshotGrabber(QObject* parent);
|
||||||
~ScreenshotGrabber() override;
|
~ScreenshotGrabber() override;
|
||||||
|
|
||||||
bool eventFilter(QObject* object, QEvent* event) override;
|
bool eventFilter(QObject* object, QEvent* event) override;
|
||||||
|
@ -71,8 +71,6 @@ private:
|
||||||
bool handleKeyPress(QKeyEvent* event);
|
bool handleKeyPress(QKeyEvent* event);
|
||||||
void reject();
|
void reject();
|
||||||
|
|
||||||
QRect getSystemScreenRect();
|
|
||||||
void adjustWindowSize();
|
|
||||||
QPixmap grabScreen();
|
QPixmap grabScreen();
|
||||||
|
|
||||||
void beginRectChooser(QGraphicsSceneMouseEvent* event);
|
void beginRectChooser(QGraphicsSceneMouseEvent* event);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user