[libcamera-devel] [PATCH] qcam: Decrease minimum width of selector dialog

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Mar 6 11:07:47 CET 2023


On Mon, Jan 30, 2023 at 06:58:29PM +0100, Luca Weiss via libcamera-devel wrote:
> On Montag, 30. Jänner 2023 15:11:16 CET Kieran Bingham wrote:
> > Quoting Luca Weiss via libcamera-devel (2023-01-28 16:24:03)
> > 
> > > On phone screens the default width is too wide, so the OK button cannot
> > > be clicked.
> > > 
> > > Fix this by decreasing the minimum size of the dialog so it fits nicely.
> > > 
> > > Signed-off-by: Luca Weiss <luca at z3ntu.xyz>
> > > ---
> > > 
> > >  src/apps/qcam/cam_select_dialog.cpp | 3 +++
> > >  1 file changed, 3 insertions(+)
> > > 
> > > diff --git a/src/apps/qcam/cam_select_dialog.cpp
> > > b/src/apps/qcam/cam_select_dialog.cpp index 3c8b12a9..2a600383 100644
> > > --- a/src/apps/qcam/cam_select_dialog.cpp
> > > +++ b/src/apps/qcam/cam_select_dialog.cpp
> > > @@ -25,6 +25,9 @@
> > > CameraSelectorDialog::CameraSelectorDialog(libcamera::CameraManager
> > > *cameraManag> 
> > >         /* Use a QFormLayout for the dialog. */
> > >         QFormLayout *layout = new QFormLayout(this);
> > > 
> > > +       /* Decrease minimum width of dialog to fit on narrow screens */
> > > +       setMinimumSize(250, 100);
> > > +
> > 
> > This looks reasonable, and when applying here - it doesn't break my
> > view, but my screen is large.
> > 
> > Is there any way to reproduce this issue otherwise? I suspect not easily
> > without getting a small screen. But to me this is ok.
> 
> Not really I think because the window manager prohibits resizing the window 
> below the minimum size. Perhaps setting some insane scaling (if the window 
> manager allows this) so everything's just super big.
> 
> From what I could tell the minimum size gets set as the size the combobox 
> takes up which can be quite a big with a long identification string as happens 
> on ARM which includes the path to the dt node.

By default the minimum size will be set by the dialog box's QLayout,
which indeed should size it based on the largest element. We could
reduce the minimum size of the combo box, but I don't think that's
better than changing the dialog's minimum size.

Do we need to reduce both the minimum width and height, or could we
avoid touching the height ? Also, would it make sense to only lower the
minimum size on small screens ? You can get the desktop's geometry from
the QDesktopWidget class (accessible from QApplication::desktop()), see
[1]. We could then compare it with the layout's minimum size, and only
set a manual minimum size when the desktop's geometry is small.

[1] https://doc.qt.io/qt-5/qdesktopwidget.html#availableGeometry

> But if you want I can also send you screenshots from the phone where I tested 
> this.

A screenshot that demonstrates the problem would be nice.

> > Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> > 
> > >         /* Setup the camera id combo-box. */
> > >         cameraIdComboBox_ = new QComboBox;
> > >         for (const auto &cam : cm_->cameras())

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list