On Wed, 2016-01-13 at 00:01 +0100, Fabiano Fidêncio wrote: > On Tue, Jan 12, 2016 at 6:08 PM, Jonathon Jongsma <jjongsma@xxxxxxxxxx> wrote: > > From: Fabiano Fidêncio <fidencio@xxxxxxxxxx> > > > > Nowadays the value for MIN_DISPLAY_{WIDTH,HEIGHT} is 50. This arbitrary > > value doesn't bring any benefit, doesn't provide a useful size for a > > desktop to be usable and can actually trigger some undefined behavior > > when reaching resolutions that are lower than the ones provided by the > > video drivers (as in rhbz#1296878). > > > > In order to avoid these issues and provide a minimum resolution that can > > still be useful for our users, let's use the same values for minimum > > width and height used by the linux QXL drivers (320x200). > > > > This also requires us to adjust the minimum requested widget size when > > zoom is enabled so that we don't accidentally request a size smaller > > than the driver can support. > > > > Related: rhbz#1296878 > > --- > > > > Changes since the last patch: > > - change the initial values for priv->desktop{Width,Height} in > > virt_viewer_display_init() > > - take zoom into account when requesting minimum widget sizes > > > > src/virt-viewer-display.c | 33 ++++++++++++++++++--------------- > > src/virt-viewer-display.h | 4 ++-- > > 2 files changed, 20 insertions(+), 17 deletions(-) > > > > diff --git a/src/virt-viewer-display.c b/src/virt-viewer-display.c > > index 036b713..a16181f 100644 > > --- a/src/virt-viewer-display.c > > +++ b/src/virt-viewer-display.c > > @@ -116,7 +116,7 @@ virt_viewer_display_class_init(VirtViewerDisplayClass > > *class) > > "Desktop width", > > MIN_DISPLAY_WIDTH, > > G_MAXINT32, > > - 100, > > + MIN_DISPLAY_WIDTH, > > G_PARAM_READWRITE)); > > > > g_object_class_install_property(object_class, > > @@ -126,7 +126,7 @@ virt_viewer_display_class_init(VirtViewerDisplayClass > > *class) > > "Desktop height", > > MIN_DISPLAY_HEIGHT, > > G_MAXINT32, > > - 100, > > + MIN_DISPLAY_HEIGHT, > > G_PARAM_READWRITE)); > > > > g_object_class_install_property(object_class, > > @@ -274,8 +274,8 @@ virt_viewer_display_init(VirtViewerDisplay *display) > > > > display->priv = VIRT_VIEWER_DISPLAY_GET_PRIVATE(display); > > > > - display->priv->desktopWidth = 100; > > - display->priv->desktopHeight = 100; > > + display->priv->desktopWidth = MIN_DISPLAY_WIDTH; > > + display->priv->desktopHeight = MIN_DISPLAY_HEIGHT; > > display->priv->zoom_level = NORMAL_ZOOM_LEVEL; > > display->priv->zoom = TRUE; > > #if !GTK_CHECK_VERSION(3, 0, 0) > > @@ -425,8 +425,8 @@ virt_viewer_display_size_request(GtkWidget *widget, > > if (priv->dirty || !priv->size_request_once) { > > virt_viewer_display_get_preferred_size(display, requisition); > > } else { > > - requisition->width = MIN_DISPLAY_WIDTH; > > - requisition->height = MIN_DISPLAY_HEIGHT; > > + requisition->width = MIN_DISPLAY_WIDTH * priv->zoom_level / > > (double) NORMAL_ZOOM_LEVEL; > > + requisition->height = MIN_DISPLAY_HEIGHT * priv->zoom_level / > > (double) NORMAL_ZOOM_LEVEL; > > } > > > > priv->size_request_once = TRUE; > > @@ -460,14 +460,16 @@ static void > > virt_viewer_display_get_preferred_width(GtkWidget *widget, > > VirtViewerDisplayPrivate *priv = display->priv; > > int border_width = > > gtk_container_get_border_width(GTK_CONTAINER(widget)); > > > > - *minwidth = MIN_DISPLAY_WIDTH + 2 * border_width; > > > > if (priv->zoom) { > > - *defwidth = round(priv->desktopWidth * priv->zoom_level / (double) > > NORMAL_ZOOM_LEVEL) + > > - 2 * border_width; > > + *defwidth = round(priv->desktopWidth * priv->zoom_level / (double) > > NORMAL_ZOOM_LEVEL); > > + *minwidth = round(MIN_DISPLAY_WIDTH * priv->zoom_level / (double) > > NORMAL_ZOOM_LEVEL); > > } else { > > - *defwidth = priv->desktopWidth + 2 * border_width; > > + *defwidth = priv->desktopWidth; > > + *minwidth = MIN_DISPLAY_WIDTH; > > } > > + *defwidth += 2 * border_width; > > + *minwidth += 2 * border_width; > > } > > > > > > @@ -479,14 +481,15 @@ static void > > virt_viewer_display_get_preferred_height(GtkWidget *widget, > > VirtViewerDisplayPrivate *priv = display->priv; > > int border_height = > > gtk_container_get_border_width(GTK_CONTAINER(widget)); > > > > - *minheight = MIN_DISPLAY_HEIGHT + 2 * border_height; > > - > > if (priv->zoom) { > > - *defheight = round(priv->desktopHeight * priv->zoom_level / > > (double) NORMAL_ZOOM_LEVEL) + > > - 2 * border_height; > > + *defheight = round(priv->desktopHeight * priv->zoom_level / > > (double) NORMAL_ZOOM_LEVEL); > > + *minheight = round(MIN_DISPLAY_HEIGHT * priv->zoom_level / (double) > > NORMAL_ZOOM_LEVEL); > > } else { > > - *defheight = priv->desktopHeight + 2 * border_height; > > + *defheight = priv->desktopHeight; > > + *minheight = MIN_DISPLAY_HEIGHT; > > } > > + *defheight += 2 * border_height; > > + *minheight += 2 * border_height; > > } > > #endif > > > > diff --git a/src/virt-viewer-display.h b/src/virt-viewer-display.h > > index a899bb4..a279697 100644 > > --- a/src/virt-viewer-display.h > > +++ b/src/virt-viewer-display.h > > @@ -29,8 +29,8 @@ > > > > G_BEGIN_DECLS > > > > -#define MIN_DISPLAY_WIDTH 50 > > -#define MIN_DISPLAY_HEIGHT 50 > > +#define MIN_DISPLAY_WIDTH 320 > > +#define MIN_DISPLAY_HEIGHT 200 > > > > #define VIRT_VIEWER_TYPE_DISPLAY virt_viewer_display_get_type() > > > > -- > > 2.4.3 > > > > _______________________________________________ > > virt-tools-list mailing list > > virt-tools-list@xxxxxxxxxx > > https://www.redhat.com/mailman/listinfo/virt-tools-list > > Jonathon, I do believe the biggest part of this patch is yours > (squashed into my v1, I know). So, I'd be more than happy to see you > as the author.. > > Acked-by: Fabiano Fidêncio <fidencio@xxxxxxxxxx> OK, it doesn't matter much to me, but I changed the author to me and added a signed-off-by for you. Pushed thanks, Jonathon _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list