comparison src/view_dir.c @ 396:a01535f52b56

Merge few more functions to view_dir.c.
author zas_
date Thu, 17 Apr 2008 17:19:41 +0000
parents c359fc2c5a1f
children a7be56e84870
comparison
equal deleted inserted replaced
395:c359fc2c5a1f 396:a01535f52b56
130 } 130 }
131 131
132 return ret; 132 return ret;
133 } 133 }
134 134
135 void vd_select_row(ViewDir *vd, FileData *fd)
136 {
137 switch(vd->type)
138 {
139 case DIRVIEW_LIST: vdlist_select_row(vd, fd); break;
140 case DIRVIEW_TREE: vdtree_select_row(vd, fd); break;
141 }
142 }
143
135 gint vd_find_row(ViewDir *vd, FileData *fd, GtkTreeIter *iter) 144 gint vd_find_row(ViewDir *vd, FileData *fd, GtkTreeIter *iter)
136 { 145 {
137 gint ret = FALSE; 146 gint ret = FALSE;
138 147
139 switch(vd->type) 148 switch(vd->type)
870 gtk_tree_path_free(tpath); 879 gtk_tree_path_free(tpath);
871 *y += ch; 880 *y += ch;
872 popup_menu_position_clamp(menu, x, y, 0); 881 popup_menu_position_clamp(menu, x, y, 0);
873 } 882 }
874 883
884 void vd_activate_cb(GtkTreeView *tview, GtkTreePath *tpath, GtkTreeViewColumn *column, gpointer data)
885 {
886 ViewDir *vd = data;
887 GtkTreeModel *store;
888 GtkTreeIter iter;
889 FileData *fd;
890
891 store = gtk_tree_view_get_model(tview);
892 gtk_tree_model_get_iter(store, &iter, tpath);
893 switch (vd->type)
894 {
895 case DIRVIEW_LIST:
896 gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &fd, -1);
897 break;
898 case DIRVIEW_TREE:
899 {
900 NodeData *nd;
901 gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &nd, -1);
902 fd = (nd) ? nd->fd : NULL;
903 };
904 break;
905 }
906
907 vd_select_row(vd, fd);
908 }
909
910 static GdkColor *vd_color_shifted(GtkWidget *widget)
911 {
912 static GdkColor color;
913 static GtkWidget *done = NULL;
914
915 if (done != widget)
916 {
917 GtkStyle *style;
918
919 style = gtk_widget_get_style(widget);
920 memcpy(&color, &style->base[GTK_STATE_NORMAL], sizeof(color));
921 shift_color(&color, -1, 0);
922 done = widget;
923 }
924
925 return &color;
926 }
927
928 void vd_color_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
929 GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
930 {
931 ViewDir *vd = data;
932 gboolean set;
933
934 gtk_tree_model_get(tree_model, iter, DIR_COLUMN_COLOR, &set, -1);
935 g_object_set(G_OBJECT(cell),
936 "cell-background-gdk", vd_color_shifted(vd->view),
937 "cell-background-set", set, NULL);
938 }
939