diff options
author | Jonathon Jongsma <jjongsma@redhat.com> | 2014-03-31 17:12:16 -0500 |
---|---|---|
committer | Jonathon Jongsma <jjongsma@redhat.com> | 2014-04-08 10:21:02 -0500 |
commit | d098eee19862316e7aace09209a6871a6d2db30d (patch) | |
tree | e8c3fcf79fbe2980671190b6eceaed3e13673ab6 /src | |
parent | 125ee741ae2525db5b7fd5d556bc87f4340519f7 (diff) | |
download | virt-viewer-d098eee19862316e7aace09209a6871a6d2db30d.tar.gz virt-viewer-d098eee19862316e7aace09209a6871a6d2db30d.tar.xz virt-viewer-d098eee19862316e7aace09209a6871a6d2db30d.zip |
Fix gtk2 build
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/virt-viewer-display-spice.c | 2 | ||||
-rw-r--r-- | src/virt-viewer-display.c | 41 | ||||
-rw-r--r-- | 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 |