diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2013-07-18 15:06:00 +0200 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@gmail.com> | 2013-07-30 21:09:59 +0200 |
commit | c34ec01b3d3912e5348e8a4514638ddcfe17cf4e (patch) | |
tree | 95ab53e214281edd53a637aeca0c394ef574dc59 /src/virt-viewer-display.c | |
parent | e2dce44aa26a1adcf7b88f8fca747cfb2db498fb (diff) | |
download | virt-viewer-c34ec01b3d3912e5348e8a4514638ddcfe17cf4e.tar.gz virt-viewer-c34ec01b3d3912e5348e8a4514638ddcfe17cf4e.tar.xz virt-viewer-c34ec01b3d3912e5348e8a4514638ddcfe17cf4e.zip |
win32: fix first window un-shrinkable at start
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).
Diffstat (limited to 'src/virt-viewer-display.c')
-rw-r--r-- | src/virt-viewer-display.c | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/src/virt-viewer-display.c b/src/virt-viewer-display.c index 6c5b56a..8810254 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 } |