-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi all,
I noticed that the Keywords module (LT mode) did not provide scrolling capabilities other than navigating with the keyboard, so I made what I think were the necessary changes (see attached). While it works for me so far, I would very much welcome others to have a close look at the code before it gets merged into master (which I believe should happen for 1.1 still). I'm still only starting to get into DT's code, so please be gentle with your critique :-) Jens -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://www.enigmail.net/ iEYEARECAAYFAlB9uisACgkQbyTZFOIr/d0jCQCgyn4Liibhf9BLnPSfUHNQRIyP Y3YAnA9+I+rdAMTEAwG8kfeY1RVK9E1P =KXP8 -----END PGP SIGNATURE-----
>From 53a5b688fc56eb920db0907817ca738a4e2a2b23 Mon Sep 17 00:00:00 2001 From: Jens Fendler <[email protected]> Date: Tue, 16 Oct 2012 21:41:23 +0200 Subject: [PATCH 2/2] Added scrolling capabilities for keyword tree --- src/libs/keywords.c | 38 ++++++++++++++++++++++---------------- 1 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/libs/keywords.c b/src/libs/keywords.c index 197a291..fa0d8b6 100644 --- a/src/libs/keywords.c +++ b/src/libs/keywords.c @@ -28,7 +28,8 @@ DT_MODULE(1) typedef struct dt_lib_keywords_t { GtkTreeStore *store; - GtkTreeView *view; + GtkTreeView *treeview; + GtkScrolledWindow *scrolledwindow; } dt_lib_keywords_t; @@ -176,43 +177,48 @@ void gui_init(dt_lib_module_t *self) /* add the treeview to show hirarchy tags*/ GtkCellRenderer *renderer; - d->view = GTK_TREE_VIEW (gtk_tree_view_new()); - gtk_widget_set_size_request(GTK_WIDGET(d->view), -1, 300); + + d->treeview = GTK_TREE_VIEW (gtk_tree_view_new()); + d->scrolledwindow = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL, NULL)); + gtk_container_add(GTK_CONTAINER(d->scrolledwindow), GTK_WIDGET(d->treeview)); + gtk_scrolled_window_set_policy(d->scrolledwindow, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + + gtk_widget_set_size_request(GTK_WIDGET(d->treeview), -1, 300); renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes(d->view, + gtk_tree_view_insert_column_with_attributes(d->treeview, -1, "", renderer, "text", 0, NULL); - gtk_tree_view_set_headers_visible(d->view, FALSE); + gtk_tree_view_set_headers_visible(d->treeview, FALSE); - gtk_tree_view_set_model(d->view, GTK_TREE_MODEL(store)); + gtk_tree_view_set_model(d->treeview, GTK_TREE_MODEL(store)); /* setup dnd source and destination within treeview */ static const GtkTargetEntry dnd_target = { "keywords-reorganize", GTK_TARGET_SAME_WIDGET, 0 }; - gtk_tree_view_enable_model_drag_source(d->view, + gtk_tree_view_enable_model_drag_source(d->treeview, GDK_BUTTON1_MASK, &dnd_target, 1, GDK_ACTION_MOVE); - gtk_tree_view_enable_model_drag_dest(d->view, &dnd_target, 1, GDK_ACTION_MOVE); + gtk_tree_view_enable_model_drag_dest(d->treeview, &dnd_target, 1, GDK_ACTION_MOVE); /* setup drag and drop signals */ - g_signal_connect(G_OBJECT(d->view),"drag-data-received", + g_signal_connect(G_OBJECT(d->treeview),"drag-data-received", G_CALLBACK(_lib_keywords_drag_data_received_callback), self); - g_signal_connect(G_OBJECT(d->view),"drag-data-get", + g_signal_connect(G_OBJECT(d->treeview),"drag-data-get", G_CALLBACK(_lib_keywords_drag_data_get_callback), self); /* add callback when keyword is activated */ - g_signal_connect(G_OBJECT(d->view), "row-activated", + g_signal_connect(G_OBJECT(d->treeview), "row-activated", G_CALLBACK(_lib_keywords_add_collection_rule), self); @@ -220,9 +226,9 @@ void gui_init(dt_lib_module_t *self) /* free store, treeview has its own storage now */ g_object_unref(store); - gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(d->view), TRUE,FALSE,0); + gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(d->scrolledwindow), TRUE,FALSE,0); - gtk_widget_show_all(GTK_WIDGET(d->view)); + gtk_widget_show_all(GTK_WIDGET(d->scrolledwindow)); } @@ -276,7 +282,7 @@ static void _lib_keywords_drag_data_get_callback(GtkWidget *w, /* get iter of item to drag to ssetup drag data */ GtkTreeIter iter; GtkTreeModel *model = NULL; - GtkTreeSelection *s = gtk_tree_view_get_selection(d->view); + GtkTreeSelection *s = gtk_tree_view_get_selection(d->treeview); if (gtk_tree_selection_get_selected(s,&model,&iter)) { @@ -362,11 +368,11 @@ static void _lib_keywords_drag_data_received_callback(GtkWidget *w, GtkTreePath *dpath; GtkTreeViewDropPosition dpos; - GtkTreeModel *model = gtk_tree_view_get_model(d->view); + GtkTreeModel *model = gtk_tree_view_get_model(d->treeview); if (data->format == 8) { - if (gtk_tree_view_get_dest_row_at_pos(d->view, x, y, &dpath, &dpos)) + if (gtk_tree_view_get_dest_row_at_pos(d->treeview, x, y, &dpath, &dpos)) { /* fetch tree iter of source and dest dnd operation */ GtkTreePath *spath = gtk_tree_path_new_from_string((char *)data->data); -- 1.7.5.4
0002-Added-scrolling-capabilities-for-keyword-tree.patch.sig
Description: Binary data
------------------------------------------------------------------------------ Don't let slow site performance ruin your business. Deploy New Relic APM Deploy New Relic app performance management and know exactly what is happening inside your Ruby, Python, PHP, Java, and .NET app Try New Relic at no cost today and get our sweet Data Nerd shirt too! http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________ darktable-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/darktable-devel
