use own TagState enum for consistency with stdin patch

This commit is contained in:
Raphael Robatsch 2021-10-30 11:50:36 +02:00
parent b40f557467
commit c7ecfd3911
4 changed files with 14 additions and 8 deletions

View File

@ -72,7 +72,7 @@ Bar::Bar(Monitor* mon)
_pangoContext.reset(pango_font_map_create_context(pango_cairo_font_map_get_default())); _pangoContext.reset(pango_font_map_create_context(pango_cairo_font_map_get_default()));
if (!_pangoContext) die("pango_font_map_create_context"); if (!_pangoContext) die("pango_font_map_create_context");
for (auto i=0u; i<tagNames.size(); i++) { for (auto i=0u; i<tagNames.size(); i++) {
_tags.push_back({ ZNET_TAPESOFTWARE_DWL_WM_MONITOR_V1_TAG_STATE_NONE, 0, 0, createComponent(tagNames[i]) }); _tags.push_back({ TagState::None, 0, 0, createComponent(tagNames[i]) });
} }
_layoutCmp = createComponent(); _layoutCmp = createComponent();
_titleCmp = createComponent(); _titleCmp = createComponent();
@ -107,7 +107,7 @@ void Bar::hide()
_bufs.reset(); _bufs.reset();
} }
void Bar::setTag(int tag, znet_tapesoftware_dwl_wm_monitor_v1_tag_state state, int numClients, int focusedClient) void Bar::setTag(int tag, int state, int numClients, int focusedClient)
{ {
auto& t = _tags[tag]; auto& t = _tags[tag];
t.state = state; t.state = state;
@ -196,8 +196,8 @@ void Bar::renderTags()
{ {
for (auto &tag : _tags) { for (auto &tag : _tags) {
setColorScheme( setColorScheme(
tag.state & ZNET_TAPESOFTWARE_DWL_WM_MONITOR_V1_TAG_STATE_ACTIVE ? colorActive : colorInactive, tag.state & TagState::Active ? colorActive : colorInactive,
tag.state & ZNET_TAPESOFTWARE_DWL_WM_MONITOR_V1_TAG_STATE_URGENT); tag.state & TagState::Urgent);
renderComponent(tag.component); renderComponent(tag.component);
auto indicators = std::min(tag.numClients, _bufs->height/2); auto indicators = std::min(tag.numClients, _bufs->height/2);
for (auto ind = 0; ind < indicators; ind++) { for (auto ind = 0; ind < indicators; ind++) {

View File

@ -22,7 +22,7 @@ public:
}; };
struct Tag { struct Tag {
znet_tapesoftware_dwl_wm_monitor_v1_tag_state state; int state;
int numClients; int numClients;
int focusedClient; int focusedClient;
BarComponent component; BarComponent component;
@ -65,7 +65,7 @@ public:
bool visible() const; bool visible() const;
void show(wl_output* output); void show(wl_output* output);
void hide(); void hide();
void setTag(int tag, znet_tapesoftware_dwl_wm_monitor_v1_tag_state state, int numClients, int focusedClient); void setTag(int tag, int state, int numClients, int focusedClient);
void setSelected(bool selected); void setSelected(bool selected);
void setLayout(const std::string& layout); void setLayout(const std::string& layout);
void setTitle(const std::string& title); void setTitle(const std::string& title);

View File

@ -26,6 +26,7 @@ union Arg {
}; };
struct Monitor; struct Monitor;
enum TagState { None, Active = 0x01, Urgent = 0x02 };
enum { ClkNone, ClkTagBar, ClkLayoutSymbol, ClkWinTitle, ClkStatusText }; enum { ClkNone, ClkTagBar, ClkLayoutSymbol, ClkWinTitle, ClkStatusText };
struct Button { struct Button {
int control; int control;

View File

@ -227,9 +227,14 @@ static const struct znet_tapesoftware_dwl_wm_monitor_v1_listener dwlWmMonitorLis
}, },
.tag = [](void* mv, znet_tapesoftware_dwl_wm_monitor_v1*, uint32_t tag, uint32_t state, uint32_t numClients, int32_t focusedClient) { .tag = [](void* mv, znet_tapesoftware_dwl_wm_monitor_v1*, uint32_t tag, uint32_t state, uint32_t numClients, int32_t focusedClient) {
auto mon = static_cast<Monitor*>(mv); auto mon = static_cast<Monitor*>(mv);
mon->bar->setTag(tag, static_cast<znet_tapesoftware_dwl_wm_monitor_v1_tag_state>(state), numClients, focusedClient); int tagState = TagState::None;
if (state & ZNET_TAPESOFTWARE_DWL_WM_MONITOR_V1_TAG_STATE_ACTIVE)
tagState |= TagState::Active;
if (state & ZNET_TAPESOFTWARE_DWL_WM_MONITOR_V1_TAG_STATE_URGENT)
tagState |= TagState::Urgent;
mon->bar->setTag(tag, tagState, numClients, focusedClient);
uint32_t mask = 1 << tag; uint32_t mask = 1 << tag;
if (state & ZNET_TAPESOFTWARE_DWL_WM_MONITOR_V1_TAG_STATE_ACTIVE) { if (tagState & TagState::Active) {
mon->tags |= mask; mon->tags |= mask;
} else { } else {
mon->tags &= ~mask; mon->tags &= ~mask;