Hey, On Mon, Mar 31, 2014 at 05:17:06PM -0500, Jonathon Jongsma wrote: > Previous commit accidentally broke gtk2 build by using > gtk_widget_get_preferred_size(). We can't simply use gtk_widget_size_request() > for the gtk2 build since this will generally return 50x50 whenever we're not in > the middle of a resize, so we need to add a compatibility function. ACK. Christophe > --- > src/virt-viewer-display-spice.c | 2 +- > src/virt-viewer-display.c | 41 ++++++++++++++++++++++++++++------------- > src/virt-viewer-display.h | 1 + > 3 files changed, 30 insertions(+), 14 deletions(-) > > diff --git a/src/virt-viewer-display-spice.c b/src/virt-viewer-display-spice.c > index 76dfb47..2ce42cf 100644 > --- a/src/virt-viewer-display-spice.c > +++ b/src/virt-viewer-display-spice.c > @@ -204,7 +204,7 @@ virt_viewer_display_spice_size_allocate(VirtViewerDisplaySpice *self, > * resizes the window to the size it already wants to be (based on desktop > * size and zoom level), just return early > */ > - gtk_widget_get_preferred_size(GTK_WIDGET(self), NULL, &preferred); > + virt_viewer_display_get_preferred_size(VIRT_VIEWER_DISPLAY(self), &preferred); > if (preferred.width == allocation->width > && preferred.height == allocation->height) { > return; > diff --git a/src/virt-viewer-display.c b/src/virt-viewer-display.c > index 6c078a5..f298bb0 100644 > --- a/src/virt-viewer-display.c > +++ b/src/virt-viewer-display.c > @@ -377,6 +377,31 @@ virt_viewer_display_grab_focus(GtkWidget *widget) > gtk_widget_grab_focus(gtk_bin_get_child(bin)); > } > > +/* Compatibility function to allow gtk2 to emulate gtk3 behavior. We can't use > + * the size request since it simply returns the minimum size whenever dirty is > + * false */ > +void virt_viewer_display_get_preferred_size(VirtViewerDisplay *self, > + GtkRequisition *requisition) > +{ > +#if GTK_CHECK_VERSION(3, 0, 0) > + gtk_widget_get_preferred_size(GTK_WIDGET(self), NULL, requisition); > +#else > + VirtViewerDisplayPrivate *priv = self->priv; > + int border_width = gtk_container_get_border_width(GTK_CONTAINER(self)); > + > + requisition->width = border_width * 2; > + requisition->height = border_width * 2; > + > + if (priv->zoom) { > + requisition->width += round(priv->desktopWidth * priv->zoom_level / 100.0); > + requisition->height += round(priv->desktopHeight * priv->zoom_level / 100.0); > + } else { > + requisition->width += priv->desktopWidth; > + requisition->height += priv->desktopHeight; > + } > +#endif > +} > + > > #if !GTK_CHECK_VERSION(3, 0, 0) > static gboolean > @@ -396,22 +421,12 @@ virt_viewer_display_size_request(GtkWidget *widget, > { > VirtViewerDisplay *display = VIRT_VIEWER_DISPLAY(widget); > VirtViewerDisplayPrivate *priv = display->priv; > - int border_width = gtk_container_get_border_width(GTK_CONTAINER(widget)); > - > - requisition->width = border_width * 2; > - requisition->height = border_width * 2; > > if (priv->dirty) { > - if (priv->zoom) { > - requisition->width += round(priv->desktopWidth * priv->zoom_level / 100.0); > - requisition->height += round(priv->desktopHeight * priv->zoom_level / 100.0); > - } else { > - requisition->width += priv->desktopWidth; > - requisition->height += priv->desktopHeight; > - } > + virt_viewer_display_get_preferred_size(display, requisition); > } else { > - requisition->width += 50; > - requisition->height += 50; > + requisition->width = 50; > + requisition->height = 50; > } > > DEBUG_LOG("Display size request %dx%d (desktop %dx%d)", > diff --git a/src/virt-viewer-display.h b/src/virt-viewer-display.h > index fe88d98..70ce772 100644 > --- a/src/virt-viewer-display.h > +++ b/src/virt-viewer-display.h > @@ -126,6 +126,7 @@ gboolean virt_viewer_display_get_enabled(VirtViewerDisplay *display); > gboolean virt_viewer_display_get_selectable(VirtViewerDisplay *display); > void virt_viewer_display_queue_resize(VirtViewerDisplay *display); > void virt_viewer_display_get_preferred_monitor_geometry(VirtViewerDisplay *self, GdkRectangle* preferred); > +void virt_viewer_display_get_preferred_size(VirtViewerDisplay *self, GtkRequisition* requisistion); > > G_END_DECLS > > -- > 1.9.0 > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list
Attachment:
pgpF1VvxWgnTB.pgp
Description: PGP signature
_______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list