summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJonathon Jongsma <jjongsma@redhat.com>2014-03-31 17:12:16 -0500
committerJonathon Jongsma <jjongsma@redhat.com>2014-04-08 10:21:02 -0500
commitd098eee19862316e7aace09209a6871a6d2db30d (patch)
treee8c3fcf79fbe2980671190b6eceaed3e13673ab6 /src
parent125ee741ae2525db5b7fd5d556bc87f4340519f7 (diff)
downloadvirt-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.c2
-rw-r--r--src/virt-viewer-display.c41
-rw-r--r--src/virt-viewer-display.h1
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