[evolution] Still tweaking pane position restoration.
- From: Matthew Barnes <mbarnes src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [evolution] Still tweaking pane position restoration.
- Date: Fri, 20 Nov 2009 04:53:00 +0000 (UTC)
commit a085eae9954d2621215b8a78367d29af941bdca7
Author: Matthew Barnes <mbarnes redhat com>
Date: Thu Nov 19 23:49:48 2009 -0500
Still tweaking pane position restoration.
My window maximization hack in EPaned works great if the top-level
window has not been shown yet. But if it has, we've already missed
the window state event we're listening for and so the pane position
will not be restored properly.
This commit fixes that.
widgets/misc/e-paned.c | 18 ++++++++++++++----
1 files changed, 14 insertions(+), 4 deletions(-)
---
diff --git a/widgets/misc/e-paned.c b/widgets/misc/e-paned.c
index 08eef6f..b363d0a 100644
--- a/widgets/misc/e-paned.c
+++ b/widgets/misc/e-paned.c
@@ -156,6 +156,8 @@ paned_realize (GtkWidget *widget)
{
EPanedPrivate *priv;
GtkWidget *toplevel;
+ GdkWindowState state;
+ GdkWindow *window;
priv = E_PANED_GET_PRIVATE (widget);
@@ -167,10 +169,18 @@ paned_realize (GtkWidget *widget)
* to make that happen. */
toplevel = gtk_widget_get_toplevel (widget);
-
- priv->wse_handler_id = g_signal_connect_swapped (
- toplevel, "window-state-event",
- G_CALLBACK (paned_window_state_event_cb), widget);
+ window = gtk_widget_get_window (toplevel);
+ state = gdk_window_get_state (window);
+
+ /* If the window is withdrawn, wait for it to be shown before
+ * setting the pane position. If the window is already shown,
+ * it's safe to set the pane position immediately. */
+ if (state & GDK_WINDOW_STATE_WITHDRAWN)
+ priv->wse_handler_id = g_signal_connect_swapped (
+ toplevel, "window-state-event",
+ G_CALLBACK (paned_window_state_event_cb), widget);
+ else
+ priv->toplevel_ready = TRUE;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]