Possible fix issue #175

This commit is contained in:
Qball Cow 2015-06-09 18:10:23 +02:00
parent 95beb58730
commit e5caaf9d1a
2 changed files with 25 additions and 24 deletions

View File

@ -25,13 +25,13 @@ typedef struct
typedef enum typedef enum
{ {
TB_AUTOHEIGHT = 1 << 0, TB_AUTOHEIGHT = 1 << 0,
TB_AUTOWIDTH = 1 << 1, TB_AUTOWIDTH = 1 << 1,
TB_LEFT = 1 << 16, TB_LEFT = 1 << 16,
TB_RIGHT = 1 << 17, TB_RIGHT = 1 << 17,
TB_CENTER = 1 << 18, TB_CENTER = 1 << 18,
TB_EDITABLE = 1 << 19, TB_EDITABLE = 1 << 19,
TB_MARKUP = 1 << 20, TB_MARKUP = 1 << 20,
} TextboxFlags; } TextboxFlags;

View File

@ -262,30 +262,31 @@ int dmenu_switcher_dialog ( char **input )
} }
// We normally do not want to restart the loop. // We normally do not want to restart the loop.
restart = FALSE; restart = FALSE;
if ( ( mretv & ( MENU_OK | MENU_CUSTOM_INPUT ) ) && list[selected_line] != NULL ) { // Normal mode
if ( ( mretv & MENU_CUSTOM_INPUT ) ) { if ( ( mretv & MENU_OK ) && list[selected_line] != NULL ) {
dmenu_output_formatted_line ( format, *input, -1, *input ); dmenu_output_formatted_line ( format, list[selected_line], selected_line, *input );
}
else{
dmenu_output_formatted_line ( format, list[selected_line], selected_line, *input );
}
if ( ( mretv & MENU_SHIFT ) ) { if ( ( mretv & MENU_SHIFT ) ) {
restart = TRUE; restart = TRUE;
// Move to next line. // Move to next line.
selected_line = MIN ( next_pos, length - 1 ); selected_line = MIN ( next_pos, length - 1 );
} }
retv = TRUE; retv = TRUE;
if ( ( mretv & MENU_QUICK_SWITCH ) ) { // Custom input
retv = 10 + ( mretv & MENU_LOWER_MASK );
}
} }
else if ( ( mretv & MENU_QUICK_SWITCH ) ) { else if ( ( mretv & ( MENU_CUSTOM_INPUT ) ) ) {
if ( ( mretv & MENU_CUSTOM_INPUT ) ) { dmenu_output_formatted_line ( format, *input, -1, *input );
dmenu_output_formatted_line ( format, *input, -1, *input ); retv = TRUE;
} }
else{ // Quick switch with entry selected.
dmenu_output_formatted_line ( format, list[selected_line], selected_line, *input ); else if ( ( mretv & MENU_QUICK_SWITCH ) && selected_line > 0 ) {
} dmenu_output_formatted_line ( format, list[selected_line], selected_line, *input );
restart = FALSE;
retv = 10 + ( mretv & MENU_LOWER_MASK );
}
// Quick switch without entry selected.
else if ( ( mretv & MENU_QUICK_SWITCH ) && selected_line == -1 ) {
dmenu_output_formatted_line ( format, *input, -1, *input );
restart = FALSE; restart = FALSE;
retv = 10 + ( mretv & MENU_LOWER_MASK ); retv = 10 + ( mretv & MENU_LOWER_MASK );