mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/virt-viewer
synced 2025-12-27 14:54:14 +00:00
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.
This commit is contained in:
parent
125ee741ae
commit
d098eee198
@ -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;
|
||||
|
||||
@ -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)",
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user