summaryrefslogtreecommitdiffstats
path: root/src/virt-viewer-display.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2013-07-18 15:06:00 +0200
committerMarc-André Lureau <marcandre.lureau@gmail.com>2013-07-30 21:09:59 +0200
commitc34ec01b3d3912e5348e8a4514638ddcfe17cf4e (patch)
tree95ab53e214281edd53a637aeca0c394ef574dc59 /src/virt-viewer-display.c
parente2dce44aa26a1adcf7b88f8fca747cfb2db498fb (diff)
downloadvirt-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.c34
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
}