Re: combined patches
- From: Luis Villa <louie ximian com>
- To: Frank Worsley <fworsley shaw ca>
- Cc: Alexander Larsson <alexl redhat com>, David Watson <dwatson cs ucr edu>, Dave Bordoley <bordoley msu edu>, nautilus-list gnome org
- Subject: Re: combined patches
- Date: 09 Jun 2002 01:37:35 -0400
Just to remind, the question at this point is 'can I ask the release
team for further permission to commit' not 'can I commit' :)
Luis
On Sat, 2002-06-08 at 22:56, Frank Worsley wrote:
> And here's the new patch. That should hopefully work now.
>
> Can I commit this?
>
> - Frank
>
>
> ----
>
> Index: src/nautilus-application.c
> ===================================================================
> RCS file: /cvs/gnome/nautilus/src/nautilus-application.c,v
> retrieving revision 1.189
> diff -u -p -r1.189 nautilus-application.c
> --- src/nautilus-application.c 31 May 2002 20:00:56 -0000 1.189
> +++ src/nautilus-application.c 9 Jun 2002 02:56:40 -0000
> @@ -641,6 +641,59 @@ nautilus_window_delete_event_callback (G
> return TRUE;
> }
>
> +static gboolean
> +save_window_geometry_idle (gpointer callback_data)
> +{
> + NautilusWindow *window;
> +
> + window = NAUTILUS_WINDOW (callback_data);
> +
> + nautilus_window_save_geometry (window);
> +
> + window->save_geometry_idle_id = 0;
> + return FALSE;
> +}
> +
> +static gboolean
> +nautilus_window_configure_event_callback (GtkWidget *widget,
> + GdkEventConfigure *event,
> + gpointer callback_data)
> +{
> + NautilusWindow *window;
> +
> + window = NAUTILUS_WINDOW (widget);
> +
> + /* Only save the geometry when we are idle,
> + * since we receive configure events all the time.
> + */
> + if (window->save_geometry_idle_id == 0) {
> + window->save_geometry_idle_id =
> + g_idle_add (save_window_geometry_idle, window);
> + }
> +
> + return FALSE;
> +}
> +
> +static gboolean
> +nautilus_window_unrealize_event_callback (GtkWidget *widget,
> + GdkEvent *event,
> + gpointer callback_data)
> +{
> + NautilusWindow *window;
> +
> + window = NAUTILUS_WINDOW (widget);
> +
> + g_warning ("FRANKW: got unrealize event!");
> +
> + if (window->save_geometry_idle_id != 0) {
> + g_source_remove (window->save_geometry_idle_id);
> + window->save_geometry_idle_id = 0;
> + nautilus_window_save_geometry (window);
> + }
> +
> + return FALSE;
> +}
> +
> NautilusWindow *
> nautilus_application_create_window (NautilusApplication *application)
> {
> @@ -657,6 +710,12 @@ nautilus_application_create_window (Naut
>
> g_signal_connect_object (window, "destroy",
> G_CALLBACK (nautilus_application_destroyed_window), application, 0);
> +
> + g_signal_connect (window, "configure_event",
> + G_CALLBACK (nautilus_window_configure_event_callback), NULL);
> +
> + g_signal_connect (window, "unrealize",
> + G_CALLBACK (nautilus_window_unrealize_event_callback), NULL);
>
> nautilus_application_window_list = g_list_prepend (nautilus_application_window_list, window);
>
> Index: src/nautilus-window-manage-views.c
> ===================================================================
> RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v
> retrieving revision 1.298
> diff -u -p -r1.298 nautilus-window-manage-views.c
> --- src/nautilus-window-manage-views.c 3 Jun 2002 19:16:56 -0000 1.298
> +++ src/nautilus-window-manage-views.c 9 Jun 2002 02:56:40 -0000
> @@ -608,12 +608,6 @@ ref_now_unref_at_idle_time (GObject *obj
> g_idle_add (unref_callback, object);
> }
>
> -static gboolean
> -use_saved_window_positions (void)
> -{
> - return eel_preferences_get_boolean (NAUTILUS_PREFERENCES_WINDOW_ALWAYS_NEW);
> -}
> -
> /* This is called when we have decided we can actually change to the new view/location situation. */
> static void
> location_has_really_changed (NautilusWindow *window)
> @@ -658,8 +652,7 @@ location_has_really_changed (NautilusWin
> * metadata. Then tell the callback it needs to show the
> * window
> */
> - if (!use_saved_window_positions () ||
> - window->show_state == NAUTILUS_WINDOW_POSITION_SET) {
> + if (window->show_state == NAUTILUS_WINDOW_POSITION_SET) {
> gtk_widget_show (GTK_WIDGET (window));
> } else {
> window->show_state = NAUTILUS_WINDOW_SHOULD_SHOW;
> @@ -1124,18 +1117,17 @@ position_and_show_window_callback (Nauti
>
> window = NAUTILUS_WINDOW (callback_data);
>
> - if (use_saved_window_positions ()) {
> - geometry_string = nautilus_file_get_metadata
> + /* load the saved window geometry */
> + geometry_string = nautilus_file_get_metadata
> (file, NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY, NULL);
> - if (geometry_string != NULL) {
> - eel_gtk_window_set_initial_geometry_from_string
> - (GTK_WINDOW (window),
> - geometry_string,
> - NAUTILUS_WINDOW_MIN_WIDTH,
> - NAUTILUS_WINDOW_MIN_HEIGHT);
> - }
> - g_free (geometry_string);
> + if (geometry_string != NULL) {
> + eel_gtk_window_set_initial_geometry_from_string
> + (GTK_WINDOW (window),
> + geometry_string,
> + NAUTILUS_WINDOW_MIN_WIDTH,
> + NAUTILUS_WINDOW_MIN_HEIGHT);
> }
> + g_free (geometry_string);
>
> /* If we finished constructing the window by now we need
> * to show the window here.
> @@ -1190,22 +1182,20 @@ determined_initial_view_callback (Nautil
> * windows), position and show it only after we've got the
> * metadata (since position info is stored there).
> */
> - if (use_saved_window_positions ()) {
> - window->show_state = NAUTILUS_WINDOW_NOT_SHOWN;
> - if (!GTK_WIDGET_VISIBLE (window)) {
> - file = nautilus_file_get (location);
> + window->show_state = NAUTILUS_WINDOW_NOT_SHOWN;
> + if (!GTK_WIDGET_VISIBLE (window)) {
> + file = nautilus_file_get (location);
>
> - attributes = g_list_prepend (NULL, NAUTILUS_FILE_ATTRIBUTE_METADATA);
> - nautilus_file_call_when_ready (file,
> - attributes,
> - position_and_show_window_callback,
> - window);
> - g_list_free (attributes);
> - }
> - }
> + attributes = g_list_prepend (NULL, NAUTILUS_FILE_ATTRIBUTE_METADATA);
> + nautilus_file_call_when_ready (file,
> + attributes,
> + position_and_show_window_callback,
> + window);
> + g_list_free (attributes);
> + }
>
> - load_content_view (window, initial_view);
> - return;
> + load_content_view (window, initial_view);
> + return;
> }
>
> /* Some sort of failure occurred. How 'bout we tell the user? */
> Index: src/nautilus-window.c
> ===================================================================
> RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v
> retrieving revision 1.388
> diff -u -p -r1.388 nautilus-window.c
> --- src/nautilus-window.c 24 May 2002 21:54:05 -0000 1.388
> +++ src/nautilus-window.c 9 Jun 2002 02:56:40 -0000
> @@ -864,7 +864,7 @@ nautilus_window_finalize (GObject *objec
> G_OBJECT_CLASS (parent_class)->finalize (object);
> }
>
> -static void
> +void
> nautilus_window_save_geometry (NautilusWindow *window)
> {
> char *geometry_string;
> @@ -884,15 +884,7 @@ nautilus_window_save_geometry (NautilusW
> void
> nautilus_window_close (NautilusWindow *window)
> {
> - g_return_if_fail (NAUTILUS_IS_WINDOW (window));
> -
> - /* Save the window position in the directory's metadata only if
> - * we're in every-location-in-its-own-window mode. Otherwise it
> - * would be too apparently random when the stored positions change.
> - */
> - if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_WINDOW_ALWAYS_NEW)) {
> - nautilus_window_save_geometry (window);
> - }
> + g_return_if_fail (NAUTILUS_IS_WINDOW (window));
>
> gtk_widget_destroy (GTK_WIDGET (window));
> }
> Index: src/nautilus-window.h
> ===================================================================
> RCS file: /cvs/gnome/nautilus/src/nautilus-window.h,v
> retrieving revision 1.100
> diff -u -p -r1.100 nautilus-window.h
> --- src/nautilus-window.h 21 Apr 2002 21:15:41 -0000 1.100
> +++ src/nautilus-window.h 9 Jun 2002 02:56:40 -0000
> @@ -82,7 +82,8 @@ struct NautilusWindow {
> GtkWidget *navigation_bar;
>
> guint status_bar_clear_id;
> -
> + guint save_geometry_idle_id;
> +
> /** CORBA-related elements **/
> NautilusApplication *application;
>
> @@ -153,5 +154,6 @@ gboolean nautilus_window_sidebar_showin
> void nautilus_window_hide_status_bar (NautilusWindow *window);
> void nautilus_window_show_status_bar (NautilusWindow *window);
> gboolean nautilus_window_status_bar_showing (NautilusWindow *window);
> +void nautilus_window_save_geometry (NautilusWindow *window);
>
> #endif
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]