From f7492a6330eea9f60b04d0a2ea8362ea5847ab53 Mon Sep 17 00:00:00 2001 From: Elliot Lee Date: Fri, 21 Jan 2000 21:52:50 +0000 Subject: [PATCH] Add a specific flag to indicate reload, and make use of it. * src/ntl-window.[ch], src/ntl-window-msgs.c, src/ntl-window-private.h: Add a specific flag to indicate reload, and make use of it. --- ChangeLog-20000414 | 4 +++ src/nautilus-navigation-window.c | 15 +++++--- src/nautilus-navigation-window.h | 1 + src/nautilus-object-window.c | 15 +++++--- src/nautilus-object-window.h | 1 + src/nautilus-spatial-window.c | 15 +++++--- src/nautilus-spatial-window.h | 1 + src/nautilus-window-manage-views.c | 57 +++++++++++++++++------------- src/nautilus-window-private.h | 3 +- src/nautilus-window.c | 15 +++++--- src/nautilus-window.h | 1 + src/ntl-window-msgs.c | 57 +++++++++++++++++------------- src/ntl-window-private.h | 3 +- src/ntl-window.c | 15 +++++--- src/ntl-window.h | 1 + 15 files changed, 127 insertions(+), 77 deletions(-) diff --git a/ChangeLog-20000414 b/ChangeLog-20000414 index 87da5119b..7485a9e11 100644 --- a/ChangeLog-20000414 +++ b/ChangeLog-20000414 @@ -1,4 +1,8 @@ 2000-01-21 Elliot Lee + + * src/ntl-window.[ch], src/ntl-window-msgs.c, + src/ntl-window-private.h: Add a specific flag to indicate reload, and make use of it. + * libnautilus/nautilus-directory.c: Allocate an extra byte in the buffer, for safety's sake. * src/ntl-window-msgs.c: Fix back/fwd buttons. diff --git a/src/nautilus-navigation-window.c b/src/nautilus-navigation-window.c index a317da25b..d8a390de2 100644 --- a/src/nautilus-navigation-window.c +++ b/src/nautilus-navigation-window.c @@ -424,6 +424,8 @@ nautilus_window_constructed(NautilusWindow *window) window->btn_back = toolbar_info[0].widget; window->btn_fwd = toolbar_info[1].widget; nautilus_window_allow_stop(window, FALSE); + gtk_widget_set_sensitive(window->btn_back, FALSE); + gtk_widget_set_sensitive(window->btn_fwd, FALSE); /* set up location bar */ @@ -741,7 +743,7 @@ nautilus_window_back (GtkWidget *btn, NautilusWindow *window) nri.requested_uri = window->uris_prev->data; nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; - nautilus_window_change_location(window, &nri, NULL, TRUE); + nautilus_window_change_location(window, &nri, NULL, TRUE, FALSE); } static void @@ -754,7 +756,7 @@ nautilus_window_fwd (GtkWidget *btn, NautilusWindow *window) memset(&nri, 0, sizeof(nri)); nri.requested_uri = window->uris_next->data; nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; - nautilus_window_change_location(window, &nri, NULL, FALSE); + nautilus_window_change_location(window, &nri, NULL, FALSE, FALSE); } const char * @@ -790,9 +792,12 @@ nautilus_window_up (GtkWidget *btn, NautilusWindow *window) static void nautilus_window_reload (GtkWidget *btn, NautilusWindow *window) { - /* Should enforce same window! */ - nautilus_window_goto_uri (window, - nautilus_window_get_requested_uri(window)); + Nautilus_NavigationRequestInfo nri; + + memset(&nri, 0, sizeof(nri)); + nri.requested_uri = (char *)nautilus_window_get_requested_uri(window); + nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; + nautilus_window_change_location(window, &nri, NULL, FALSE, TRUE); } static void diff --git a/src/nautilus-navigation-window.h b/src/nautilus-navigation-window.h index 0012cf362..bf2e76bfb 100644 --- a/src/nautilus-navigation-window.h +++ b/src/nautilus-navigation-window.h @@ -90,6 +90,7 @@ struct _NautilusWindow { gboolean changes_pending : 1; gboolean is_back : 1; + gboolean is_reload : 1; gboolean views_shown : 1; gboolean view_bombed_out : 1; gboolean view_activation_complete : 1; diff --git a/src/nautilus-object-window.c b/src/nautilus-object-window.c index a317da25b..d8a390de2 100644 --- a/src/nautilus-object-window.c +++ b/src/nautilus-object-window.c @@ -424,6 +424,8 @@ nautilus_window_constructed(NautilusWindow *window) window->btn_back = toolbar_info[0].widget; window->btn_fwd = toolbar_info[1].widget; nautilus_window_allow_stop(window, FALSE); + gtk_widget_set_sensitive(window->btn_back, FALSE); + gtk_widget_set_sensitive(window->btn_fwd, FALSE); /* set up location bar */ @@ -741,7 +743,7 @@ nautilus_window_back (GtkWidget *btn, NautilusWindow *window) nri.requested_uri = window->uris_prev->data; nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; - nautilus_window_change_location(window, &nri, NULL, TRUE); + nautilus_window_change_location(window, &nri, NULL, TRUE, FALSE); } static void @@ -754,7 +756,7 @@ nautilus_window_fwd (GtkWidget *btn, NautilusWindow *window) memset(&nri, 0, sizeof(nri)); nri.requested_uri = window->uris_next->data; nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; - nautilus_window_change_location(window, &nri, NULL, FALSE); + nautilus_window_change_location(window, &nri, NULL, FALSE, FALSE); } const char * @@ -790,9 +792,12 @@ nautilus_window_up (GtkWidget *btn, NautilusWindow *window) static void nautilus_window_reload (GtkWidget *btn, NautilusWindow *window) { - /* Should enforce same window! */ - nautilus_window_goto_uri (window, - nautilus_window_get_requested_uri(window)); + Nautilus_NavigationRequestInfo nri; + + memset(&nri, 0, sizeof(nri)); + nri.requested_uri = (char *)nautilus_window_get_requested_uri(window); + nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; + nautilus_window_change_location(window, &nri, NULL, FALSE, TRUE); } static void diff --git a/src/nautilus-object-window.h b/src/nautilus-object-window.h index 0012cf362..bf2e76bfb 100644 --- a/src/nautilus-object-window.h +++ b/src/nautilus-object-window.h @@ -90,6 +90,7 @@ struct _NautilusWindow { gboolean changes_pending : 1; gboolean is_back : 1; + gboolean is_reload : 1; gboolean views_shown : 1; gboolean view_bombed_out : 1; gboolean view_activation_complete : 1; diff --git a/src/nautilus-spatial-window.c b/src/nautilus-spatial-window.c index a317da25b..d8a390de2 100644 --- a/src/nautilus-spatial-window.c +++ b/src/nautilus-spatial-window.c @@ -424,6 +424,8 @@ nautilus_window_constructed(NautilusWindow *window) window->btn_back = toolbar_info[0].widget; window->btn_fwd = toolbar_info[1].widget; nautilus_window_allow_stop(window, FALSE); + gtk_widget_set_sensitive(window->btn_back, FALSE); + gtk_widget_set_sensitive(window->btn_fwd, FALSE); /* set up location bar */ @@ -741,7 +743,7 @@ nautilus_window_back (GtkWidget *btn, NautilusWindow *window) nri.requested_uri = window->uris_prev->data; nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; - nautilus_window_change_location(window, &nri, NULL, TRUE); + nautilus_window_change_location(window, &nri, NULL, TRUE, FALSE); } static void @@ -754,7 +756,7 @@ nautilus_window_fwd (GtkWidget *btn, NautilusWindow *window) memset(&nri, 0, sizeof(nri)); nri.requested_uri = window->uris_next->data; nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; - nautilus_window_change_location(window, &nri, NULL, FALSE); + nautilus_window_change_location(window, &nri, NULL, FALSE, FALSE); } const char * @@ -790,9 +792,12 @@ nautilus_window_up (GtkWidget *btn, NautilusWindow *window) static void nautilus_window_reload (GtkWidget *btn, NautilusWindow *window) { - /* Should enforce same window! */ - nautilus_window_goto_uri (window, - nautilus_window_get_requested_uri(window)); + Nautilus_NavigationRequestInfo nri; + + memset(&nri, 0, sizeof(nri)); + nri.requested_uri = (char *)nautilus_window_get_requested_uri(window); + nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; + nautilus_window_change_location(window, &nri, NULL, FALSE, TRUE); } static void diff --git a/src/nautilus-spatial-window.h b/src/nautilus-spatial-window.h index 0012cf362..bf2e76bfb 100644 --- a/src/nautilus-spatial-window.h +++ b/src/nautilus-spatial-window.h @@ -90,6 +90,7 @@ struct _NautilusWindow { gboolean changes_pending : 1; gboolean is_back : 1; + gboolean is_reload : 1; gboolean views_shown : 1; gboolean view_bombed_out : 1; gboolean view_activation_complete : 1; diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c index 72a27b5d9..e4d412d3b 100644 --- a/src/nautilus-window-manage-views.c +++ b/src/nautilus-window-manage-views.c @@ -180,36 +180,39 @@ nautilus_window_update_internals(NautilusWindow *window, NautilusNavigationInfo Nautilus_NavigationInfo *newni; /* Maintain history lists. */ - if (window->is_back) + if(!window->is_reload) { - /* Going back. Remove one item from the prev list and add the current item to the next list. */ + if (window->is_back) + { + /* Going back. Remove one item from the prev list and add the current item to the next list. */ - g_assert(window->uris_prev); - g_assert(!strcmp((const char*)window->uris_prev->data, loci->navinfo.requested_uri)); - g_assert(window->ni); + g_assert(window->uris_prev); + g_assert(!strcmp((const char*)window->uris_prev->data, loci->navinfo.requested_uri)); + g_assert(window->ni); - window->uris_next = g_slist_prepend(window->uris_next, g_strdup(window->ni->requested_uri)); - g_free(window->uris_prev->data); - window->uris_prev = g_slist_remove_link(window->uris_prev, window->uris_prev); - } - else - { - /* Going forward. Remove one item from the next if it's the same as the the request. - Otherwise, clobber the entire next list. - */ - - if (window->uris_next && !strcmp(loci->navinfo.requested_uri, (const char*)window->uris_next->data)) - { - g_free(window->uris_next->data); - window->uris_next = g_slist_remove_link(window->uris_next, window->uris_next); + window->uris_next = g_slist_prepend(window->uris_next, g_strdup(window->ni->requested_uri)); + g_free(window->uris_prev->data); + window->uris_prev = g_slist_remove_link(window->uris_prev, window->uris_prev); } else { - g_slist_foreach(window->uris_next, (GFunc)g_free, NULL); - g_slist_free(window->uris_next); window->uris_next = NULL; + /* Going forward. Remove one item from the next if it's the same as the the request. + Otherwise, clobber the entire next list. + */ + + if (window->uris_next && !strcmp(loci->navinfo.requested_uri, (const char*)window->uris_next->data)) + { + g_free(window->uris_next->data); + window->uris_next = g_slist_remove_link(window->uris_next, window->uris_next); + } + else + { + g_slist_foreach(window->uris_next, (GFunc)g_free, NULL); + g_slist_free(window->uris_next); window->uris_next = NULL; + } + if (window->ni) + window->uris_prev = g_slist_prepend(window->uris_prev, g_strdup(window->ni->requested_uri)); } - if (window->ni) - window->uris_prev = g_slist_prepend(window->uris_prev, g_strdup(window->ni->requested_uri)); } new_uri = gnome_vfs_uri_new (loci->navinfo.requested_uri); @@ -421,7 +424,7 @@ nautilus_window_request_location_change(NautilusWindow *window, Nautilus_NavigationRequestInfo *loc, NautilusView *requesting_view) { - nautilus_window_change_location(window, loc, requesting_view, FALSE); + nautilus_window_change_location(window, loc, requesting_view, FALSE, FALSE); } static NautilusView * @@ -828,7 +831,8 @@ void nautilus_window_change_location(NautilusWindow *window, Nautilus_NavigationRequestInfo *loc, NautilusView *requesting_view, - gboolean is_back) + gboolean is_back, + gboolean is_reload) { nautilus_window_set_state_info(window, (NautilusWindowStateItem)RESET_TO_IDLE, (NautilusWindowStateItem)0); @@ -839,6 +843,7 @@ nautilus_window_change_location(NautilusWindow *window, nautilus_window_progress_indicate(window, PROGRESS_INITIAL, 0, _("Gathering information")); window->is_back = is_back; + window->is_reload = is_reload; window->new_requesting_view = requesting_view; window->cancel_tag = @@ -866,6 +871,8 @@ view_menu_switch_views_cb (GtkWidget *widget, gpointer data) view = nautilus_window_load_content_view (window, iid, window->ni, NULL); nautilus_window_set_state_info(window, (NautilusWindowStateItem)NEW_CONTENT_VIEW_ACTIVATED, view, (NautilusWindowStateItem)0); + window->is_back = FALSE; + window->is_reload = TRUE; } /* diff --git a/src/nautilus-window-private.h b/src/nautilus-window-private.h index 2f09abb15..89b9e886e 100644 --- a/src/nautilus-window-private.h +++ b/src/nautilus-window-private.h @@ -35,7 +35,8 @@ void nautilus_window_set_status(NautilusWindow *window, const char *txt); void nautilus_window_change_location(NautilusWindow *window, Nautilus_NavigationRequestInfo *loc, NautilusView *requesting_view, - gboolean is_back); + gboolean is_back, + gboolean is_reload); void nautilus_window_remove_meta_view_real(NautilusWindow *window, NautilusView *meta_view); void nautilus_window_end_location_change(NautilusWindow *window); void nautilus_window_connect_view (NautilusWindow *window, diff --git a/src/nautilus-window.c b/src/nautilus-window.c index a317da25b..d8a390de2 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -424,6 +424,8 @@ nautilus_window_constructed(NautilusWindow *window) window->btn_back = toolbar_info[0].widget; window->btn_fwd = toolbar_info[1].widget; nautilus_window_allow_stop(window, FALSE); + gtk_widget_set_sensitive(window->btn_back, FALSE); + gtk_widget_set_sensitive(window->btn_fwd, FALSE); /* set up location bar */ @@ -741,7 +743,7 @@ nautilus_window_back (GtkWidget *btn, NautilusWindow *window) nri.requested_uri = window->uris_prev->data; nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; - nautilus_window_change_location(window, &nri, NULL, TRUE); + nautilus_window_change_location(window, &nri, NULL, TRUE, FALSE); } static void @@ -754,7 +756,7 @@ nautilus_window_fwd (GtkWidget *btn, NautilusWindow *window) memset(&nri, 0, sizeof(nri)); nri.requested_uri = window->uris_next->data; nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; - nautilus_window_change_location(window, &nri, NULL, FALSE); + nautilus_window_change_location(window, &nri, NULL, FALSE, FALSE); } const char * @@ -790,9 +792,12 @@ nautilus_window_up (GtkWidget *btn, NautilusWindow *window) static void nautilus_window_reload (GtkWidget *btn, NautilusWindow *window) { - /* Should enforce same window! */ - nautilus_window_goto_uri (window, - nautilus_window_get_requested_uri(window)); + Nautilus_NavigationRequestInfo nri; + + memset(&nri, 0, sizeof(nri)); + nri.requested_uri = (char *)nautilus_window_get_requested_uri(window); + nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; + nautilus_window_change_location(window, &nri, NULL, FALSE, TRUE); } static void diff --git a/src/nautilus-window.h b/src/nautilus-window.h index 0012cf362..bf2e76bfb 100644 --- a/src/nautilus-window.h +++ b/src/nautilus-window.h @@ -90,6 +90,7 @@ struct _NautilusWindow { gboolean changes_pending : 1; gboolean is_back : 1; + gboolean is_reload : 1; gboolean views_shown : 1; gboolean view_bombed_out : 1; gboolean view_activation_complete : 1; diff --git a/src/ntl-window-msgs.c b/src/ntl-window-msgs.c index 72a27b5d9..e4d412d3b 100644 --- a/src/ntl-window-msgs.c +++ b/src/ntl-window-msgs.c @@ -180,36 +180,39 @@ nautilus_window_update_internals(NautilusWindow *window, NautilusNavigationInfo Nautilus_NavigationInfo *newni; /* Maintain history lists. */ - if (window->is_back) + if(!window->is_reload) { - /* Going back. Remove one item from the prev list and add the current item to the next list. */ + if (window->is_back) + { + /* Going back. Remove one item from the prev list and add the current item to the next list. */ - g_assert(window->uris_prev); - g_assert(!strcmp((const char*)window->uris_prev->data, loci->navinfo.requested_uri)); - g_assert(window->ni); + g_assert(window->uris_prev); + g_assert(!strcmp((const char*)window->uris_prev->data, loci->navinfo.requested_uri)); + g_assert(window->ni); - window->uris_next = g_slist_prepend(window->uris_next, g_strdup(window->ni->requested_uri)); - g_free(window->uris_prev->data); - window->uris_prev = g_slist_remove_link(window->uris_prev, window->uris_prev); - } - else - { - /* Going forward. Remove one item from the next if it's the same as the the request. - Otherwise, clobber the entire next list. - */ - - if (window->uris_next && !strcmp(loci->navinfo.requested_uri, (const char*)window->uris_next->data)) - { - g_free(window->uris_next->data); - window->uris_next = g_slist_remove_link(window->uris_next, window->uris_next); + window->uris_next = g_slist_prepend(window->uris_next, g_strdup(window->ni->requested_uri)); + g_free(window->uris_prev->data); + window->uris_prev = g_slist_remove_link(window->uris_prev, window->uris_prev); } else { - g_slist_foreach(window->uris_next, (GFunc)g_free, NULL); - g_slist_free(window->uris_next); window->uris_next = NULL; + /* Going forward. Remove one item from the next if it's the same as the the request. + Otherwise, clobber the entire next list. + */ + + if (window->uris_next && !strcmp(loci->navinfo.requested_uri, (const char*)window->uris_next->data)) + { + g_free(window->uris_next->data); + window->uris_next = g_slist_remove_link(window->uris_next, window->uris_next); + } + else + { + g_slist_foreach(window->uris_next, (GFunc)g_free, NULL); + g_slist_free(window->uris_next); window->uris_next = NULL; + } + if (window->ni) + window->uris_prev = g_slist_prepend(window->uris_prev, g_strdup(window->ni->requested_uri)); } - if (window->ni) - window->uris_prev = g_slist_prepend(window->uris_prev, g_strdup(window->ni->requested_uri)); } new_uri = gnome_vfs_uri_new (loci->navinfo.requested_uri); @@ -421,7 +424,7 @@ nautilus_window_request_location_change(NautilusWindow *window, Nautilus_NavigationRequestInfo *loc, NautilusView *requesting_view) { - nautilus_window_change_location(window, loc, requesting_view, FALSE); + nautilus_window_change_location(window, loc, requesting_view, FALSE, FALSE); } static NautilusView * @@ -828,7 +831,8 @@ void nautilus_window_change_location(NautilusWindow *window, Nautilus_NavigationRequestInfo *loc, NautilusView *requesting_view, - gboolean is_back) + gboolean is_back, + gboolean is_reload) { nautilus_window_set_state_info(window, (NautilusWindowStateItem)RESET_TO_IDLE, (NautilusWindowStateItem)0); @@ -839,6 +843,7 @@ nautilus_window_change_location(NautilusWindow *window, nautilus_window_progress_indicate(window, PROGRESS_INITIAL, 0, _("Gathering information")); window->is_back = is_back; + window->is_reload = is_reload; window->new_requesting_view = requesting_view; window->cancel_tag = @@ -866,6 +871,8 @@ view_menu_switch_views_cb (GtkWidget *widget, gpointer data) view = nautilus_window_load_content_view (window, iid, window->ni, NULL); nautilus_window_set_state_info(window, (NautilusWindowStateItem)NEW_CONTENT_VIEW_ACTIVATED, view, (NautilusWindowStateItem)0); + window->is_back = FALSE; + window->is_reload = TRUE; } /* diff --git a/src/ntl-window-private.h b/src/ntl-window-private.h index 2f09abb15..89b9e886e 100644 --- a/src/ntl-window-private.h +++ b/src/ntl-window-private.h @@ -35,7 +35,8 @@ void nautilus_window_set_status(NautilusWindow *window, const char *txt); void nautilus_window_change_location(NautilusWindow *window, Nautilus_NavigationRequestInfo *loc, NautilusView *requesting_view, - gboolean is_back); + gboolean is_back, + gboolean is_reload); void nautilus_window_remove_meta_view_real(NautilusWindow *window, NautilusView *meta_view); void nautilus_window_end_location_change(NautilusWindow *window); void nautilus_window_connect_view (NautilusWindow *window, diff --git a/src/ntl-window.c b/src/ntl-window.c index a317da25b..d8a390de2 100644 --- a/src/ntl-window.c +++ b/src/ntl-window.c @@ -424,6 +424,8 @@ nautilus_window_constructed(NautilusWindow *window) window->btn_back = toolbar_info[0].widget; window->btn_fwd = toolbar_info[1].widget; nautilus_window_allow_stop(window, FALSE); + gtk_widget_set_sensitive(window->btn_back, FALSE); + gtk_widget_set_sensitive(window->btn_fwd, FALSE); /* set up location bar */ @@ -741,7 +743,7 @@ nautilus_window_back (GtkWidget *btn, NautilusWindow *window) nri.requested_uri = window->uris_prev->data; nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; - nautilus_window_change_location(window, &nri, NULL, TRUE); + nautilus_window_change_location(window, &nri, NULL, TRUE, FALSE); } static void @@ -754,7 +756,7 @@ nautilus_window_fwd (GtkWidget *btn, NautilusWindow *window) memset(&nri, 0, sizeof(nri)); nri.requested_uri = window->uris_next->data; nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; - nautilus_window_change_location(window, &nri, NULL, FALSE); + nautilus_window_change_location(window, &nri, NULL, FALSE, FALSE); } const char * @@ -790,9 +792,12 @@ nautilus_window_up (GtkWidget *btn, NautilusWindow *window) static void nautilus_window_reload (GtkWidget *btn, NautilusWindow *window) { - /* Should enforce same window! */ - nautilus_window_goto_uri (window, - nautilus_window_get_requested_uri(window)); + Nautilus_NavigationRequestInfo nri; + + memset(&nri, 0, sizeof(nri)); + nri.requested_uri = (char *)nautilus_window_get_requested_uri(window); + nri.new_window_default = nri.new_window_suggested = nri.new_window_enforced = Nautilus_V_FALSE; + nautilus_window_change_location(window, &nri, NULL, FALSE, TRUE); } static void diff --git a/src/ntl-window.h b/src/ntl-window.h index 0012cf362..bf2e76bfb 100644 --- a/src/ntl-window.h +++ b/src/ntl-window.h @@ -90,6 +90,7 @@ struct _NautilusWindow { gboolean changes_pending : 1; gboolean is_back : 1; + gboolean is_reload : 1; gboolean views_shown : 1; gboolean view_bombed_out : 1; gboolean view_activation_complete : 1; -- GitLab