ewmh, tag: simplify ewmh_update_net_current_desktop
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
65260f5772
commit
2836c98ee5
11
ewmh.c
11
ewmh.c
|
@ -187,18 +187,11 @@ ewmh_update_net_numbers_of_desktop(int phys_screen)
|
||||||
void
|
void
|
||||||
ewmh_update_net_current_desktop(int phys_screen)
|
ewmh_update_net_current_desktop(int phys_screen)
|
||||||
{
|
{
|
||||||
tag_array_t *tags = &globalconf.screens.tab[phys_screen].tags;
|
uint32_t idx = tags_get_first_selected_index(&globalconf.screens.tab[phys_screen]);
|
||||||
uint32_t count = 0;
|
|
||||||
tag_t **curtags = tags_get_current( &globalconf.screens.tab[phys_screen]);
|
|
||||||
|
|
||||||
while(count < (uint32_t) tags->len && tags->tab[count] != curtags[0])
|
|
||||||
count++;
|
|
||||||
|
|
||||||
xcb_change_property(globalconf.connection, XCB_PROP_MODE_REPLACE,
|
xcb_change_property(globalconf.connection, XCB_PROP_MODE_REPLACE,
|
||||||
xutil_screen_get(globalconf.connection, phys_screen)->root,
|
xutil_screen_get(globalconf.connection, phys_screen)->root,
|
||||||
_NET_CURRENT_DESKTOP, CARDINAL, 32, 1, &count);
|
_NET_CURRENT_DESKTOP, CARDINAL, 32, 1, &idx);
|
||||||
|
|
||||||
p_delete(&curtags);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
18
tag.c
18
tag.c
|
@ -206,25 +206,19 @@ is_client_tagged(client_t *c, tag_t *t)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get the current tags for the specified screen.
|
/** Get the index of the first selected tag.
|
||||||
* Returned pointer must be p_delete'd after.
|
|
||||||
* \param screen Screen.
|
* \param screen Screen.
|
||||||
* \return A double pointer of tag list finished with a NULL element.
|
* \return Its index.
|
||||||
*/
|
*/
|
||||||
tag_t **
|
int
|
||||||
tags_get_current(screen_t *screen)
|
tags_get_first_selected_index(screen_t *screen)
|
||||||
{
|
{
|
||||||
tag_t **out = p_new(tag_t *, screen->tags.len + 1);
|
|
||||||
int n = 0;
|
|
||||||
|
|
||||||
foreach(tag, screen->tags)
|
foreach(tag, screen->tags)
|
||||||
if((*tag)->selected)
|
if((*tag)->selected)
|
||||||
out[n++] = *tag;
|
return tag_array_indexof(&screen->tags, tag);
|
||||||
|
return 0;
|
||||||
return out;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Set a tag to be the only one viewed.
|
/** Set a tag to be the only one viewed.
|
||||||
* \param target the tag to see
|
* \param target the tag to see
|
||||||
*/
|
*/
|
||||||
|
|
2
tag.h
2
tag.h
|
@ -38,7 +38,7 @@ struct tag
|
||||||
client_array_t clients;
|
client_array_t clients;
|
||||||
};
|
};
|
||||||
|
|
||||||
tag_t **tags_get_current(screen_t *);
|
int tags_get_first_selected_index(screen_t *);
|
||||||
void tag_client(client_t *);
|
void tag_client(client_t *);
|
||||||
void untag_client(client_t *, tag_t *);
|
void untag_client(client_t *, tag_t *);
|
||||||
bool is_client_tagged(client_t *, tag_t *);
|
bool is_client_tagged(client_t *, tag_t *);
|
||||||
|
|
Loading…
Reference in New Issue