[virt-tools-list] [PATCH virt-viewer] Fix gtk2 build
Christophe Fergeau
cfergeau at redhat.com
Tue Apr 8 14:52:01 UTC 2014
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 at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20140408/ad29567b/attachment.sig>
More information about the virt-tools-list
mailing list