summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2020-09-13 13:48:48 +0200
committerDave Davenport <qball@gmpclient.org>2020-09-13 13:48:48 +0200
commit0a3734dce467c500d83a3b52feccb9f0d9a9134c (patch)
tree2a592605b253a786593867012852af84d19cbc18
parent31fc5c9d350f752823a36196cadffbb3a28e619b (diff)
[Theme] Fix @media printing in `-dump-theme`.
-rw-r--r--source/theme.c93
1 files changed, 52 insertions, 41 deletions
diff --git a/source/theme.c b/source/theme.c
index ebaca972..c5858d62 100644
--- a/source/theme.c
+++ b/source/theme.c
@@ -464,62 +464,73 @@ static void rofi_theme_print_property_index ( size_t pnl, int depth, Property *p
putchar ( '\n' );
}
-static void rofi_theme_print_index ( ThemeWidget *widget )
+static void rofi_theme_print_index ( ThemeWidget *widget, int index )
{
GHashTableIter iter;
gpointer key, value;
- if ( widget->properties ) {
- int index = 0;
- GList *list = NULL;
- ThemeWidget *w = widget;
- while ( w ) {
- if ( g_strcmp0 ( w->name, "Root" ) == 0 ) {
- break;
- }
- list = g_list_prepend ( list, w->name );
- w = w->parent;
+
+ if ( widget->media ) {
+ printf("%s {\n", widget->name );
+ for ( unsigned int i = 0; i < widget->num_widgets; i++ ) {
+ rofi_theme_print_index ( widget->widgets[i], index+4 );
}
- if ( g_list_length ( list ) > 0 ) {
- index = 4;
- for ( GList *iter = g_list_first ( list ); iter != NULL; iter = g_list_next ( iter ) ) {
- char *name = (char *) iter->data;
- fputs ( name, stdout );
- if ( iter->prev == NULL && iter->next ) {
- putchar ( ' ' );
+ printf("}\n");
+ } else {
+ if ( widget->properties ) {
+ GList *list = NULL;
+ ThemeWidget *w = widget;
+ while ( w ) {
+ if ( g_strcmp0 ( w->name, "Root" ) == 0 ) {
+ break;
}
- else if ( iter->next ) {
- putchar ( '.' );
+ if ( w->media ) {
+ break;
}
+ list = g_list_prepend ( list, w->name );
+ w = w->parent;
}
- printf ( " {\n" );
- }
- else {
- index = 4;
- printf ( "* {\n" );
- }
- size_t property_name_length = 0;
- g_hash_table_iter_init ( &iter, widget->properties );
- while ( g_hash_table_iter_next ( &iter, &key, &value ) ) {
- Property *p = (Property *) value;
- property_name_length = MAX ( strlen ( p->name ), property_name_length );
+ if ( g_list_length ( list ) > 0 ) {
+ printf("%*s", index, "");
+ for ( GList *iter = g_list_first ( list ); iter != NULL; iter = g_list_next ( iter ) ) {
+ char *name = (char *) iter->data;
+ fputs ( name, stdout );
+ if ( iter->prev == NULL && iter->next ) {
+ putchar ( ' ' );
+ }
+ else if ( iter->next ) {
+ putchar ( '.' );
+ }
+ }
+ printf ( " {\n" );
+ }
+ else {
+ printf ( "%*s* {\n", index, "" );
+ }
+ size_t property_name_length = 0;
+ g_hash_table_iter_init ( &iter, widget->properties );
+ while ( g_hash_table_iter_next ( &iter, &key, &value ) ) {
+ Property *p = (Property *) value;
+ property_name_length = MAX ( strlen ( p->name ), property_name_length );
+ }
+ g_hash_table_iter_init ( &iter, widget->properties );
+ while ( g_hash_table_iter_next ( &iter, &key, &value ) ) {
+ Property *p = (Property *) value;
+ rofi_theme_print_property_index ( property_name_length, index+4, p );
+ }
+ printf ( "%*s}\n", index, "" );
+ g_list_free ( list );
}
- g_hash_table_iter_init ( &iter, widget->properties );
- while ( g_hash_table_iter_next ( &iter, &key, &value ) ) {
- Property *p = (Property *) value;
- rofi_theme_print_property_index ( property_name_length, index, p );
+ for ( unsigned int i = 0; i < widget->num_widgets; i++ ) {
+ rofi_theme_print_index ( widget->widgets[i], index );
}
- printf ( "}\n" );
- g_list_free ( list );
- }
- for ( unsigned int i = 0; i < widget->num_widgets; i++ ) {
- rofi_theme_print_index ( widget->widgets[i] );
}
}
+
void rofi_theme_print ( ThemeWidget *widget )
{
if ( widget != NULL ) {
printf ( "/**\n * rofi -dump-theme output.\n * Rofi version: %s\n **/\n", PACKAGE_VERSION );
- rofi_theme_print_index ( widget );
+ rofi_theme_print_index ( widget, 0 );
}
}