[virt-tools-list] [PATCH virt-viewer 1/2] win32: fix first window un-shrinkable at start
Marc-André Lureau
marcandre.lureau at gmail.com
Tue Jul 30 18:26:59 UTC 2013
ping
On Thu, Jul 18, 2013 at 3:15 PM, Marc-André Lureau
<marcandre.lureau at gmail.com> wrote:
> The fix 0dca975d64fcf0782ec7b3e3bd965f1bcf47c528 make the first window
> unshrinkable right after start. Wait until the window is mapped and
> remove the dirty-resizable state after (win32/gtk2).
> ---
> src/virt-viewer-display.c | 34 ++++++++++++++++++++++++++--------
> 1 file changed, 26 insertions(+), 8 deletions(-)
>
> diff --git a/src/virt-viewer-display.c b/src/virt-viewer-display.c
> index 253d96a..6af0004 100644
> --- a/src/virt-viewer-display.c
> +++ b/src/virt-viewer-display.c
> @@ -54,6 +54,7 @@ struct _VirtViewerDisplayPrivate
> #if !GTK_CHECK_VERSION(3, 0, 0)
> static void virt_viewer_display_size_request(GtkWidget *widget,
> GtkRequisition *requisition);
> +static void virt_viewer_display_map(GtkWidget *widget);
> #else
> static void virt_viewer_display_get_preferred_width(GtkWidget *widget,
> int *minwidth,
> @@ -105,6 +106,7 @@ virt_viewer_display_class_init(VirtViewerDisplayClass *class)
> widget_class->get_preferred_height = virt_viewer_display_get_preferred_height;
> #else
> widget_class->size_request = virt_viewer_display_size_request;
> + widget_class->map = virt_viewer_display_map;
> #endif
> widget_class->size_allocate = virt_viewer_display_size_allocate;
> widget_class->grab_focus = virt_viewer_display_grab_focus;
> @@ -409,6 +411,29 @@ virt_viewer_display_size_request(GtkWidget *widget,
> priv->desktopWidth, priv->desktopHeight);
> }
>
> +static void
> +virt_viewer_display_make_resizable(VirtViewerDisplay *self)
> +{
> + VirtViewerDisplayPrivate *priv = self->priv;
> +
> + /* This unsets the size request, so that the user can
> + * manually resize the window smaller again
> + */
> + if (priv->dirty) {
> + g_idle_add(virt_viewer_display_idle, GTK_WIDGET(self));
> + if (gtk_widget_get_mapped(GTK_WIDGET(self)))
> + priv->dirty = FALSE;
> + }
> +}
> +
> +static void
> +virt_viewer_display_map(GtkWidget *widget)
> +{
> + GTK_WIDGET_CLASS(virt_viewer_display_parent_class)->map(widget);
> +
> + virt_viewer_display_make_resizable(VIRT_VIEWER_DISPLAY(widget));
> +}
> +
> #else
>
> static void virt_viewer_display_get_preferred_width(GtkWidget *widget,
> @@ -501,14 +526,7 @@ virt_viewer_display_size_allocate(GtkWidget *widget,
>
> #if !GTK_CHECK_VERSION(3, 0, 0)
> end:
> - /* This unsets the size request, so that the user can
> - * manually resize the window smaller again
> - */
> - if (priv->dirty) {
> - g_idle_add(virt_viewer_display_idle, widget);
> - if (gtk_widget_get_mapped(widget))
> - priv->dirty = FALSE;
> - }
> + virt_viewer_display_make_resizable(VIRT_VIEWER_DISPLAY(widget));
> #endif
> }
>
> --
> 1.8.3.rc1.49.g8d97506
>
--
Marc-André Lureau
More information about the virt-tools-list
mailing list