make new topmost and hidden properties toggleable

This commit is contained in:
FelixKratz 2021-09-11 23:31:12 +02:00
parent c1caba4733
commit 71a37b7250
4 changed files with 12 additions and 5 deletions

View file

@ -154,8 +154,8 @@ where the settings currently are:
* *padding_right*: just as padding_right
* *bar_color*: the color of the bar itself
* *display*: on which display to show bar (*main* or *all*)
* *hidden*: hides and unhides the bar, for hotkey toggling of the bar (*on*, *off*)
* *topmost*: draws sketchybar on top of *everything* (even the default menu bar) (*on*, *off*)
* *hidden*: hides and unhides the bar, for hotkey toggling of the bar (*on*, *off*, *toggle*)
* *topmost*: draws sketchybar on top of *everything* (even the default menu bar) (*on*, *off*, *toggle*)
### Adding a simple menubar item (items will appear in the bar in the order they are added)
```bash

View file

@ -135,6 +135,8 @@ void bar_manager_init(struct bar_manager* bar_manager) {
bar_manager->padding_right = 20;
bar_manager->frozen = false;
bar_manager->window_level = NSFloatingWindowLevel;
bar_manager->hidden = false;
bar_manager->topmost = false;
bar_item_init(&bar_manager->default_item, NULL);
custom_events_init(&bar_manager->custom_events);
@ -157,8 +159,9 @@ void bar_manager_set_hidden(struct bar_manager *bar_manager, bool hidden) {
else {
bar_manager_begin(bar_manager);
bar_manager_unfreeze(bar_manager);
bar_manager_refresh(bar_manager, false);
bar_manager_refresh(bar_manager, true);
}
bar_manager->hidden = hidden;
}
void bar_manager_set_topmost(struct bar_manager *bar_manager, bool topmost) {
@ -168,6 +171,8 @@ void bar_manager_set_topmost(struct bar_manager *bar_manager, bool topmost) {
else bar_manager->window_level = NSFloatingWindowLevel;
bar_manager_begin(bar_manager);
bar_manager_unfreeze(bar_manager);
bar_manager_refresh(bar_manager, true);
bar_manager->topmost = topmost;
}
void bar_manager_update_components(struct bar_manager* bar_manager, bool forced) {

View file

@ -10,6 +10,8 @@ typedef SHELL_TIMER_CALLBACK(shell_timer_callback);
struct bar_manager {
bool frozen;
bool hidden;
bool topmost;
uint32_t window_level;
CFRunLoopTimerRef refresh_timer;
CFRunLoopTimerRef shell_refresh_timer;

View file

@ -469,10 +469,10 @@ static void handle_domain_config(FILE *rsp, struct token domain, char *message)
bar_manager_set_padding_right(&g_bar_manager, atoi(token.text));
} else if (token_equals(command, COMMAND_CONFIG_HIDDEN)) {
struct token token = get_token(&message);
bar_manager_set_hidden(&g_bar_manager, token_equals(token, ARGUMENT_COMMON_VAL_ON));
bar_manager_set_hidden(&g_bar_manager, evaluate_boolean_state(token, g_bar_manager.hidden));
} else if (token_equals(command, COMMAND_CONFIG_TOPMOST)) {
struct token token = get_token(&message);
bar_manager_set_topmost(&g_bar_manager, token_equals(token, ARGUMENT_COMMON_VAL_ON));
bar_manager_set_topmost(&g_bar_manager, evaluate_boolean_state(token, g_bar_manager.topmost));
} else if (token_equals(command, COMMAND_CONFIG_BAR_DISPLAY)) {
int length = strlen(message);
if (length <= 0) {