29
29
#ifdef HAVE_CONFIG_H
30
30
#include "config.h"
31
31
#endif
32
+ #include <project.h>
32
33
33
34
#include "wb_globals.h"
34
35
#include "dialogs.h"
@@ -42,6 +43,7 @@ static struct
42
43
43
44
GtkWidget * add_project ;
44
45
GtkWidget * remove_project ;
46
+ GtkWidget * project_toggle_select ;
45
47
GtkWidget * fold_unfold_project ;
46
48
GtkWidget * project_open_all ;
47
49
GtkWidget * project_close_all ;
@@ -81,6 +83,11 @@ void popup_menu_show(POPUP_CONTEXT context, GdkEventButton *event)
81
83
case POPUP_CONTEXT_PROJECT :
82
84
gtk_widget_set_sensitive (s_popup_menu .add_project , TRUE);
83
85
gtk_widget_set_sensitive (s_popup_menu .remove_project , TRUE);
86
+ #if GEANY_API_VERSION >= 240
87
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , TRUE);
88
+ #else
89
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , FALSE);
90
+ #endif
84
91
gtk_widget_set_sensitive (s_popup_menu .fold_unfold_project , TRUE);
85
92
gtk_widget_set_sensitive (s_popup_menu .project_open_all , TRUE);
86
93
gtk_widget_set_sensitive (s_popup_menu .project_close_all , TRUE);
@@ -103,6 +110,11 @@ void popup_menu_show(POPUP_CONTEXT context, GdkEventButton *event)
103
110
case POPUP_CONTEXT_DIRECTORY :
104
111
gtk_widget_set_sensitive (s_popup_menu .add_project , TRUE);
105
112
gtk_widget_set_sensitive (s_popup_menu .remove_project , TRUE);
113
+ #if GEANY_API_VERSION >= 240
114
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , TRUE);
115
+ #else
116
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , FALSE);
117
+ #endif
106
118
gtk_widget_set_sensitive (s_popup_menu .fold_unfold_project , TRUE);
107
119
gtk_widget_set_sensitive (s_popup_menu .project_open_all , TRUE);
108
120
gtk_widget_set_sensitive (s_popup_menu .project_close_all , TRUE);
@@ -125,6 +137,11 @@ void popup_menu_show(POPUP_CONTEXT context, GdkEventButton *event)
125
137
case POPUP_CONTEXT_SUB_DIRECTORY :
126
138
gtk_widget_set_sensitive (s_popup_menu .add_project , TRUE);
127
139
gtk_widget_set_sensitive (s_popup_menu .remove_project , TRUE);
140
+ #if GEANY_API_VERSION >= 240
141
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , TRUE);
142
+ #else
143
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , FALSE);
144
+ #endif
128
145
gtk_widget_set_sensitive (s_popup_menu .fold_unfold_project , TRUE);
129
146
gtk_widget_set_sensitive (s_popup_menu .project_open_all , TRUE);
130
147
gtk_widget_set_sensitive (s_popup_menu .project_close_all , TRUE);
@@ -147,6 +164,11 @@ void popup_menu_show(POPUP_CONTEXT context, GdkEventButton *event)
147
164
case POPUP_CONTEXT_FILE :
148
165
gtk_widget_set_sensitive (s_popup_menu .add_project , TRUE);
149
166
gtk_widget_set_sensitive (s_popup_menu .remove_project , TRUE);
167
+ #if GEANY_API_VERSION >= 240
168
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , TRUE);
169
+ #else
170
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , FALSE);
171
+ #endif
150
172
gtk_widget_set_sensitive (s_popup_menu .fold_unfold_project , TRUE);
151
173
gtk_widget_set_sensitive (s_popup_menu .project_open_all , TRUE);
152
174
gtk_widget_set_sensitive (s_popup_menu .project_close_all , TRUE);
@@ -169,6 +191,7 @@ void popup_menu_show(POPUP_CONTEXT context, GdkEventButton *event)
169
191
case POPUP_CONTEXT_BACKGROUND :
170
192
gtk_widget_set_sensitive (s_popup_menu .add_project , TRUE);
171
193
gtk_widget_set_sensitive (s_popup_menu .remove_project , FALSE);
194
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , FALSE);
172
195
gtk_widget_set_sensitive (s_popup_menu .fold_unfold_project , FALSE);
173
196
gtk_widget_set_sensitive (s_popup_menu .project_open_all , FALSE);
174
197
gtk_widget_set_sensitive (s_popup_menu .project_close_all , FALSE);
@@ -191,6 +214,7 @@ void popup_menu_show(POPUP_CONTEXT context, GdkEventButton *event)
191
214
case POPUP_CONTEXT_WB_BOOKMARK :
192
215
gtk_widget_set_sensitive (s_popup_menu .add_project , TRUE);
193
216
gtk_widget_set_sensitive (s_popup_menu .remove_project , FALSE);
217
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , FALSE);
194
218
gtk_widget_set_sensitive (s_popup_menu .fold_unfold_project , FALSE);
195
219
gtk_widget_set_sensitive (s_popup_menu .project_open_all , FALSE);
196
220
gtk_widget_set_sensitive (s_popup_menu .project_close_all , FALSE);
@@ -213,6 +237,11 @@ void popup_menu_show(POPUP_CONTEXT context, GdkEventButton *event)
213
237
case POPUP_CONTEXT_PRJ_BOOKMARK :
214
238
gtk_widget_set_sensitive (s_popup_menu .add_project , TRUE);
215
239
gtk_widget_set_sensitive (s_popup_menu .remove_project , TRUE);
240
+ #if GEANY_API_VERSION >= 240
241
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , TRUE);
242
+ #else
243
+ gtk_widget_set_sensitive (s_popup_menu .project_toggle_select , FALSE);
244
+ #endif
216
245
gtk_widget_set_sensitive (s_popup_menu .fold_unfold_project , TRUE);
217
246
gtk_widget_set_sensitive (s_popup_menu .project_open_all , TRUE);
218
247
gtk_widget_set_sensitive (s_popup_menu .project_close_all , TRUE);
@@ -317,6 +346,28 @@ static void popup_menu_on_remove_project(G_GNUC_UNUSED GtkMenuItem *menuitem, G_
317
346
}
318
347
319
348
349
+ /* Handle popup menu item "Select/Unselect project" */
350
+ #if GEANY_API_VERSION >= 240
351
+ static void popup_menu_on_toggle_selected_project (G_GNUC_UNUSED GtkMenuItem * menuitem , G_GNUC_UNUSED gpointer user_data )
352
+ {
353
+ WB_PROJECT * project ;
354
+
355
+ project = sidebar_file_view_get_selected_project (NULL );
356
+ if (project != NULL && wb_globals .opened_wb != NULL )
357
+ {
358
+ if (workbench_get_selected_project (wb_globals .opened_wb ) != project )
359
+ {
360
+ workbench_open_project (wb_globals .opened_wb , project , TRUE);
361
+ }
362
+ else
363
+ {
364
+ workbench_open_project (wb_globals .opened_wb , NULL , TRUE);
365
+ }
366
+ }
367
+ }
368
+ #endif
369
+
370
+
320
371
/* Handle popup menu item "Expand all" */
321
372
static void popup_menu_on_expand_all (G_GNUC_UNUSED GtkMenuItem * menuitem , G_GNUC_UNUSED gpointer user_data )
322
373
{
@@ -819,6 +870,14 @@ void popup_menu_init(void)
819
870
g_signal_connect (item , "activate" , G_CALLBACK (popup_menu_on_remove_project ), NULL );
820
871
s_popup_menu .remove_project = item ;
821
872
873
+ item = gtk_menu_item_new_with_mnemonic (_ ("_Select/Unselect project" ));
874
+ gtk_widget_show (item );
875
+ gtk_container_add (GTK_CONTAINER (s_popup_menu .widget ), item );
876
+ #if GEANY_API_VERSION >= 240
877
+ g_signal_connect (item , "activate" , G_CALLBACK (popup_menu_on_toggle_selected_project ), NULL );
878
+ #endif
879
+ s_popup_menu .project_toggle_select = item ;
880
+
822
881
item = gtk_menu_item_new_with_mnemonic (_ ("_Fold/unfold project" ));
823
882
gtk_widget_show (item );
824
883
gtk_container_add (GTK_CONTAINER (s_popup_menu .widget ), item );
0 commit comments