/* FIXME: call this if the view is already loaded before it's added to * main window. Update title and tab label using dir_fi of the FmFolder object. */ static void on_folder_view_loaded(FmFolderView* view, FmPath* path, FmTabPage* page) { FmIcon* icon; const FmNavHistoryItem* item; FmFolder* folder; folder = fm_folder_view_get_folder(view); if(folder) { #if 0 if(folder->dir_fi) { icon = folder->dir_fi->icon; if(icon) { icon->gicon; /* FIXME: load icon. we need to change window icon when switching pages. */ gtk_window_set_icon_name(GTK_WINDOW(win), "folder"); } } #endif fm_folder_query_filesystem_info(folder); } /* scroll to recorded position */ item = fm_nav_history_get_cur(page->nav_history); gtk_adjustment_set_value(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(view)), item->scroll_pos); /* update status text */ g_free(page->status_text[FM_STATUS_TEXT_NORMAL]); page->status_text[FM_STATUS_TEXT_NORMAL] = format_status_text(page); g_signal_emit(page, signals[STATUS], 0, FM_STATUS_TEXT_NORMAL, page->status_text[FM_STATUS_TEXT_NORMAL]); }
static void on_history_item(GtkMenuItem* mi, FmMainWin* win) { GList* l = g_object_get_qdata(G_OBJECT(mi), fm_qdata_id); const FmNavHistoryItem* item = (FmNavHistoryItem*)l->data; int scroll_pos = gtk_adjustment_get_value(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(win->folder_view))); fm_nav_history_jump(win->nav_history, l, scroll_pos); item = fm_nav_history_get_cur(win->nav_history); /* FIXME: should this be driven by a signal emitted on FmNavHistory? */ fm_main_win_chdir_without_history(win, item->path); }
void fm_tab_page_history(FmTabPage* page, GList* history_item_link) { FmMainWin* win = GET_MAIN_WIN(page); const FmNavHistoryItem* item = (FmNavHistoryItem*)history_item_link->data; GtkAdjustment* vadjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(page->folder_view)); int scroll_pos = gtk_adjustment_get_value(vadjustment); fm_nav_history_jump(page->nav_history, history_item_link, scroll_pos); item = fm_nav_history_get_cur(page->nav_history); fm_tab_page_chdir_without_history(page, item->path); }
static void on_view_loaded( FmFolderView* view, FmPath* path, gpointer user_data) { const FmNavHistoryItem* item; FmMainWin* win = (FmMainWin*)user_data; FmPathEntry* entry = FM_PATH_ENTRY(win->location); fm_path_entry_set_model( entry, path, view->model ); /* scroll to recorded position */ item = fm_nav_history_get_cur(win->nav_history); gtk_adjustment_set_value( gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(view)), item->scroll_pos); }
void on_go_back(GtkAction* act, FmMainWin* win) { if(fm_nav_history_get_can_back(win->nav_history)) { FmNavHistoryItem* item; int scroll_pos = gtk_adjustment_get_value(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(win->folder_view))); fm_nav_history_back(win->nav_history, scroll_pos); item = fm_nav_history_get_cur(win->nav_history); /* FIXME: should this be driven by a signal emitted on FmNavHistory? */ fm_main_win_chdir_without_history(win, item->path); } }
void fm_tab_page_forward(FmTabPage* page) { if(fm_nav_history_get_can_forward(page->nav_history)) { FmNavHistoryItem* item; GtkAdjustment* vadjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(page->folder_view)); int scroll_pos = gtk_adjustment_get_value(vadjustment); fm_nav_history_forward(page->nav_history, scroll_pos); item = fm_nav_history_get_cur(page->nav_history); fm_tab_page_chdir_without_history(page, item->path); } }
static void on_folder_finish_loading(FmFolder* folder, FmTabPage* page) { FmFolderView* fv = page->folder_view; const FmNavHistoryItem* item; GtkScrolledWindow* scroll = GTK_SCROLLED_WINDOW(fv); /* Note: most of the time, we delay the creation of the * folder model and do it after the whole folder is loaded. * That is because adding rows into model is much faster when no handlers * are connected to its signals. So we detach the model from folder view * and create the model again when it's fully loaded. * This optimization, however, is not used for FmFolder objects * with incremental loading (search://) */ if(fm_folder_view_get_model(fv) == NULL) { /* create a model for the folder and set it to the view */ FmFolderModel* model = fm_folder_model_new(folder, app_config->show_hidden); fm_folder_view_set_model(fv, model); fm_folder_model_set_sort(model, app_config->sort_by, (app_config->sort_type == GTK_SORT_ASCENDING) ? FM_SORT_ASCENDING : FM_SORT_DESCENDING); g_object_unref(model); } fm_folder_query_filesystem_info(folder); /* FIXME: is this needed? */ if (page->select_path_after_chdir) { fm_folder_view_select_file_path(fv, page->select_path_after_chdir); fm_path_unref(page->select_path_after_chdir); page->select_path_after_chdir = NULL; } // fm_path_entry_set_path(entry, path); /* scroll to recorded position */ item = fm_nav_history_get_cur(page->nav_history); gtk_adjustment_set_value(gtk_scrolled_window_get_vadjustment(scroll), item->scroll_pos); /* update status bar */ /* update status text */ g_free(page->status_text[FM_STATUS_TEXT_NORMAL]); page->status_text[FM_STATUS_TEXT_NORMAL] = format_status_text(page); g_signal_emit(page, signals[STATUS], 0, (guint)FM_STATUS_TEXT_NORMAL, page->status_text[FM_STATUS_TEXT_NORMAL]); fm_unset_busy_cursor(GTK_WIDGET(page)); /* g_debug("finish-loading"); */ page->loading = FALSE; g_object_notify_by_pspec(G_OBJECT(page), props[PROP_LOADING]); }
void fm_tab_page_back(FmTabPage* page) { FmMainWin* win = FM_MAIN_WIN(gtk_widget_get_toplevel(GTK_WIDGET(page))); if(fm_nav_history_get_can_back(page->nav_history)) { FmNavHistoryItem* item; GtkAdjustment* vadjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(page->folder_view)); int scroll_pos = gtk_adjustment_get_value(vadjustment); fm_nav_history_back(page->nav_history, scroll_pos); item = fm_nav_history_get_cur(page->nav_history); fm_tab_page_chdir_without_history(page, item->path); } }
void fm_tab_page_back(FmTabPage* page) { g_return_if_fail(page); if(fm_nav_history_can_back(page->nav_history)) { const FmNavHistoryItem* item; GtkAdjustment* vadjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(page->folder_view)); int scroll_pos = gtk_adjustment_get_value(vadjustment); fm_nav_history_back(page->nav_history, scroll_pos); item = fm_nav_history_get_cur(page->nav_history); fm_tab_page_chdir_without_history(page, item->path, NULL); } }