Commit 6a64abdc authored by Paolo Bacchilega's avatar Paolo Bacchilega
Browse files

Fixed expand_all event in the folder tree view.

parent ef4f5493
......@@ -1226,7 +1226,7 @@ load_data_load_next_folder (LoadData *load_data)
}
while (TRUE);
if (g_file_equal (folder_to_load, load_data->requested_folder->file))
if ((load_data->action != GTH_ACTION_LIST_CHILDREN) && g_file_equal (folder_to_load, load_data->requested_folder->file))
gth_file_source_read_metadata (load_data->file_source,
load_data->requested_folder,
GFILE_BASIC_ATTRIBUTES ",access::*,sort::*",
......@@ -1307,17 +1307,16 @@ load_data_continue (LoadData *load_data,
load_data_done (load_data, NULL);
switch (load_data->action) {
case GTH_ACTION_VIEW:
case GTH_ACTION_GO_TO:
case GTH_ACTION_GO_BACK:
case GTH_ACTION_GO_FORWARD:
case GTH_ACTION_GO_TO:
case GTH_ACTION_GO_UP:
case GTH_ACTION_VIEW:
case GTH_ACTION_LIST_CHILDREN:
if (path != NULL) {
GList *entry_points;
GList *scan;
gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (browser->priv->folder_tree), path, NULL, FALSE, .0, .0);
gth_folder_tree_select_path (GTH_FOLDER_TREE (browser->priv->folder_tree), path);
/* expand the path if it's an entry point */
entry_points = gth_main_get_all_entry_points ();
......@@ -1330,6 +1329,11 @@ load_data_continue (LoadData *load_data,
}
}
if (load_data->action != GTH_ACTION_LIST_CHILDREN) {
gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (browser->priv->folder_tree), path, NULL, FALSE, 0.0, 0.0);
gth_folder_tree_select_path (GTH_FOLDER_TREE (browser->priv->folder_tree), path);
}
_g_object_list_unref (entry_points);
}
break;
......@@ -1338,11 +1342,11 @@ load_data_continue (LoadData *load_data,
}
switch (load_data->action) {
case GTH_ACTION_VIEW:
case GTH_ACTION_GO_TO:
case GTH_ACTION_GO_BACK:
case GTH_ACTION_GO_FORWARD:
case GTH_ACTION_GO_INTO:
case GTH_ACTION_GO_TO:
case GTH_ACTION_GO_UP:
case GTH_ACTION_VIEW:
filter = _gth_browser_get_file_filter (browser);
gth_file_list_set_filter (GTH_FILE_LIST (browser->priv->file_list), filter);
gth_file_list_set_files (GTH_FILE_LIST (browser->priv->file_list), files);
......@@ -1406,22 +1410,25 @@ metadata_ready_cb (GList *files,
static void
load_data_ready (LoadData *data,
load_data_ready (LoadData *load_data,
GList *files,
GError *error)
{
if (error != NULL) {
load_data_done (data, error);
load_data_free (data);
load_data_done (load_data, error);
load_data_free (load_data);
}
else if (g_file_equal ((GFile *) data->current->data, data->requested_folder->file))
else if ((load_data->action != GTH_ACTION_LIST_CHILDREN)
&& g_file_equal ((GFile *) load_data->current->data, load_data->requested_folder->file))
{
_g_query_metadata_async (files,
_gth_browser_get_list_attributes (data->browser, TRUE),
data->cancellable,
_gth_browser_get_list_attributes (load_data->browser, TRUE),
load_data->cancellable,
metadata_ready_cb,
data);
load_data);
}
else
load_data_continue (data, files);
load_data_continue (load_data, files);
}
......@@ -1519,12 +1526,13 @@ _gth_browser_load (GthBrowser *browser,
LoadData *load_data;
GFile *entry_point;
_gth_browser_cancel (browser);
switch (action) {
case GTH_ACTION_GO_TO:
case GTH_ACTION_GO_INTO:
case GTH_ACTION_GO_BACK:
case GTH_ACTION_GO_FORWARD:
case GTH_ACTION_GO_TO:
case GTH_ACTION_GO_UP:
case GTH_ACTION_VIEW:
if (browser->priv->location_source != NULL) {
gth_file_source_monitor_directory (browser->priv->location_source,
browser->priv->location->file,
......@@ -2154,6 +2162,8 @@ folder_tree_list_children_cb (GthFolderTree *folder_tree,
GFile *file,
GthBrowser *browser)
{
g_print ("list children: %s\n", g_file_get_uri (file));
_gth_browser_load (browser, file, NULL, GTH_ACTION_LIST_CHILDREN, FALSE);
}
......
......@@ -79,7 +79,6 @@ struct _GthFolderTreePrivate
GthIconCache *icon_cache;
GtkCellRenderer *text_renderer;
GtkTreePath *hover_path;
GtkTreePath *click_path;
};
......@@ -310,12 +309,6 @@ row_expanded_cb (GtkTreeView *tree_view,
GthFileData *file_data;
gboolean loaded;
if ((folder_tree->priv->click_path == NULL)
|| gtk_tree_path_compare (folder_tree->priv->click_path, expanded_path) != 0)
{
return FALSE;
}
gtk_tree_model_get (GTK_TREE_MODEL (folder_tree->priv->tree_store),
expanded_iter,
COLUMN_TYPE, &entry_type,
......@@ -326,9 +319,6 @@ row_expanded_cb (GtkTreeView *tree_view,
if ((entry_type == ENTRY_TYPE_FILE) && ! loaded)
g_signal_emit (folder_tree, gth_folder_tree_signals[LIST_CHILDREN], 0, file_data->file);
gtk_tree_path_free (folder_tree->priv->click_path);
folder_tree->priv->click_path = NULL;
_g_object_unref (file_data);
return FALSE;
......@@ -353,11 +343,6 @@ button_press_cb (GtkWidget *widget,
gtk_widget_grab_focus (widget);
if (folder_tree->priv->click_path != NULL) {
gtk_tree_path_free (folder_tree->priv->click_path);
folder_tree->priv->click_path = NULL;
}
if ((event->state & GDK_SHIFT_MASK) || (event->state & GDK_CONTROL_MASK))
return retval;
......@@ -466,8 +451,6 @@ button_press_cb (GtkWidget *widget,
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_tree));
if ((cell_x > start_pos) && gtk_tree_selection_iter_is_selected (selection, &iter))
retval = TRUE;
folder_tree->priv->click_path = gtk_tree_path_copy (path);
}
else if ((event->button == 1) && (event->type == GDK_2BUTTON_PRESS)) {
if (! gtk_tree_view_row_expanded (GTK_TREE_VIEW (folder_tree), path))
......@@ -493,62 +476,6 @@ load_uri (GthFolderTree *folder_tree,
}
static int
button_release_cb (GtkWidget *widget,
GdkEventButton *event,
gpointer data)
{
GthFolderTree *folder_tree = data;
GtkTreeStore *tree_store = folder_tree->priv->tree_store;
GtkTreePath *path;
GtkTreeIter iter;
GtkTreeSelection *selection;
if ((event->state & GDK_SHIFT_MASK) || (event->state & GDK_CONTROL_MASK))
return FALSE;
return FALSE;
if (event->button != 1)
return FALSE;
if (! gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (folder_tree),
event->x, event->y,
&path, NULL, NULL, NULL))
{
return FALSE;
}
if (! gtk_tree_model_get_iter (GTK_TREE_MODEL (tree_store),
&iter,
path))
{
gtk_tree_path_free (path);
return FALSE;
}
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_tree));
if (gtk_tree_selection_iter_is_selected (selection, &iter)) {
EntryType entry_type;
GthFileData *file_data;
gtk_tree_model_get (GTK_TREE_MODEL (tree_store),
&iter,
COLUMN_TYPE, &entry_type,
COLUMN_FILE_DATA, &file_data,
-1);
load_uri (folder_tree, entry_type, file_data);
_g_object_unref (file_data);
}
gtk_tree_path_free (path);
return FALSE;
}
static gboolean
selection_changed_cb (GtkTreeSelection *selection,
gpointer user_data)
......@@ -564,18 +491,6 @@ selection_changed_cb (GtkTreeSelection *selection,
selected_path = gtk_tree_model_get_path (GTK_TREE_MODEL (folder_tree->priv->tree_store), &iter);
if ((folder_tree->priv->click_path == NULL)
|| gtk_tree_path_compare (folder_tree->priv->click_path, selected_path) != 0)
{
gtk_tree_path_free (selected_path);
return FALSE;
}
/* FIXME
gtk_tree_path_free (folder_tree->priv->click_path);
folder_tree->priv->click_path = NULL;
*/
/*if (! gtk_tree_view_row_expanded (GTK_TREE_VIEW (folder_tree), selected_path))
gtk_tree_view_expand_row (GTK_TREE_VIEW (folder_tree), selected_path, FALSE);*/
......@@ -882,10 +797,6 @@ gth_folder_tree_construct (GthFolderTree *folder_tree)
"button_press_event",
G_CALLBACK (button_press_cb),
folder_tree);
g_signal_connect (G_OBJECT (folder_tree),
"button_release_event",
G_CALLBACK (button_release_cb),
folder_tree);
g_signal_connect (G_OBJECT (folder_tree),
"row-activated",
G_CALLBACK (row_activated_cb),
......
......@@ -369,13 +369,13 @@ main (int argc, char *argv[])
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
/* command line options */
#ifdef HAVE_CLUTTER
if (gtk_clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
if (gtk_clutter_init (NULL, NULL) != CLUTTER_INIT_SUCCESS)
g_error ("Unable to initialize GtkClutter");
#endif
/* command line options */
context = g_option_context_new (N_("- Image browser and viewer"));
g_option_context_set_translation_domain (context, GETTEXT_PACKAGE);
g_option_context_add_main_entries (context, options, GETTEXT_PACKAGE);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment