From e7b18d3a88ba754738919883cf70f498654432ee Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Tue, 9 Feb 2016 07:37:48 +0100 Subject: [PATCH] Issue: #334: Only allow markup-rows to be set on cmdline This should avoid people setting this in XResrouces and breaking random dmenu scripts. --- config/config.def.c | 1 - include/settings.h | 2 -- source/dialogs/dmenu.c | 8 ++++++++ source/rofi.c | 12 ++---------- source/textbox.c | 2 +- source/xrmoptions.c | 1 - 6 files changed, 11 insertions(+), 15 deletions(-) diff --git a/config/config.def.c b/config/config.def.c index 8023cd8f..e06eefff 100644 --- a/config/config.def.c +++ b/config/config.def.c @@ -144,7 +144,6 @@ Settings config = { .separator_style = "dash", /** Hide scrollbar */ .hide_scrollbar = FALSE, - .markup_rows = FALSE, .fullscreen = FALSE, .fake_transparency = FALSE, .dpi = -1, diff --git a/include/settings.h b/include/settings.h index fb68a713..a6e3eddf 100644 --- a/include/settings.h +++ b/include/settings.h @@ -140,8 +140,6 @@ typedef struct _Settings char *separator_style; /** hide scrollbar */ unsigned int hide_scrollbar; - /** show markup in elements. */ - unsigned int markup_rows; /** fullscreen */ unsigned int fullscreen; /** bg image */ diff --git a/source/dialogs/dmenu.c b/source/dialogs/dmenu.c index 9d6cdc3e..523ba0cb 100644 --- a/source/dialogs/dmenu.c +++ b/source/dialogs/dmenu.c @@ -64,6 +64,7 @@ typedef struct _DmenuModePrivateData unsigned int num_active_list; struct range_pair * selected_list; unsigned int num_selected_list; + unsigned int do_markup; // List with entries. char **cmd_list; unsigned int cmd_list_length; @@ -171,6 +172,9 @@ static char *get_display_data ( const Mode *data, unsigned int index, int *state *state |= SELECTED; } } + if ( pd->do_markup ) { + *state |= MARKUP; + } return get_entry ? g_strdup ( retv[index] ) : NULL; } @@ -361,6 +365,9 @@ int dmenu_switcher_dialog ( void ) char **cmd_list = pd->cmd_list; int only_selected = FALSE; + if ( find_arg ( "-markup-rows" ) >= 0 ) { + pd->do_markup = TRUE; + } if ( find_arg ( "-only-match" ) >= 0 || find_arg ( "-no-custom" ) >= 0 ) { only_selected = TRUE; if ( cmd_list_length == 0 ) { @@ -519,4 +526,5 @@ void print_dmenu_options ( void ) print_help_msg ( "-no-custom", "", "Don't accept custom entry", NULL, is_term ); print_help_msg ( "-select", "[string]", "Select the first row that matches", NULL, is_term ); print_help_msg ( "-password", "", "Do not show what the user inputs. Show '*' instead.", NULL, is_term ); + print_help_msg ( "-markup-rows", "", "Allow and render pango markup as input data.", NULL, is_term ); } diff --git a/source/rofi.c b/source/rofi.c index 45389f0a..0a1f0d13 100644 --- a/source/rofi.c +++ b/source/rofi.c @@ -1217,13 +1217,9 @@ static void menu_resize ( MenuState *state ) int y_offset = state->top_offset; int x_offset = state->border; - int rstate = 0; - if ( config.markup_rows ) { - rstate = TB_MARKUP; - } // Add newly added boxes. for ( unsigned int i = last_length; i < state->max_elements; i++ ) { - state->boxes[i] = textbox_create ( rstate, x_offset, y_offset, + state->boxes[i] = textbox_create ( 0, x_offset, y_offset, state->element_width, element_height, NORMAL, "" ); } scrollbar_resize ( state->scrollbar, -1, ( state->max_rows ) * ( element_height ) - config.line_margin ); @@ -1591,12 +1587,8 @@ MenuState *menu ( Mode *sw, int y_offset = state->top_offset; int x_offset = state->border; - int rstate = 0; - if ( config.markup_rows ) { - rstate = TB_MARKUP; - } for ( unsigned int i = 0; i < state->max_elements; i++ ) { - state->boxes[i] = textbox_create ( rstate, x_offset, y_offset, + state->boxes[i] = textbox_create ( 0, x_offset, y_offset, state->element_width, element_height, NORMAL, "" ); } if ( !config.hide_scrollbar ) { diff --git a/source/textbox.c b/source/textbox.c index 6a2ee40e..73cbfea8 100644 --- a/source/textbox.c +++ b/source/textbox.c @@ -140,7 +140,7 @@ static void __textbox_update_pango_text ( textbox *tb ) pango_layout_set_attributes ( tb->layout, NULL ); pango_layout_set_text ( tb->layout, string, l ); } - else if ( tb->flags & TB_MARKUP || tb->tbft & MARKUP ) { + else if ( tb->tbft & MARKUP ) { pango_layout_set_markup ( tb->layout, tb->text, -1 ); } else { diff --git a/source/xrmoptions.c b/source/xrmoptions.c index 193a8e4a..e02ed530 100644 --- a/source/xrmoptions.c +++ b/source/xrmoptions.c @@ -134,7 +134,6 @@ static XrmOption xrmOptions[] = { { xrm_String, "filter", { .str = &config.filter }, NULL, "Pre-set filter" }, { xrm_String, "separator-style", { .str = &config.separator_style }, NULL, "Separator style (none, dash, solid)" }, { xrm_Boolean, "hide-scrollbar", { .num = &config.hide_scrollbar }, NULL, "Hide scroll-bar" }, - { xrm_Boolean, "markup-rows", { .num = &config.markup_rows }, NULL, "Show markup" }, { xrm_Boolean, "fullscreen", { .num = &config.fullscreen }, NULL, "Fullscreen" }, { xrm_Boolean, "fake-transparency", { .num = &config.fake_transparency }, NULL, "Fake transparency" }, { xrm_SNumber, "dpi", { .snum = &config.dpi }, NULL, "DPI" },