diff --git a/include/action-prompt-command.h b/include/action-prompt-command.h deleted file mode 100644 index 219896b9..00000000 --- a/include/action-prompt-command.h +++ /dev/null @@ -1,12 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -#ifndef LABWC_ACTION_PROMPT_COMMAND_H -#define LABWC_ACTION_PROMPT_COMMAND_H - -struct buf; -struct action; -struct theme; - -void action_prompt_command(struct buf *buf, const char *format, - struct action *action, struct theme *theme); - -#endif /* LABWC_ACTION_PROMPT_COMMAND_H */ diff --git a/meson.build b/meson.build index d3ba14da..335bf629 100644 --- a/meson.build +++ b/meson.build @@ -127,7 +127,9 @@ conf_data.set10('HAVE_RSVG', have_rsvg) conf_data.set10('HAVE_LIBSFDO', have_libsfdo) foreach sym : ['LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY', 'LIBINPUT_CONFIG_3FG_DRAG_ENABLED_3FG'] - conf_data.set10('HAVE_' + sym, cc.has_header_symbol('libinput.h', sym, dependencies: input)) + has_sym = input.type_name() != 'internal' \ + and cc.has_header_symbol('libinput.h', sym, dependencies: input) + conf_data.set10('HAVE_' + sym, has_sym) endforeach if get_option('static_analyzer').enabled() diff --git a/src/action-prompt-command.c b/src/action-prompt-command.c deleted file mode 100644 index faad41c9..00000000 --- a/src/action-prompt-command.c +++ /dev/null @@ -1,108 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -#define _POSIX_C_SOURCE 200809L -#include "action-prompt-command.h" -#include -#include -#include "action.h" -#include "common/buf.h" -#include "theme.h" -#include "translate.h" - -enum { - LAB_PROMPT_NONE = 0, - LAB_PROMPT_MESSAGE, - LAB_PROMPT_NO, - LAB_PROMPT_YES, - LAB_PROMPT_BG_COL, - LAB_PROMPT_TEXT_COL, - - LAB_PROMPT_COUNT -}; - -typedef void field_conversion_type(struct buf *buf, struct action *action, - struct theme *theme); - -struct field_converter { - const char fmt_char; - field_conversion_type *fn; -}; - -/* %m */ -static void -set_message(struct buf *buf, struct action *action, struct theme *theme) -{ - buf_add(buf, action_get_str(action, "message.prompt", "Choose wisely")); -} - -/* %n */ -static void -set_no(struct buf *buf, struct action *action, struct theme *theme) -{ - buf_add(buf, _("No")); -} - -/* %y */ -static void -set_yes(struct buf *buf, struct action *action, struct theme *theme) -{ - buf_add(buf, _("Yes")); -} - -/* %b */ -static void -set_bg_col(struct buf *buf, struct action *action, struct theme *theme) -{ - buf_add_hex_color(buf, theme->osd_bg_color); -} - -/* %t */ -static void -set_text_col(struct buf *buf, struct action *action, struct theme *theme) -{ - buf_add_hex_color(buf, theme->osd_label_text_color); -} - -static const struct field_converter field_converter[LAB_PROMPT_COUNT] = { - [LAB_PROMPT_MESSAGE] = { 'm', set_message }, - [LAB_PROMPT_NO] = { 'n', set_no }, - [LAB_PROMPT_YES] = { 'y', set_yes }, - [LAB_PROMPT_BG_COL] = { 'b', set_bg_col }, - [LAB_PROMPT_TEXT_COL] = { 't', set_text_col }, -}; - -void -action_prompt_command(struct buf *buf, const char *format, - struct action *action, struct theme *theme) -{ - if (!format) { - wlr_log(WLR_ERROR, "missing format"); - return; - } - - for (const char *p = format; *p; p++) { - /* - * If we're not on a conversion specifier (like %m) then just - * keep adding it to the buffer - */ - if (*p != '%') { - buf_add_char(buf, *p); - continue; - } - - /* Process the %* conversion specifier */ - ++p; - - bool found = false; - for (unsigned char i = 0; i < LAB_PROMPT_COUNT; i++) { - if (*p == field_converter[i].fmt_char) { - field_converter[i].fn(buf, action, theme); - found = true; - break; - } - } - if (!found) { - wlr_log(WLR_ERROR, - "invalid prompt command conversion specifier '%c'", *p); - } - } -} diff --git a/src/action.c b/src/action.c index 9a5623ff..a78b01e8 100644 --- a/src/action.c +++ b/src/action.c @@ -10,7 +10,6 @@ #include #include #include "action-prompt-codes.h" -#include "action-prompt-command.h" #include "common/buf.h" #include "common/macros.h" #include "common/list.h" @@ -30,6 +29,7 @@ #include "regions.h" #include "ssd.h" #include "theme.h" +#include "translate.h" #include "view.h" #include "workspaces.h" @@ -831,11 +831,55 @@ handle_view_destroy(struct wl_listener *listener, void *data) prompt->view = NULL; } +static void +print_prompt_command(struct buf *buf, const char *format, + struct action *action, struct theme *theme) +{ + assert(format); + + for (const char *p = format; *p; p++) { + /* + * If we're not on a conversion specifier (like %m) then just + * keep adding it to the buffer + */ + if (*p != '%') { + buf_add_char(buf, *p); + continue; + } + + /* Process the %* conversion specifier */ + ++p; + + switch (*p) { + case 'm': + buf_add(buf, action_get_str(action, + "message.prompt", "Choose wisely")); + break; + case 'n': + buf_add(buf, _("No")); + break; + case 'y': + buf_add(buf, _("Yes")); + break; + case 'b': + buf_add_hex_color(buf, theme->osd_bg_color); + break; + case 't': + buf_add_hex_color(buf, theme->osd_label_text_color); + break; + default: + wlr_log(WLR_ERROR, + "invalid prompt command conversion specifier '%c'", *p); + break; + } + } +} + static void action_prompt_create(struct view *view, struct server *server, struct action *action) { struct buf command = BUF_INIT; - action_prompt_command(&command, rc.prompt_command, action, rc.theme); + print_prompt_command(&command, rc.prompt_command, action, rc.theme); wlr_log(WLR_INFO, "prompt command: '%s'", command.data); diff --git a/src/meson.build b/src/meson.build index dc760f0c..330b5daf 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,6 +1,5 @@ labwc_sources = files( 'action.c', - 'action-prompt-command.c', 'buffer.c', 'debug.c', 'desktop.c',