This will resize the CaptureWin to the original frame size. It also works with maximized windows. Signed-off-by: Bård Eirik Winther <bwinther@xxxxxxxxx> --- utils/qv4l2/capture-win.cpp | 12 ++++++++++++ utils/qv4l2/capture-win.h | 3 +++ utils/qv4l2/qv4l2.cpp | 6 ++++-- utils/qv4l2/qv4l2.h | 1 + 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/utils/qv4l2/capture-win.cpp b/utils/qv4l2/capture-win.cpp index 33f7084..3bd6549 100644 --- a/utils/qv4l2/capture-win.cpp +++ b/utils/qv4l2/capture-win.cpp @@ -61,6 +61,18 @@ void CaptureWin::buildWindow(QWidget *videoSurface) vbox->setSpacing(b); } +void CaptureWin::resetSize() +{ + if (isMaximized()) + showNormal(); + + int w = m_curWidth; + int h = m_curHeight; + m_curWidth = -1; + m_curHeight = -1; + resize(w, h); +} + QSize CaptureWin::getMargins() { int l, t, r, b; diff --git a/utils/qv4l2/capture-win.h b/utils/qv4l2/capture-win.h index dd19f2d..eea0335 100644 --- a/utils/qv4l2/capture-win.h +++ b/utils/qv4l2/capture-win.h @@ -78,6 +78,9 @@ public: void enableScaling(bool enable); static QSize scaleFrameSize(QSize window, QSize frame); +public slots: + void resetSize(); + protected: void closeEvent(QCloseEvent *event); void buildWindow(QWidget *videoSurface); diff --git a/utils/qv4l2/qv4l2.cpp b/utils/qv4l2/qv4l2.cpp index 50ba07a..1a476f0 100644 --- a/utils/qv4l2/qv4l2.cpp +++ b/utils/qv4l2/qv4l2.cpp @@ -142,11 +142,14 @@ ApplicationWindow::ApplicationWindow() : m_scalingAct->setCheckable(true); m_scalingAct->setChecked(true); connect(m_scalingAct, SIGNAL(toggled(bool)), this, SLOT(enableScaling(bool))); + m_resetScalingAct = new QAction("Resize to Frame Size", this); + m_resetScalingAct->setStatusTip("Resizes the capture window to match frame size"); QMenu *captureMenu = menuBar()->addMenu("&Capture"); captureMenu->addAction(m_capStartAct); captureMenu->addAction(m_showFramesAct); captureMenu->addAction(m_scalingAct); + captureMenu->addAction(m_resetScalingAct); if (CaptureWinGL::isSupported()) { m_renderMethod = QV4L2_RENDER_GL; @@ -211,8 +214,6 @@ void ApplicationWindow::setDevice(const QString &device, bool rawOpen) newCaptureWin(); - m_capture->setMinimumSize(150, 50); - QWidget *w = new QWidget(m_tabs); m_genTab = new GeneralTab(device, *this, 4, w); @@ -360,6 +361,7 @@ void ApplicationWindow::newCaptureWin() m_capture->enableScaling(m_scalingAct->isChecked()); connect(m_capture, SIGNAL(close()), this, SLOT(closeCaptureWin())); + connect(m_resetScalingAct, SIGNAL(triggered()), m_capture, SLOT(resetSize())); } void ApplicationWindow::capVbiFrame() diff --git a/utils/qv4l2/qv4l2.h b/utils/qv4l2/qv4l2.h index 1402673..179cecb 100644 --- a/utils/qv4l2/qv4l2.h +++ b/utils/qv4l2/qv4l2.h @@ -187,6 +187,7 @@ private: QAction *m_showAllAudioAct; QAction *m_audioBufferAct; QAction *m_scalingAct; + QAction *m_resetScalingAct; QString m_filename; QSignalMapper *m_sigMapper; QTabWidget *m_tabs; -- 1.8.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html