[virt-tools-list] [PATCH virt-viewer 4/4] virt-viewer-window: Allow to resize window to any size
Pavel Grunt
pgrunt at redhat.com
Tue Jul 14 14:13:37 UTC 2015
The function virt_viewer_window_resize restricts window to be bigger
than a client's screen. It avoids extending the window to more client's
screens, it causes changes of the zoom level if the guest does not fit
into a screen.
Lets remove virt_viewer_window_resize (its behaviour was introduced
by the commit 6acb3856b6d8007752388f22f97aa8aaffdb7a5e). It will let
the window managers to handle resizing of the window.
Resolves:
https://bugzilla.redhat.com/show_bug.cgi?id=1205804
---
src/virt-viewer-window.c | 67 +++---------------------------------------------
1 file changed, 3 insertions(+), 64 deletions(-)
diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
index a851022..3af51a4 100644
--- a/src/virt-viewer-window.c
+++ b/src/virt-viewer-window.c
@@ -66,7 +66,7 @@ void virt_viewer_window_menu_preferences_cb(GtkWidget *menu, VirtViewerWindow *s
/* Internal methods */
static void virt_viewer_window_enable_modifiers(VirtViewerWindow *self);
static void virt_viewer_window_disable_modifiers(VirtViewerWindow *self);
-static void virt_viewer_window_resize(VirtViewerWindow *self);
+static void virt_viewer_window_queue_resize(VirtViewerWindow *self);
static void virt_viewer_window_toolbar_setup(VirtViewerWindow *self);
static GtkMenu* virt_viewer_window_get_keycombo_menu(VirtViewerWindow *self);
static void virt_viewer_window_get_minimal_dimensions(VirtViewerWindow *self, guint *width, guint *height);
@@ -365,7 +365,7 @@ virt_viewer_window_desktop_resize(VirtViewerDisplay *display G_GNUC_UNUSED,
self->priv->desktop_resize_pending = TRUE;
return;
}
- virt_viewer_window_resize(self);
+ virt_viewer_window_queue_resize(self);
}
static gint
@@ -419,67 +419,6 @@ virt_viewer_window_queue_resize(VirtViewerWindow *self)
#endif
}
-/*
- * This code attempts to resize the top level window to be large enough
- * to contain the entire display desktop at 1:1 ratio. If the local desktop
- * isn't large enough that it goes as large as possible and lets the display
- * scale down to fit, maintaining aspect ratio
- */
-static void
-virt_viewer_window_resize(VirtViewerWindow *self)
-{
- GdkRectangle fullscreen;
- GdkScreen *screen;
- double desktopAspect;
- double screenAspect;
- guint desktopWidth, display_width;
- guint desktopHeight, display_height;
- VirtViewerWindowPrivate *priv = self->priv;
-
- if (priv->fullscreen)
- return;
-
- g_debug("Preparing main window resize");
- if (!priv->display) {
- g_debug("Skipping inactive resize");
- return;
- }
-
- virt_viewer_display_get_desktop_size(VIRT_VIEWER_DISPLAY(priv->display),
- &desktopWidth, &desktopHeight);
-
- screen = gtk_widget_get_screen(priv->window);
- gdk_screen_get_monitor_geometry(screen,
- gdk_screen_get_monitor_at_window
- (screen, gtk_widget_get_window(priv->window)),
- &fullscreen);
-
- g_return_if_fail(desktopWidth > 0);
- g_return_if_fail(desktopHeight > 0);
-
- desktopAspect = (double)desktopWidth / (double)desktopHeight;
- screenAspect = (double)fullscreen.width / (double)fullscreen.height;
-
- display_width = desktopWidth * priv->zoomlevel / (double) NORMAL_ZOOM_LEVEL;
- display_height = desktopHeight * priv->zoomlevel / (double) NORMAL_ZOOM_LEVEL;
-
- if ((display_width > fullscreen.width) ||
- (display_height > fullscreen.height)) {
- gint new_zoom;
- /* Doesn't fit native res, so go as large as possible
- maintaining aspect ratio */
- if (screenAspect > desktopAspect) {
- new_zoom = NORMAL_ZOOM_LEVEL * fullscreen.height / desktopHeight;
- } else {
- new_zoom = NORMAL_ZOOM_LEVEL * fullscreen.width / desktopWidth;
- }
- g_debug("scaling down, desktop does not fit into screen");
- virt_viewer_window_set_zoom_level(self, new_zoom);
- } else {
- virt_viewer_window_queue_resize(self);
- }
-}
-
static void
virt_viewer_window_move_to_monitor(VirtViewerWindow *self)
{
@@ -1420,7 +1359,7 @@ virt_viewer_window_show(VirtViewerWindow *self)
gtk_widget_show(self->priv->window);
if (self->priv->desktop_resize_pending) {
- virt_viewer_window_resize(self);
+ virt_viewer_window_queue_resize(self);
self->priv->desktop_resize_pending = FALSE;
}
--
2.4.5
More information about the virt-tools-list
mailing list