@@ -188,6 +188,19 @@ workspacegroupview_pick_rowview(Workspacegroupview *wsgview,
188188 return columnview_find_rowview (cview , x , y );
189189}
190190
191+ static void *
192+ workspacegroupview_add_column_item (Column * col , void * user_data )
193+ {
194+ GMenu * columns = G_MENU (user_data );
195+
196+ GMenuItem * item = g_menu_item_new (IOBJECT (col )-> name , NULL );
197+ GVariant * target = g_variant_new_string (IOBJECT (col )-> name );
198+ g_menu_item_set_action_and_target_value (item , "win.column-merge" , target );
199+ g_menu_append_item (columns , item );
200+
201+ return NULL ;
202+ }
203+
191204static void
192205workspacegroupview_background_menu (GtkGestureClick * gesture ,
193206 guint n_press , double x , double y , void * user_data )
@@ -207,6 +220,15 @@ workspacegroupview_background_menu(GtkGestureClick *gesture,
207220 if ((cview = workspacegroupview_pick_columnview_title (wsgview , x , y ))) {
208221 mainwindow_set_action_view (VIEW (cview ));
209222 menu = wsgview -> column_menu ;
223+
224+ // generate the dynamic column submenu
225+ GMenu * columns = g_menu_new ();
226+ workspace_map_column (ws , workspacegroupview_add_column_item , columns );
227+ GMenu * column_menu = wsgview -> workspacegroup_column_menu ;
228+ g_menu_remove (column_menu , 1 );
229+ g_menu_insert_submenu (column_menu , 1 , "Merge column" ,
230+ G_MENU_MODEL (columns ));
231+
210232 }
211233 else if ((rview = workspacegroupview_pick_rowview (wsgview , x , y ))) {
212234 mainwindow_set_action_view (VIEW (rview ));
@@ -236,6 +258,7 @@ workspacegroupview_class_init(WorkspacegroupviewClass *class)
236258 BIND_VARIABLE (Workspacegroupview , notebook );
237259 BIND_VARIABLE (Workspacegroupview , workspace_menu );
238260 BIND_VARIABLE (Workspacegroupview , column_menu );
261+ BIND_VARIABLE (Workspacegroupview , workspacegroup_column_menu );
239262 BIND_VARIABLE (Workspacegroupview , row_menu );
240263
241264 BIND_CALLBACK (workspacegroupview_new_tab_clicked );
0 commit comments