@ -103,6 +103,8 @@ static void free_config(struct sway_config *config) {
free_output_config ( config - > output_configs - > items [ i ] ) ;
}
list_free ( config - > output_configs ) ;
list_free ( config - > active_bar_modifiers ) ;
free ( config ) ;
}
@ -145,6 +147,33 @@ static void config_defaults(struct sway_config *config) {
config - > edge_gaps = true ;
config - > gaps_inner = 0 ;
config - > gaps_outer = 0 ;
config - > active_bar_modifiers = create_list ( ) ;
}
static int compare_modifiers ( const void * left , const void * right ) {
uint32_t a = * ( uint32_t * ) left ;
uint32_t b = * ( uint32_t * ) right ;
return a - b ;
}
void update_active_bar_modifiers ( ) {
if ( config - > active_bar_modifiers - > length > 0 ) {
list_free ( config - > active_bar_modifiers ) ;
config - > active_bar_modifiers = create_list ( ) ;
}
struct bar_config * bar ;
int i ;
for ( i = 0 ; i < config - > bars - > length ; + + i ) {
bar = config - > bars - > items [ i ] ;
if ( strcmp ( bar - > mode , " hide " ) = = 0 & & strcmp ( bar - > hidden_state , " hide " ) = = 0 ) {
if ( list_seq_find ( config - > active_bar_modifiers , compare_modifiers , & bar - > modifier ) < 0 ) {
list_add ( config - > active_bar_modifiers , & bar - > modifier ) ;
}
}
}
}
static char * get_config_path ( void ) {
@ -215,6 +244,8 @@ bool load_config(const char *file) {
}
fclose ( f ) ;
update_active_bar_modifiers ( ) ;
return config_load_success ;
}