Commit 0bac84b2f8b66ad9e8b82fe6687ce14a97adfccd
1 parent
6125eaeb
Exists in
master
and in
1 other branch
Working on drag & drop for activity list.
Showing
3 changed files
with
21 additions
and
10 deletions
Show diff stats
src/dialogs/settingsdialog.c
... | ... | @@ -204,7 +204,7 @@ int v3270_ft_settings_dialog_append_activity(GtkWidget *widget, GObject *activit |
204 | 204 | } |
205 | 205 | |
206 | 206 | // Not found, insert it. |
207 | - v3270_activity_list_append(dialog->queue.view,activity); | |
207 | + v3270_activity_list_append(dialog->queue.view,activity,FALSE); | |
208 | 208 | |
209 | 209 | return 0; |
210 | 210 | } |
... | ... | @@ -251,7 +251,7 @@ static void insert_clicked(GtkWidget *button, V3270FTSettingsDialog *widget) |
251 | 251 | } |
252 | 252 | |
253 | 253 | // Not found, insert it. |
254 | - v3270_activity_list_append(widget->queue.view,v3270_ft_settings_create_activity(widget->settings)); | |
254 | + v3270_activity_list_append(widget->queue.view,v3270_ft_settings_create_activity(widget->settings),FALSE); | |
255 | 255 | |
256 | 256 | } |
257 | 257 | |
... | ... | @@ -440,7 +440,7 @@ static void V3270FTSettingsDialog_init(V3270FTSettingsDialog *widget) |
440 | 440 | v3270_ft_activity_set_remote_filename(activity,"remote---"); |
441 | 441 | v3270_ft_activity_set_options(activity,LIB3270_FT_OPTION_SEND|LIB3270_FT_OPTION_ASCII|LIB3270_FT_OPTION_CRLF|LIB3270_FT_OPTION_REMAP|LIB3270_FT_OPTION_APPEND|LIB3270_FT_RECORD_FORMAT_VARIABLE); |
442 | 442 | |
443 | - v3270_activity_list_append(widget->queue.view,activity); | |
443 | + v3270_activity_list_append(widget->queue.view,activity,FALSE); | |
444 | 444 | #endif // DEBUG |
445 | 445 | */ |
446 | 446 | ... | ... |
src/filetransfer/activitylist.c
... | ... | @@ -138,9 +138,9 @@ |
138 | 138 | g_object_set(G_OBJECT(cell),"text",v3270_ft_activity_get_remote_filename(activity),NULL); |
139 | 139 | } |
140 | 140 | |
141 | - gboolean v3270_activity_list_append_filename(GtkWidget *widget, const gchar *filename) | |
141 | + gboolean v3270_activity_list_append_filename(GtkWidget *widget, const gchar *filename, gboolean select) | |
142 | 142 | { |
143 | - debug("%s(%s)",__FUNCTION__,filename); | |
143 | + debug("%s(%s,%s)",__FUNCTION__,filename,select ? "SELECT" : "NO-SELECT"); | |
144 | 144 | |
145 | 145 | GtkTreeModel * model = gtk_tree_view_get_model(GTK_TREE_VIEW(widget)); |
146 | 146 | GtkTreeIter iter; |
... | ... | @@ -155,6 +155,10 @@ |
155 | 155 | if(activity && !strcmp(filename,v3270_ft_activity_get_local_filename(activity))) |
156 | 156 | { |
157 | 157 | debug("%s already in the list",filename); |
158 | + if(select) | |
159 | + { | |
160 | + gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)),&iter); | |
161 | + } | |
158 | 162 | return FALSE; |
159 | 163 | } |
160 | 164 | |
... | ... | @@ -164,7 +168,7 @@ |
164 | 168 | } |
165 | 169 | |
166 | 170 | // Append filename |
167 | - v3270_activity_list_append(widget,v3270_ft_activity_new_from_filename(filename)); | |
171 | + v3270_activity_list_append(widget,v3270_ft_activity_new_from_filename(filename),select); | |
168 | 172 | |
169 | 173 | return TRUE; |
170 | 174 | } |
... | ... | @@ -178,7 +182,7 @@ |
178 | 182 | for(ix = 0; uris[ix]; ix++) |
179 | 183 | { |
180 | 184 | if(!g_ascii_strncasecmp("file:///",uris[ix],8)) { |
181 | - if(v3270_activity_list_append_filename(widget,uris[ix]+7)) | |
185 | + if(v3270_activity_list_append_filename(widget,uris[ix]+7,TRUE)) | |
182 | 186 | rc++; |
183 | 187 | } |
184 | 188 | } |
... | ... | @@ -225,6 +229,7 @@ |
225 | 229 | 0, NULL |
226 | 230 | ); |
227 | 231 | |
232 | + gtk_tree_view_set_activate_on_single_click(GTK_TREE_VIEW(widget),TRUE); | |
228 | 233 | v3270_drag_dest_set(GTK_WIDGET(widget), G_CALLBACK(drag_data_received)); |
229 | 234 | |
230 | 235 | } |
... | ... | @@ -234,7 +239,7 @@ |
234 | 239 | return g_object_new(GTK_TYPE_V3270_FT_ACTIVITY_LIST, NULL); |
235 | 240 | } |
236 | 241 | |
237 | - void v3270_activity_list_append(GtkWidget *widget, GObject *activity) | |
242 | + void v3270_activity_list_append(GtkWidget *widget, GObject *activity, gboolean select) | |
238 | 243 | { |
239 | 244 | GtkTreeModel * model = gtk_tree_view_get_model(GTK_TREE_VIEW(widget)); |
240 | 245 | GtkTreeIter iter; |
... | ... | @@ -242,6 +247,12 @@ |
242 | 247 | gtk_list_store_set((GtkListStore *) model, &iter, 0, activity, -1); |
243 | 248 | g_object_ref_sink(activity); |
244 | 249 | |
250 | + if(select) | |
251 | + { | |
252 | + debug("%s: Selecting inserted activity",__FUNCTION__); | |
253 | + gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)),&iter); | |
254 | + } | |
255 | + | |
245 | 256 | } |
246 | 257 | |
247 | 258 | void v3270_activity_list_remove(GtkWidget *widget, GObject *activity) |
... | ... | @@ -283,7 +294,7 @@ |
283 | 294 | // Create new activity |
284 | 295 | GObject * activity = v3270_ft_activity_new(); |
285 | 296 | v3270_ft_activity_set_from_context(activity,context); |
286 | - v3270_activity_list_append(GTK_WIDGET(widget), activity); | |
297 | + v3270_activity_list_append(GTK_WIDGET(widget), activity, FALSE); | |
287 | 298 | } |
288 | 299 | |
289 | 300 | } | ... | ... |
src/include/internals.h
... | ... | @@ -74,7 +74,7 @@ |
74 | 74 | typedef struct _V3270FTActivityListClass V3270FTActivityListClass; |
75 | 75 | |
76 | 76 | G_GNUC_INTERNAL GtkWidget * v3270_activity_list_new(); |
77 | - G_GNUC_INTERNAL void v3270_activity_list_append(GtkWidget *widget, GObject *activity); | |
77 | + G_GNUC_INTERNAL void v3270_activity_list_append(GtkWidget *widget, GObject *activity, gboolean select); | |
78 | 78 | G_GNUC_INTERNAL void v3270_activity_list_remove(GtkWidget *widget, GObject *activity); |
79 | 79 | G_GNUC_INTERNAL void v3270_activity_list_load(GtkWidget *widget); |
80 | 80 | G_GNUC_INTERNAL void v3270_activity_list_save(GtkWidget *widget); | ... | ... |