use own TagState enum for consistency with stdin patch
This commit is contained in:
parent
b40f557467
commit
c7ecfd3911
4 changed files with 14 additions and 8 deletions
|
@ -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++) {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue