summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2006-11-24 13:45:54 +0000
committerBastien Nocera <hadess@src.gnome.org>2006-11-24 13:45:54 +0000
commit193435bae5d1c17ec372ccf97ed37b75847ed396 (patch)
treebfb81c71b4a002b2420d0737c756d632abf07c2d
parent9e50d438197ad250f1851282d1cc3c7b8481483a (diff)
downloadtotem-193435bae5d1c17ec372ccf97ed37b75847ed396.tar.gz
Patch from Jan Arne Petersen <jpetersen@jpetersen.org> to make Totem
2006-11-24 Bastien Nocera <hadess@hadess.net> * src/totem-sidebar.c: (totem_sidebar_setup): * src/totem.c: (totem_action_save_state), (main_pane_size_allocated), (totem_setup_window), (video_widget_create): Patch from Jan Arne Petersen <jpetersen@jpetersen.org> to make Totem remember the width of the sidebar even when Totem was maximised when we exited (Closes: #365211, #361800, #316286)
-rw-r--r--ChangeLog10
-rw-r--r--src/totem-sidebar.c1
-rw-r--r--src/totem.c50
3 files changed, 38 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index f45ff3c61..8976b7a63 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-11-24 Bastien Nocera <hadess@hadess.net>
+
+ * src/totem-sidebar.c: (totem_sidebar_setup):
+ * src/totem.c: (totem_action_save_state),
+ (main_pane_size_allocated), (totem_setup_window),
+ (video_widget_create): Patch from Jan Arne Petersen
+ <jpetersen@jpetersen.org> to make Totem remember the width
+ of the sidebar even when Totem was maximised when we exited
+ (Closes: #365211, #361800, #316286)
+
2006-11-23 Bastien Nocera <hadess@hadess.net>
* src/totem-session.c: (totem_session_restore): Patch from
diff --git a/src/totem-sidebar.c b/src/totem-sidebar.c
index 425db731c..263d91993 100644
--- a/src/totem-sidebar.c
+++ b/src/totem-sidebar.c
@@ -146,7 +146,6 @@ totem_sidebar_setup (Totem *totem, gboolean visible, const char *page_id)
G_CALLBACK (totem_sidebar_toggle), totem);
gtk_widget_show_all (totem->sidebar);
- gtk_widget_realize (totem->sidebar);
if (!visible)
gtk_widget_hide (totem->sidebar);
diff --git a/src/totem.c b/src/totem.c
index 3660a5ea4..f855f5567 100644
--- a/src/totem.c
+++ b/src/totem.c
@@ -176,10 +176,8 @@ totem_action_save_state (Totem *totem)
"show_sidebar", totem_sidebar_is_visible (totem));
g_key_file_set_boolean (keyfile, "State",
"maximised", totem->maximised);
- if (totem->maximised == FALSE) {
- g_key_file_set_integer (keyfile, "State",
- "sidebar_w", totem->sidebar_w);
- }
+ g_key_file_set_integer (keyfile, "State",
+ "sidebar_w", totem->sidebar_w);
page_id = totem_sidebar_get_current_page (totem);
g_key_file_set_string (keyfile, "State",
@@ -3046,19 +3044,36 @@ update_buttons (Totem *totem)
}
static void
+main_pane_size_allocated (GtkWidget *main_pane, GtkAllocation *allocation, Totem *totem)
+{
+ gulong handler_id;
+
+ if (!totem->maximised || GTK_WIDGET_MAPPED (totem->win)) {
+ handler_id = g_signal_handler_find (main_pane,
+ G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
+ 0, 0, NULL,
+ main_pane_size_allocated, totem);
+ g_signal_handler_disconnect (main_pane, handler_id);
+
+ gtk_paned_set_position (GTK_PANED (main_pane), allocation->width - totem->sidebar_w);
+ }
+}
+
+static void
totem_setup_window (Totem *totem)
{
GKeyFile *keyfile;
- int w, h, sidebar_w;
+ int w, h;
gboolean show_sidebar;
char *filename, *page_id;
GError *err = NULL;
+ GtkWidget *main_pane;
filename = g_build_filename (g_get_home_dir (), ".gnome2", "totem", NULL);
keyfile = g_key_file_new ();
if (g_key_file_load_from_file (keyfile, filename,
G_KEY_FILE_NONE, NULL) == FALSE) {
- sidebar_w = w = h = 0;
+ totem->sidebar_w = w = h = 0;
show_sidebar = TRUE;
page_id = NULL;
g_free (filename);
@@ -3102,11 +3117,11 @@ totem_setup_window (Totem *totem)
err = NULL;
}
- sidebar_w = g_key_file_get_integer (keyfile, "State",
+ totem->sidebar_w = g_key_file_get_integer (keyfile, "State",
"sidebar_w", &err);
if (err != NULL) {
g_error_free (err);
- sidebar_w = 0;
+ totem->sidebar_w = 0;
}
g_key_file_free (keyfile);
}
@@ -3119,17 +3134,11 @@ totem_setup_window (Totem *totem)
} else if (totem->maximised != FALSE) {
gtk_window_maximize (GTK_WINDOW (totem->win));
}
+
+ main_pane = glade_xml_get_widget (totem->xml, "tmw_main_pane");
+ g_signal_connect (G_OBJECT (main_pane), "size-allocate", G_CALLBACK (main_pane_size_allocated), totem);
- if (sidebar_w > 0 && totem->maximised == FALSE) {
- GtkWidget *item;
-
- totem->sidebar_w = sidebar_w;
- totem_sidebar_setup (totem, show_sidebar, page_id);
- item = glade_xml_get_widget (totem->xml, "tmw_main_pane");
- gtk_paned_set_position (GTK_PANED (item), w - sidebar_w);
- } else {
- totem_sidebar_setup (totem, show_sidebar, page_id);
- }
+ totem_sidebar_setup (totem, show_sidebar, page_id);
}
static void
@@ -3495,7 +3504,7 @@ static void
video_widget_create (Totem *totem)
{
GError *err = NULL;
- GtkWidget *container, *container2;
+ GtkWidget *container;
totem->scr = totem_scrsaver_new ();
@@ -3592,9 +3601,6 @@ video_widget_create (Totem *totem)
gtk_widget_show (GTK_WIDGET (totem->bvw));
- container2 = glade_xml_get_widget (totem->xml, "tmw_main_pane");
- gtk_paned_set_position (GTK_PANED (container2), totem->window_w - totem->sidebar_w);
-
bacon_video_widget_set_volume (totem->bvw,
gconf_client_get_int (totem->gc,
GCONF_PREFIX"/volume", NULL));