Skip to content

Commit 36bbbc6

Browse files
authored
Added support for showing in fullscreen (#665)
1 parent 0a502a5 commit 36bbbc6

File tree

4 files changed

+37
-17
lines changed

4 files changed

+37
-17
lines changed

src/bar_manager.c

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ void bar_manager_init(struct bar_manager* bar_manager) {
4444

4545
bar_manager->sticky = true;
4646

47+
bar_manager->show_in_fullscreen = false;
48+
4749
image_init(&bar_manager->current_artwork);
4850
background_init(&bar_manager->background);
4951
bar_manager->background.bounds.size.height = 25;
@@ -59,7 +61,7 @@ void bar_manager_init(struct bar_manager* bar_manager) {
5961
custom_events_init(&bar_manager->custom_events);
6062

6163
animator_init(&bar_manager->animator);
62-
64+
6365
int shell_refresh_frequency = 1;
6466

6567
bar_manager->clock = CFRunLoopTimerCreate(NULL,
@@ -259,6 +261,12 @@ bool bar_manager_set_font_smoothing(struct bar_manager* bar_manager, bool smooth
259261
return true;
260262
}
261263

264+
bool bar_manager_set_show_in_fullscreen(struct bar_manager* bar_manager, bool show_in_fullscreen) {
265+
if (bar_manager->show_in_fullscreen == show_in_fullscreen) return false;
266+
bar_manager->show_in_fullscreen = show_in_fullscreen;
267+
return true;
268+
}
269+
262270
bool bar_manager_set_hidden(struct bar_manager *bar_manager, uint32_t adid, bool hidden) {
263271
bar_manager->any_bar_hidden = false;
264272
if (adid > 0) {
@@ -342,7 +350,7 @@ bool bar_manager_bar_needs_redraw(struct bar_manager* bar_manager, struct bar* b
342350
for (int i = 0; i < bar_manager->bar_item_count; i++) {
343351
struct bar_item* bar_item = bar_manager->bar_items[i];
344352
bool draws_item = bar_draws_item(bar, bar_item);
345-
353+
346354
bool regular_update = bar_item->needs_update
347355
&& draws_item;
348356

@@ -403,15 +411,15 @@ bool bar_manager_bar_needs_redraw(struct bar_manager* bar_manager, struct bar* b
403411
}
404412

405413
void bar_manager_clear_needs_update(struct bar_manager* bar_manager) {
406-
for (int i = 0; i < bar_manager->bar_item_count; i++)
414+
for (int i = 0; i < bar_manager->bar_item_count; i++)
407415
bar_manager->bar_items[i]->needs_update = false;
408416

409417
bar_manager->needs_ordering = false;
410418
bar_manager->bar_needs_update = false;
411419
}
412420

413421
void bar_manager_reset_bar_association(struct bar_manager* bar_manager) {
414-
for (int i = 0; i < bar_manager->bar_item_count; i++)
422+
for (int i = 0; i < bar_manager->bar_item_count; i++)
415423
bar_item_reset_associated_bar(bar_manager->bar_items[i]);
416424
}
417425

@@ -428,7 +436,7 @@ void bar_manager_refresh(struct bar_manager* bar_manager, bool forced, bool thre
428436

429437
for (int i = 0; i < bar_manager->bar_count; ++i) {
430438
if (forced
431-
|| bar_manager_bar_needs_redraw(bar_manager, bar_manager->bars[i])) {
439+
|| bar_manager_bar_needs_redraw(bar_manager, bar_manager->bars[i])) {
432440
bar_calculate_bounds(bar_manager->bars[i]);
433441
bar_draw(bar_manager->bars[i], false, threaded);
434442
if (bar_manager->needs_ordering) {
@@ -513,7 +521,7 @@ void bar_manager_update_space_components(struct bar_manager* bar_manager, bool f
513521
else {
514522
bar_item->updates = false;
515523
}
516-
}
524+
}
517525
}
518526
}
519527
}
@@ -586,7 +594,7 @@ void bar_manager_begin(struct bar_manager* bar_manager) {
586594
memset(bar_manager->bars, 0, sizeof(struct bar*) * bar_manager->bar_count);
587595
bar_manager->bars[0] = bar_create(did);
588596
bar_manager->bars[0]->adid = display_arrangement(did);
589-
}
597+
}
590598
else {
591599
uint32_t display_count = display_active_display_count();
592600
uint32_t bar_count = 0;
@@ -964,7 +972,7 @@ void bar_manager_handle_space_change(struct bar_manager* bar_manager, bool force
964972
bar_manager->bars[i]->sid = mission_control_index(dsid);
965973

966974
bool was_shown = bar_manager->bars[i]->shown;
967-
bar_manager->bars[i]->shown = SLSSpaceGetType(g_connection, dsid) != 4;
975+
bar_manager->bars[i]->shown = SLSSpaceGetType(g_connection, dsid) != 4 || bar_manager->show_in_fullscreen;
968976

969977
bar_manager->needs_ordering |= !was_shown && bar_manager->bars[i]->shown;
970978
force_refresh |= !was_shown && bar_manager->bars[i]->shown;
@@ -1106,6 +1114,7 @@ void bar_manager_serialize(struct bar_manager* bar_manager, FILE* rsp) {
11061114
"%s\"hidden\": \"%s\",\n"
11071115
"%s\"shadow\": \"%s\",\n"
11081116
"%s\"font_smoothing\": \"%s\",\n"
1117+
"%s\"show_in_fullscreen\": \"%s\",\n"
11091118
"%s\"blur_radius\": %u,\n"
11101119
"%s\"margin\": %d,\n",
11111120
indent, bar_manager->position == POSITION_BOTTOM
@@ -1115,6 +1124,7 @@ void bar_manager_serialize(struct bar_manager* bar_manager, FILE* rsp) {
11151124
indent, format_bool(bar_manager->any_bar_hidden),
11161125
indent, format_bool(bar_manager->shadow),
11171126
indent, format_bool(bar_manager->font_smoothing),
1127+
indent, format_bool(bar_manager->show_in_fullscreen),
11181128
indent, bar_manager->blur_radius,
11191129
indent, bar_manager->margin );
11201130

src/bar_manager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ struct bar_manager {
2626
bool might_need_clipping;
2727
bool bar_needs_update;
2828
bool bar_needs_resize;
29+
bool show_in_fullscreen;
2930

3031
uint32_t displays;
3132
char position;
@@ -78,6 +79,7 @@ bool bar_manager_set_topmost(struct bar_manager* bar_manager, char level, bool t
7879
bool bar_manager_set_sticky(struct bar_manager *bar_manager, bool sticky);
7980
bool bar_manager_set_shadow(struct bar_manager* bar_manager, bool shadow);
8081
bool bar_manager_set_font_smoothing(struct bar_manager* bar_manager, bool smoothing);
82+
bool bar_manager_set_show_in_fullscreen(struct bar_manager* bar_manager, bool show_in_fullscreen);
8183
bool bar_manager_set_notch_width(struct bar_manager* bar_manager, uint32_t width);
8284
bool bar_manager_set_notch_offset(struct bar_manager* bar_manager, uint32_t offset);
8385
bool bar_manager_set_notch_display_height(struct bar_manager* bar_manager, uint32_t offset);

src/message.c

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#include "message.h"
22
#include "app_windows.h"
3+
#include "bar_manager.h"
34
#include "misc/defines.h"
45
#include "hotload.h"
6+
#include "misc/helpers.h"
57
#include "volume.h"
68
#include "media.h"
79
#include "wifi.h"
@@ -68,7 +70,7 @@ static void handle_domain_trigger(FILE* rsp, struct token domain, char* message)
6870
struct token token = get_token(&message);
6971
while (token.text && token.length > 0) {
7072
struct key_value_pair key_value_pair = get_key_value_pair(token.text, '=');
71-
73+
7274
if (key_value_pair.key && key_value_pair.value) {
7375
env_vars_set(&env_vars,
7476
string_copy(key_value_pair.key),
@@ -100,7 +102,7 @@ static void handle_domain_trigger(FILE* rsp, struct token domain, char* message)
100102

101103
static void handle_domain_push(FILE* rsp, struct token domain, char* message) {
102104
struct token name = get_token(&message);
103-
105+
104106
int item_index_for_name = bar_manager_get_item_index_for_name(&g_bar_manager,
105107
name.text );
106108

@@ -180,15 +182,15 @@ static void handle_domain_add(FILE* rsp, struct token domain, char* message) {
180182
token_to_string(event),
181183
NULL );
182184
return;
183-
}
185+
}
184186

185187
struct token name = get_token(&message);
186188
struct token position = get_token(&message);
187189

188190
if (bar_manager_get_item_index_for_name(&g_bar_manager, name.text) >= 0) {
189191
respond(rsp, "[?] Add: Item '%s' already exists\n", name.text);
190192
return;
191-
}
193+
}
192194
struct bar_item* bar_item = bar_manager_create_item(&g_bar_manager);
193195

194196
if (!bar_item_set_type(bar_item, command.text)) {
@@ -216,7 +218,7 @@ static void handle_domain_add(FILE* rsp, struct token domain, char* message) {
216218
if (bar_item->type == BAR_COMPONENT_GRAPH) {
217219
struct token width = get_token(&message);
218220
graph_setup(&bar_item->graph, token_to_uint32t(width));
219-
}
221+
}
220222
else if (bar_item->type == BAR_COMPONENT_SLIDER) {
221223
struct token width = get_token(&message);
222224
slider_setup(&bar_item->slider, token_to_uint32t(width));
@@ -440,6 +442,11 @@ static bool handle_domain_bar(FILE *rsp, struct token domain, char *message) {
440442
&g_bar_manager,
441443
g_bar_manager.background.bounds.size.height,
442444
token_to_int(token) );
445+
} else if (token_equals(command, PROPERTY_SHOW_IN_FULLSCREEN)) {
446+
struct token token = get_token(&message);
447+
448+
needs_refresh = bar_manager_set_show_in_fullscreen(&g_bar_manager,
449+
evaluate_boolean_state(token, g_bar_manager.show_in_fullscreen));
443450
} else
444451
needs_refresh = background_parse_sub_domain(&g_bar_manager.background, rsp, command, message);
445452

@@ -452,7 +459,7 @@ static char* reformat_batch_key_value_pair(struct token token) {
452459
char* rbr_msg = malloc((strlen(key_value_pair.key) + (key_value_pair.value
453460
? strlen(key_value_pair.value)
454461
: 0)
455-
+ 3) * sizeof(char) );
462+
+ 3) * sizeof(char) );
456463

457464
pack_key_value_pair(rbr_msg, &key_value_pair);
458465
return rbr_msg;
@@ -739,7 +746,7 @@ void handle_message_mach(struct mach_buffer* buffer) {
739746

740747
if (reload) {
741748
struct event event = { NULL, HOTLOAD };
742-
event_post(&event);
749+
event_post(&event);
743750
}
744751
} else {
745752
char* rbr_msg = get_batch_line(&message);

src/misc/defines.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

33
#define DOMAIN_ADD "--add"
4-
#define COMMAND_ADD_ITEM "item"
4+
#define COMMAND_ADD_ITEM "item"
55
#define COMMAND_ADD_COMPONENT "component"
66
#define COMMAND_ADD_EVENT "event"
77

@@ -107,6 +107,7 @@
107107
#define PROPERTY_SPACE "space"
108108
#define PROPERTY_TOPMOST "topmost"
109109
#define PROPERTY_STICKY "sticky"
110+
#define PROPERTY_SHOW_IN_FULLSCREEN "show_in_fullscreen"
110111
#define PROPERTY_HIDDEN "hidden"
111112
#define PROPERTY_FONT_SMOOTHING "font_smoothing"
112113
#define PROPERTY_SHADOW "shadow"
@@ -167,7 +168,7 @@
167168
#define ARGUMENT_DISPLAY_MAIN "main"
168169
#define ARGUMENT_DISPLAY_ALL "all"
169170

170-
#define ARGUMENT_UPDATES_WHEN_SHOWN "when_shown"
171+
#define ARGUMENT_UPDATES_WHEN_SHOWN "when_shown"
171172
#define ARGUMENT_DYNAMIC "dynamic"
172173

173174
#define ARGUMENT_WINDOW "window"

0 commit comments

Comments
 (0)