77#include " factory.hpp"
88#include " util/chrono.hpp"
99
10- static void handleGeometry (void *data, struct wl_output *wl_output, int32_t x,
11- int32_t y, int32_t physical_width, int32_t physical_height, int32_t subpixel,
12- const char *make, const char *model, int32_t transform)
10+ waybar::Bar::Bar (Client &client, std::unique_ptr<struct wl_output *> &&p_output)
11+ : client(client), window{Gtk::WindowType::WINDOW_TOPLEVEL},
12+ output (std::move(p_output))
13+ {
14+ static const struct wl_output_listener outputListener = {
15+ .geometry = _handleGeometry,
16+ .mode = _handleMode,
17+ .done = _handleDone,
18+ .scale = _handleScale,
19+ };
20+ wl_output_add_listener (*output, &outputListener, this );
21+ window.set_title (" waybar" );
22+ window.set_decorated (false );
23+ _setupConfig ();
24+ _setupCss ();
25+ _setupWidgets ();
26+ gtk_widget_realize (GTK_WIDGET (window.gobj ()));
27+ GdkWindow *gdkWindow = gtk_widget_get_window (GTK_WIDGET (window.gobj ()));
28+ gdk_wayland_window_set_use_custom_surface (gdkWindow);
29+ surface = gdk_wayland_window_get_wl_surface (gdkWindow);
30+ layerSurface = zwlr_layer_shell_v1_get_layer_surface (
31+ client.layer_shell , surface, *output, ZWLR_LAYER_SHELL_V1_LAYER_TOP,
32+ " waybar" );
33+ zwlr_layer_surface_v1_set_anchor (layerSurface,
34+ ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP |
35+ ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT);
36+ zwlr_layer_surface_v1_set_size (layerSurface, _width, client.height );
37+ static const struct zwlr_layer_surface_v1_listener layerSurfaceListener = {
38+ .configure = _layerSurfaceHandleConfigure,
39+ .closed = _layerSurfaceHandleClosed,
40+ };
41+ zwlr_layer_surface_v1_add_listener (layerSurface, &layerSurfaceListener,
42+ this );
43+ wl_surface_commit (surface);
44+ }
45+
46+ void waybar::Bar::_handleGeometry (void *data, struct wl_output *wl_output,
47+ int32_t x, int32_t y, int32_t physical_width, int32_t physical_height,
48+ int32_t subpixel, const char *make, const char *model, int32_t transform)
1349{
1450 // Nothing here
1551}
1652
17- static void handleMode (void *data, struct wl_output *wl_output, uint32_t f ,
18- int32_t w, int32_t h, int32_t refresh)
53+ void waybar::Bar::_handleMode (void *data, struct wl_output *wl_output,
54+ uint32_t f, int32_t w, int32_t h, int32_t refresh)
1955{
2056 auto o = reinterpret_cast <waybar::Bar *>(data);
2157 o->setWidth (w);
2258}
2359
24- static void handleDone (void *data, struct wl_output *)
60+ void waybar::Bar::_handleDone (void *data, struct wl_output *)
2561{
2662 // Nothing here
2763}
2864
29- static void handleScale (void *data, struct wl_output *wl_output,
65+ void waybar::Bar::_handleScale (void *data, struct wl_output *wl_output,
3066 int32_t factor)
3167{
3268 // Nothing here
3369}
3470
35- static const struct wl_output_listener outputListener = {
36- .geometry = handleGeometry,
37- .mode = handleMode,
38- .done = handleDone,
39- .scale = handleScale,
40- };
41-
42- static void layerSurfaceHandleConfigure (
71+ void waybar::Bar::_layerSurfaceHandleConfigure (
4372 void *data, struct zwlr_layer_surface_v1 *surface, uint32_t serial,
4473 uint32_t width, uint32_t height)
4574{
@@ -56,7 +85,7 @@ static void layerSurfaceHandleConfigure(
5685 }
5786}
5887
59- static void layerSurfaceHandleClosed (void *data,
88+ void waybar::Bar::_layerSurfaceHandleClosed (void *data,
6089 struct zwlr_layer_surface_v1 *surface)
6190{
6291 auto o = reinterpret_cast <waybar::Bar *>(data);
@@ -67,37 +96,6 @@ static void layerSurfaceHandleClosed(void *data,
6796 o->window .close ();
6897}
6998
70- static const struct zwlr_layer_surface_v1_listener layerSurfaceListener = {
71- .configure = layerSurfaceHandleConfigure,
72- .closed = layerSurfaceHandleClosed,
73- };
74-
75- waybar::Bar::Bar (Client &client, std::unique_ptr<struct wl_output *> &&p_output)
76- : client(client), window{Gtk::WindowType::WINDOW_TOPLEVEL},
77- output (std::move(p_output))
78- {
79- wl_output_add_listener (*output, &outputListener, this );
80- window.set_title (" waybar" );
81- window.set_decorated (false );
82- _setupConfig ();
83- _setupCss ();
84- _setupWidgets ();
85- gtk_widget_realize (GTK_WIDGET (window.gobj ()));
86- GdkWindow *gdkWindow = gtk_widget_get_window (GTK_WIDGET (window.gobj ()));
87- gdk_wayland_window_set_use_custom_surface (gdkWindow);
88- surface = gdk_wayland_window_get_wl_surface (gdkWindow);
89- layerSurface = zwlr_layer_shell_v1_get_layer_surface (
90- client.layer_shell , surface, *output, ZWLR_LAYER_SHELL_V1_LAYER_TOP,
91- " waybar" );
92- zwlr_layer_surface_v1_set_anchor (layerSurface,
93- ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP |
94- ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT);
95- zwlr_layer_surface_v1_set_size (layerSurface, _width, client.height );
96- zwlr_layer_surface_v1_add_listener (layerSurface, &layerSurfaceListener,
97- this );
98- wl_surface_commit (surface);
99- }
100-
10199auto waybar::Bar::setWidth (int width) -> void
102100{
103101 if (width == this ->_width ) return ;
0 commit comments