Add functions to init state

This commit is contained in:
Alex Kotov 2021-11-21 01:16:53 +05:00
parent 6311f52cbb
commit c2eba3486d
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
3 changed files with 57 additions and 6 deletions

View File

@ -561,6 +561,9 @@ Monitor *createmon()
{
Monitor *const m = ecalloc(1, sizeof(Monitor));
basic_geometry_init(&m->screen_geometry);
basic_geometry_init(&m->window_area_geometry);
if (!m) goto fail_without_mon;
if (!(m->unit = unit_new(UNIT_MONITOR, global_unit))) {
@ -860,6 +863,8 @@ void manage(Window w, XWindowAttributes *wa)
{
Client *const c = ecalloc(1, sizeof(Client));
client_state_init(&c->state);
c->win = w;
c->state.geometry.basic.x = wa->x;
c->state.geometry.basic.y = wa->y;

View File

@ -1,5 +1,46 @@
#include "state.h"
#include <string.h>
void basic_geometry_init(const BasicGeometry basic_geometry)
{
basic_geometry->x = 0;
basic_geometry->y = 0;
basic_geometry->w = 0;
basic_geometry->h = 0;
}
void client_geometry_init(const ClientGeometry client_geometry)
{
basic_geometry_init(&client_geometry->basic);
client_geometry->bw = 0;
}
void client_size_hints_init(const ClientSizeHints client_size_hints)
{
client_size_hints->mina = 0;
client_size_hints->maxa = 0;
client_size_hints->basew = 0;
client_size_hints->baseh = 0;
client_size_hints->incw = 0;
client_size_hints->inch = 0;
client_size_hints->maxw = 0;
client_size_hints->maxh = 0;
client_size_hints->minw = 0;
client_size_hints->minh = 0;
}
void client_state_init(const ClientState client_state)
{
memset(client_state->name, 0, sizeof(client_state->name));
client_geometry_init(&client_state->geometry);
client_state->is_fixed = false;
client_state->is_floating = false;
client_state->is_urgent = false;
client_state->never_focus = false;
client_state->is_fullscreen = false;
}
void client_size_hints_update(
const ClientSizeHints size_hints,
const XSizeHints *const size

View File

@ -4,25 +4,30 @@
#include <stdbool.h>
#include <X11/Xutil.h>
struct BasicGeometry {
typedef struct BasicGeometry {
int x, y, w, h;
};
} *BasicGeometry;
struct ClientGeometry {
typedef struct ClientGeometry {
struct BasicGeometry basic;
int bw;
};
} *ClientGeometry;
typedef struct ClientSizeHints {
float mina, maxa;
int basew, baseh, incw, inch, maxw, maxh, minw, minh;
} *ClientSizeHints;
struct ClientState {
typedef struct ClientState {
char name[256];
struct ClientGeometry geometry;
bool is_fixed, is_floating, is_urgent, never_focus, is_fullscreen;
};
} *ClientState;
void basic_geometry_init(BasicGeometry basic_geometry);
void client_geometry_init(ClientGeometry client_geometry);
void client_size_hints_init(ClientSizeHints client_size_hints);
void client_state_init(ClientState client_state);
void client_size_hints_update(
ClientSizeHints size_hints,