prefix and capitalize some more constants/enums in client.h (Function -> ObFunctions and WindowType -> ObClientType)
This commit is contained in:
parent
ad45ecb6e3
commit
4736c257a5
5 changed files with 185 additions and 170 deletions
|
@ -795,14 +795,15 @@ void action_toggle_maximize_vert(union ActionData *data)
|
||||||
|
|
||||||
void action_send_to_desktop(union ActionData *data)
|
void action_send_to_desktop(union ActionData *data)
|
||||||
{
|
{
|
||||||
if (data->sendto.c) {
|
ObClient *c = data->sendto.c;
|
||||||
|
|
||||||
|
if (!c || !client_normal(c)) return;
|
||||||
|
|
||||||
if (data->sendto.desk < screen_num_desktops ||
|
if (data->sendto.desk < screen_num_desktops ||
|
||||||
data->sendto.desk == DESKTOP_ALL) {
|
data->sendto.desk == DESKTOP_ALL) {
|
||||||
client_set_desktop(data->desktop.c,
|
client_set_desktop(c, data->sendto.desk, data->sendto.follow);
|
||||||
data->sendto.desk, data->sendto.follow);
|
|
||||||
if (data->sendto.follow) screen_set_desktop(data->sendto.desk);
|
if (data->sendto.follow) screen_set_desktop(data->sendto.desk);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void action_desktop(union ActionData *data)
|
void action_desktop(union ActionData *data)
|
||||||
|
@ -942,9 +943,11 @@ void action_desktop_right(union ActionData *data)
|
||||||
|
|
||||||
void action_send_to_desktop_right(union ActionData *data)
|
void action_send_to_desktop_right(union ActionData *data)
|
||||||
{
|
{
|
||||||
|
ObClient *cl = data->sendto.c;
|
||||||
guint r, c, d;
|
guint r, c, d;
|
||||||
|
|
||||||
if (data->sendtodir.c) {
|
if (!cl || !client_normal(cl)) return;
|
||||||
|
|
||||||
cur_row_col(&r, &c);
|
cur_row_col(&r, &c);
|
||||||
++c;
|
++c;
|
||||||
if (c >= screen_desktop_layout.columns) {
|
if (c >= screen_desktop_layout.columns) {
|
||||||
|
@ -958,10 +961,9 @@ void action_send_to_desktop_right(union ActionData *data)
|
||||||
}
|
}
|
||||||
d = translate_row_col(r, c);
|
d = translate_row_col(r, c);
|
||||||
if (d < screen_num_desktops) {
|
if (d < screen_num_desktops) {
|
||||||
client_set_desktop(data->sendtodir.c, d, data->sendtodir.follow);
|
client_set_desktop(cl, d, data->sendtodir.follow);
|
||||||
if (data->sendtodir.follow) screen_set_desktop(d);
|
if (data->sendtodir.follow) screen_set_desktop(d);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void action_desktop_left(union ActionData *data)
|
void action_desktop_left(union ActionData *data)
|
||||||
|
@ -986,9 +988,11 @@ void action_desktop_left(union ActionData *data)
|
||||||
|
|
||||||
void action_send_to_desktop_left(union ActionData *data)
|
void action_send_to_desktop_left(union ActionData *data)
|
||||||
{
|
{
|
||||||
|
ObClient *cl = data->sendto.c;
|
||||||
guint r, c, d;
|
guint r, c, d;
|
||||||
|
|
||||||
if (data->sendtodir.c) {
|
if (!cl || !client_normal(cl)) return;
|
||||||
|
|
||||||
cur_row_col(&r, &c);
|
cur_row_col(&r, &c);
|
||||||
--c;
|
--c;
|
||||||
if (c >= screen_desktop_layout.columns) {
|
if (c >= screen_desktop_layout.columns) {
|
||||||
|
@ -1002,10 +1006,9 @@ void action_send_to_desktop_left(union ActionData *data)
|
||||||
}
|
}
|
||||||
d = translate_row_col(r, c);
|
d = translate_row_col(r, c);
|
||||||
if (d < screen_num_desktops) {
|
if (d < screen_num_desktops) {
|
||||||
client_set_desktop(data->sendtodir.c, d, data->sendtodir.follow);
|
client_set_desktop(cl, d, data->sendtodir.follow);
|
||||||
if (data->sendtodir.follow) screen_set_desktop(d);
|
if (data->sendtodir.follow) screen_set_desktop(d);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void action_desktop_down(union ActionData *data)
|
void action_desktop_down(union ActionData *data)
|
||||||
|
|
144
openbox/client.c
144
openbox/client.c
|
@ -255,7 +255,7 @@ void client_manage(Window window)
|
||||||
|
|
||||||
/* focus the new window? */
|
/* focus the new window? */
|
||||||
if (ob_state != OB_STATE_STARTING && config_focus_new &&
|
if (ob_state != OB_STATE_STARTING && config_focus_new &&
|
||||||
(self->type == Type_Normal || self->type == Type_Dialog)) {
|
(self->type == OB_CLIENT_TYPE_NORMAL || self->type == OB_CLIENT_TYPE_DIALOG)) {
|
||||||
gboolean group_foc = FALSE;
|
gboolean group_foc = FALSE;
|
||||||
|
|
||||||
if (self->group) {
|
if (self->group) {
|
||||||
|
@ -322,7 +322,7 @@ void client_close_menus(gpointer key, gpointer value, gpointer self)
|
||||||
|
|
||||||
void client_unmanage(ObClient *self)
|
void client_unmanage(ObClient *self)
|
||||||
{
|
{
|
||||||
int j;
|
guint j;
|
||||||
GSList *it;
|
GSList *it;
|
||||||
|
|
||||||
g_message("Unmanaging window: %lx (%s)", self->window, self->class);
|
g_message("Unmanaging window: %lx (%s)", self->window, self->class);
|
||||||
|
@ -784,21 +784,21 @@ void client_get_type(ObClient *self)
|
||||||
/* use the first value that we know about in the array */
|
/* use the first value that we know about in the array */
|
||||||
for (i = 0; i < num; ++i) {
|
for (i = 0; i < num; ++i) {
|
||||||
if (val[i] == prop_atoms.net_wm_window_type_desktop)
|
if (val[i] == prop_atoms.net_wm_window_type_desktop)
|
||||||
self->type = Type_Desktop;
|
self->type = OB_CLIENT_TYPE_DESKTOP;
|
||||||
else if (val[i] == prop_atoms.net_wm_window_type_dock)
|
else if (val[i] == prop_atoms.net_wm_window_type_dock)
|
||||||
self->type = Type_Dock;
|
self->type = OB_CLIENT_TYPE_DOCK;
|
||||||
else if (val[i] == prop_atoms.net_wm_window_type_toolbar)
|
else if (val[i] == prop_atoms.net_wm_window_type_toolbar)
|
||||||
self->type = Type_Toolbar;
|
self->type = OB_CLIENT_TYPE_TOOLBAR;
|
||||||
else if (val[i] == prop_atoms.net_wm_window_type_menu)
|
else if (val[i] == prop_atoms.net_wm_window_type_menu)
|
||||||
self->type = Type_Menu;
|
self->type = OB_CLIENT_TYPE_MENU;
|
||||||
else if (val[i] == prop_atoms.net_wm_window_type_utility)
|
else if (val[i] == prop_atoms.net_wm_window_type_utility)
|
||||||
self->type = Type_Utility;
|
self->type = OB_CLIENT_TYPE_UTILITY;
|
||||||
else if (val[i] == prop_atoms.net_wm_window_type_splash)
|
else if (val[i] == prop_atoms.net_wm_window_type_splash)
|
||||||
self->type = Type_Splash;
|
self->type = OB_CLIENT_TYPE_SPLASH;
|
||||||
else if (val[i] == prop_atoms.net_wm_window_type_dialog)
|
else if (val[i] == prop_atoms.net_wm_window_type_dialog)
|
||||||
self->type = Type_Dialog;
|
self->type = OB_CLIENT_TYPE_DIALOG;
|
||||||
else if (val[i] == prop_atoms.net_wm_window_type_normal)
|
else if (val[i] == prop_atoms.net_wm_window_type_normal)
|
||||||
self->type = Type_Normal;
|
self->type = OB_CLIENT_TYPE_NORMAL;
|
||||||
else if (val[i] == prop_atoms.kde_net_wm_window_type_override) {
|
else if (val[i] == prop_atoms.kde_net_wm_window_type_override) {
|
||||||
/* prevent this window from getting any decor or
|
/* prevent this window from getting any decor or
|
||||||
functionality */
|
functionality */
|
||||||
|
@ -807,20 +807,20 @@ void client_get_type(ObClient *self)
|
||||||
self->mwmhints.decorations = 0;
|
self->mwmhints.decorations = 0;
|
||||||
self->mwmhints.functions = 0;
|
self->mwmhints.functions = 0;
|
||||||
}
|
}
|
||||||
if (self->type != (WindowType) -1)
|
if (self->type != (ObClientType) -1)
|
||||||
break; /* grab the first legit type */
|
break; /* grab the first legit type */
|
||||||
}
|
}
|
||||||
g_free(val);
|
g_free(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self->type == (WindowType) -1) {
|
if (self->type == (ObClientType) -1) {
|
||||||
/*the window type hint was not set, which means we either classify
|
/*the window type hint was not set, which means we either classify
|
||||||
ourself as a normal window or a dialog, depending on if we are a
|
ourself as a normal window or a dialog, depending on if we are a
|
||||||
transient. */
|
transient. */
|
||||||
if (self->transient)
|
if (self->transient)
|
||||||
self->type = Type_Dialog;
|
self->type = OB_CLIENT_TYPE_DIALOG;
|
||||||
else
|
else
|
||||||
self->type = Type_Normal;
|
self->type = OB_CLIENT_TYPE_NORMAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -915,43 +915,44 @@ void client_setup_decor_and_functions(ObClient *self)
|
||||||
self->decorations = Decor_Titlebar | Decor_Handle | Decor_Border |
|
self->decorations = Decor_Titlebar | Decor_Handle | Decor_Border |
|
||||||
Decor_Icon | Decor_AllDesktops | Decor_Iconify | Decor_Maximize |
|
Decor_Icon | Decor_AllDesktops | Decor_Iconify | Decor_Maximize |
|
||||||
Decor_Shade;
|
Decor_Shade;
|
||||||
self->functions = Func_Resize | Func_Move | Func_Iconify | Func_Maximize |
|
self->functions = OB_CLIENT_FUNC_RESIZE | OB_CLIENT_FUNC_MOVE |
|
||||||
Func_Shade;
|
OB_CLIENT_FUNC_ICONIFY | OB_CLIENT_FUNC_MAXIMIZE |
|
||||||
|
OB_CLIENT_FUNC_SHADE;
|
||||||
if (self->delete_window) {
|
if (self->delete_window) {
|
||||||
self->decorations |= Decor_Close;
|
self->decorations |= Decor_Close;
|
||||||
self->functions |= Func_Close;
|
self->functions |= OB_CLIENT_FUNC_CLOSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(self->min_size.width < self->max_size.width ||
|
if (!(self->min_size.width < self->max_size.width ||
|
||||||
self->min_size.height < self->max_size.height)) {
|
self->min_size.height < self->max_size.height)) {
|
||||||
self->decorations &= ~(Decor_Maximize | Decor_Handle);
|
self->decorations &= ~(Decor_Maximize | Decor_Handle);
|
||||||
self->functions &= ~(Func_Resize | Func_Maximize);
|
self->functions &= ~OB_CLIENT_FUNC_RESIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (self->type) {
|
switch (self->type) {
|
||||||
case Type_Normal:
|
case OB_CLIENT_TYPE_NORMAL:
|
||||||
/* normal windows retain all of the possible decorations and
|
/* normal windows retain all of the possible decorations and
|
||||||
functionality, and are the only windows that you can fullscreen */
|
functionality, and are the only windows that you can fullscreen */
|
||||||
self->functions |= Func_Fullscreen;
|
self->functions |= OB_CLIENT_FUNC_FULLSCREEN;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Type_Dialog:
|
case OB_CLIENT_TYPE_DIALOG:
|
||||||
case Type_Utility:
|
case OB_CLIENT_TYPE_UTILITY:
|
||||||
/* these windows cannot be maximized */
|
/* these windows cannot be maximized */
|
||||||
self->decorations &= ~Decor_Maximize;
|
self->decorations &= ~Decor_Maximize;
|
||||||
self->functions &= ~Func_Maximize;
|
self->functions &= ~OB_CLIENT_FUNC_MAXIMIZE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Type_Menu:
|
case OB_CLIENT_TYPE_MENU:
|
||||||
case Type_Toolbar:
|
case OB_CLIENT_TYPE_TOOLBAR:
|
||||||
/* these windows get less functionality */
|
/* these windows get less functionality */
|
||||||
self->decorations &= ~(Decor_Iconify | Decor_Handle);
|
self->decorations &= ~(Decor_Iconify | Decor_Handle);
|
||||||
self->functions &= ~(Func_Iconify | Func_Resize);
|
self->functions &= ~(OB_CLIENT_FUNC_ICONIFY | OB_CLIENT_FUNC_RESIZE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Type_Desktop:
|
case OB_CLIENT_TYPE_DESKTOP:
|
||||||
case Type_Dock:
|
case OB_CLIENT_TYPE_DOCK:
|
||||||
case Type_Splash:
|
case OB_CLIENT_TYPE_SPLASH:
|
||||||
/* none of these windows are manipulated by the window manager */
|
/* none of these windows are manipulated by the window manager */
|
||||||
self->decorations = 0;
|
self->decorations = 0;
|
||||||
self->functions = 0;
|
self->functions = 0;
|
||||||
|
@ -978,13 +979,13 @@ void client_setup_decor_and_functions(ObClient *self)
|
||||||
if (self->mwmhints.flags & OB_MWM_FLAG_FUNCTIONS) {
|
if (self->mwmhints.flags & OB_MWM_FLAG_FUNCTIONS) {
|
||||||
if (! (self->mwmhints.functions & OB_MWM_FUNC_ALL)) {
|
if (! (self->mwmhints.functions & OB_MWM_FUNC_ALL)) {
|
||||||
if (! (self->mwmhints.functions & OB_MWM_FUNC_RESIZE))
|
if (! (self->mwmhints.functions & OB_MWM_FUNC_RESIZE))
|
||||||
self->functions &= ~Func_Resize;
|
self->functions &= ~OB_CLIENT_FUNC_RESIZE;
|
||||||
if (! (self->mwmhints.functions & OB_MWM_FUNC_MOVE))
|
if (! (self->mwmhints.functions & OB_MWM_FUNC_MOVE))
|
||||||
self->functions &= ~Func_Move;
|
self->functions &= ~OB_CLIENT_FUNC_MOVE;
|
||||||
if (! (self->mwmhints.functions & OB_MWM_FUNC_ICONIFY))
|
if (! (self->mwmhints.functions & OB_MWM_FUNC_ICONIFY))
|
||||||
self->functions &= ~Func_Iconify;
|
self->functions &= ~OB_CLIENT_FUNC_ICONIFY;
|
||||||
if (! (self->mwmhints.functions & OB_MWM_FUNC_MAXIMIZE))
|
if (! (self->mwmhints.functions & OB_MWM_FUNC_MAXIMIZE))
|
||||||
self->functions &= ~Func_Maximize;
|
self->functions &= ~OB_CLIENT_FUNC_MAXIMIZE;
|
||||||
/* dont let mwm hints kill the close button
|
/* dont let mwm hints kill the close button
|
||||||
if (! (self->mwmhints.functions & MwmFunc_Close))
|
if (! (self->mwmhints.functions & MwmFunc_Close))
|
||||||
self->functions &= ~Func_Close; */
|
self->functions &= ~Func_Close; */
|
||||||
|
@ -992,8 +993,10 @@ void client_setup_decor_and_functions(ObClient *self)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* can't maximize without moving/resizing */
|
/* can't maximize without moving/resizing */
|
||||||
if (!((self->functions & Func_Move) && (self->functions & Func_Resize)))
|
if (!((self->functions & OB_CLIENT_FUNC_MOVE) &&
|
||||||
self->functions &= ~(Func_Maximize | Func_Fullscreen);
|
(self->functions & OB_CLIENT_FUNC_RESIZE)))
|
||||||
|
self->functions &= ~(OB_CLIENT_FUNC_MAXIMIZE |
|
||||||
|
OB_CLIENT_FUNC_FULLSCREEN);
|
||||||
|
|
||||||
/* finally, user specified disabled decorations are applied to subtract
|
/* finally, user specified disabled decorations are applied to subtract
|
||||||
decorations */
|
decorations */
|
||||||
|
@ -1016,11 +1019,13 @@ void client_setup_decor_and_functions(ObClient *self)
|
||||||
|
|
||||||
/* if we don't have a titlebar, then we cannot shade! */
|
/* if we don't have a titlebar, then we cannot shade! */
|
||||||
if (!(self->decorations & Decor_Titlebar))
|
if (!(self->decorations & Decor_Titlebar))
|
||||||
self->functions &= ~Func_Shade;
|
self->functions &= ~OB_CLIENT_FUNC_SHADE;
|
||||||
|
|
||||||
/* now we need to check against rules for the client's current state */
|
/* now we need to check against rules for the client's current state */
|
||||||
if (self->fullscreen) {
|
if (self->fullscreen) {
|
||||||
self->functions &= (Func_Close | Func_Fullscreen | Func_Iconify);
|
self->functions &= (OB_CLIENT_FUNC_CLOSE |
|
||||||
|
OB_CLIENT_FUNC_FULLSCREEN |
|
||||||
|
OB_CLIENT_FUNC_ICONIFY);
|
||||||
self->decorations = 0;
|
self->decorations = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1028,16 +1033,20 @@ void client_setup_decor_and_functions(ObClient *self)
|
||||||
|
|
||||||
if (self->frame) {
|
if (self->frame) {
|
||||||
/* this makes sure that these windows appear on all desktops */
|
/* this makes sure that these windows appear on all desktops */
|
||||||
if (self->type == Type_Desktop && self->desktop != DESKTOP_ALL)
|
if (self->type == OB_CLIENT_TYPE_DESKTOP &&
|
||||||
|
self->desktop != DESKTOP_ALL)
|
||||||
client_set_desktop(self, DESKTOP_ALL, FALSE);
|
client_set_desktop(self, DESKTOP_ALL, FALSE);
|
||||||
|
|
||||||
/* adjust the client's decorations, etc. */
|
/* adjust the client's decorations, etc. */
|
||||||
client_reconfigure(self);
|
client_reconfigure(self);
|
||||||
} else {
|
} else {
|
||||||
/* this makes sure that these windows appear on all desktops */
|
/* this makes sure that these windows appear on all desktops */
|
||||||
if (self->type == Type_Desktop && self->desktop != DESKTOP_ALL)
|
if (self->type == OB_CLIENT_TYPE_DESKTOP &&
|
||||||
|
self->desktop != DESKTOP_ALL)
|
||||||
|
{
|
||||||
self->desktop = DESKTOP_ALL;
|
self->desktop = DESKTOP_ALL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void client_change_allowed_actions(ObClient *self)
|
static void client_change_allowed_actions(ObClient *self)
|
||||||
|
@ -1046,22 +1055,22 @@ static void client_change_allowed_actions(ObClient *self)
|
||||||
int num = 0;
|
int num = 0;
|
||||||
|
|
||||||
/* desktop windows are kept on all desktops */
|
/* desktop windows are kept on all desktops */
|
||||||
if (self->type != Type_Desktop)
|
if (self->type != OB_CLIENT_TYPE_DESKTOP)
|
||||||
actions[num++] = prop_atoms.net_wm_action_change_desktop;
|
actions[num++] = prop_atoms.net_wm_action_change_desktop;
|
||||||
|
|
||||||
if (self->functions & Func_Shade)
|
if (self->functions & OB_CLIENT_FUNC_SHADE)
|
||||||
actions[num++] = prop_atoms.net_wm_action_shade;
|
actions[num++] = prop_atoms.net_wm_action_shade;
|
||||||
if (self->functions & Func_Close)
|
if (self->functions & OB_CLIENT_FUNC_CLOSE)
|
||||||
actions[num++] = prop_atoms.net_wm_action_close;
|
actions[num++] = prop_atoms.net_wm_action_close;
|
||||||
if (self->functions & Func_Move)
|
if (self->functions & OB_CLIENT_FUNC_MOVE)
|
||||||
actions[num++] = prop_atoms.net_wm_action_move;
|
actions[num++] = prop_atoms.net_wm_action_move;
|
||||||
if (self->functions & Func_Iconify)
|
if (self->functions & OB_CLIENT_FUNC_ICONIFY)
|
||||||
actions[num++] = prop_atoms.net_wm_action_minimize;
|
actions[num++] = prop_atoms.net_wm_action_minimize;
|
||||||
if (self->functions & Func_Resize)
|
if (self->functions & OB_CLIENT_FUNC_RESIZE)
|
||||||
actions[num++] = prop_atoms.net_wm_action_resize;
|
actions[num++] = prop_atoms.net_wm_action_resize;
|
||||||
if (self->functions & Func_Fullscreen)
|
if (self->functions & OB_CLIENT_FUNC_FULLSCREEN)
|
||||||
actions[num++] = prop_atoms.net_wm_action_fullscreen;
|
actions[num++] = prop_atoms.net_wm_action_fullscreen;
|
||||||
if (self->functions & Func_Maximize) {
|
if (self->functions & OB_CLIENT_FUNC_MAXIMIZE) {
|
||||||
actions[num++] = prop_atoms.net_wm_action_maximize_horz;
|
actions[num++] = prop_atoms.net_wm_action_maximize_horz;
|
||||||
actions[num++] = prop_atoms.net_wm_action_maximize_vert;
|
actions[num++] = prop_atoms.net_wm_action_maximize_vert;
|
||||||
}
|
}
|
||||||
|
@ -1070,20 +1079,20 @@ static void client_change_allowed_actions(ObClient *self)
|
||||||
|
|
||||||
/* make sure the window isn't breaking any rules now */
|
/* make sure the window isn't breaking any rules now */
|
||||||
|
|
||||||
if (!(self->functions & Func_Shade) && self->shaded) {
|
if (!(self->functions & OB_CLIENT_FUNC_SHADE) && self->shaded) {
|
||||||
if (self->frame) client_shade(self, FALSE);
|
if (self->frame) client_shade(self, FALSE);
|
||||||
else self->shaded = FALSE;
|
else self->shaded = FALSE;
|
||||||
}
|
}
|
||||||
if (!(self->functions & Func_Iconify) && self->iconic) {
|
if (!(self->functions & OB_CLIENT_FUNC_ICONIFY) && self->iconic) {
|
||||||
g_message("UNSETTING ICONIC");
|
g_message("UNSETTING ICONIC");
|
||||||
if (self->frame) client_iconify(self, FALSE, TRUE);
|
if (self->frame) client_iconify(self, FALSE, TRUE);
|
||||||
else self->iconic = FALSE;
|
else self->iconic = FALSE;
|
||||||
}
|
}
|
||||||
if (!(self->functions & Func_Fullscreen) && self->fullscreen) {
|
if (!(self->functions & OB_CLIENT_FUNC_FULLSCREEN) && self->fullscreen) {
|
||||||
if (self->frame) client_fullscreen(self, FALSE, TRUE);
|
if (self->frame) client_fullscreen(self, FALSE, TRUE);
|
||||||
else self->fullscreen = FALSE;
|
else self->fullscreen = FALSE;
|
||||||
}
|
}
|
||||||
if (!(self->functions & Func_Maximize) && (self->max_horz ||
|
if (!(self->functions & OB_CLIENT_FUNC_MAXIMIZE) && (self->max_horz ||
|
||||||
self->max_vert)) {
|
self->max_vert)) {
|
||||||
if (self->frame) client_maximize(self, FALSE, 0, TRUE);
|
if (self->frame) client_maximize(self, FALSE, 0, TRUE);
|
||||||
else self->max_vert = self->max_horz = FALSE;
|
else self->max_vert = self->max_horz = FALSE;
|
||||||
|
@ -1305,11 +1314,10 @@ void client_update_icons(ObClient *self)
|
||||||
{
|
{
|
||||||
guint num;
|
guint num;
|
||||||
guint32 *data;
|
guint32 *data;
|
||||||
guint w, h, i;
|
guint w, h, i, j;
|
||||||
int j;
|
|
||||||
|
|
||||||
for (j = 0; j < self->nicons; ++j)
|
for (i = 0; i < self->nicons; ++i)
|
||||||
g_free(self->icons[j].data);
|
g_free(self->icons[i].data);
|
||||||
if (self->nicons > 0)
|
if (self->nicons > 0)
|
||||||
g_free(self->icons);
|
g_free(self->icons);
|
||||||
self->nicons = 0;
|
self->nicons = 0;
|
||||||
|
@ -1482,8 +1490,8 @@ static StackLayer calc_layer(ObClient *self)
|
||||||
StackLayer l;
|
StackLayer l;
|
||||||
|
|
||||||
if (self->fullscreen) l = Layer_Fullscreen;
|
if (self->fullscreen) l = Layer_Fullscreen;
|
||||||
else if (self->type == Type_Desktop) l = Layer_Desktop;
|
else if (self->type == OB_CLIENT_TYPE_DESKTOP) l = Layer_Desktop;
|
||||||
else if (self->type == Type_Dock) {
|
else if (self->type == OB_CLIENT_TYPE_DOCK) {
|
||||||
if (!self->below) l = Layer_Top;
|
if (!self->below) l = Layer_Top;
|
||||||
else l = Layer_Normal;
|
else l = Layer_Normal;
|
||||||
}
|
}
|
||||||
|
@ -1551,8 +1559,9 @@ static void client_showhide(ObClient *self)
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean client_normal(ObClient *self) {
|
gboolean client_normal(ObClient *self) {
|
||||||
return ! (self->type == Type_Desktop || self->type == Type_Dock ||
|
return ! (self->type == OB_CLIENT_TYPE_DESKTOP ||
|
||||||
self->type == Type_Splash);
|
self->type == OB_CLIENT_TYPE_DOCK ||
|
||||||
|
self->type == OB_CLIENT_TYPE_SPLASH);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void client_apply_startup_state(ObClient *self)
|
static void client_apply_startup_state(ObClient *self)
|
||||||
|
@ -1659,11 +1668,11 @@ void client_configure(ObClient *self, ObCorner anchor,
|
||||||
|
|
||||||
/* these override the above states! if you cant move you can't move! */
|
/* these override the above states! if you cant move you can't move! */
|
||||||
if (user) {
|
if (user) {
|
||||||
if (!(self->functions & Func_Move)) {
|
if (!(self->functions & OB_CLIENT_FUNC_MOVE)) {
|
||||||
x = self->area.x;
|
x = self->area.x;
|
||||||
y = self->area.y;
|
y = self->area.y;
|
||||||
}
|
}
|
||||||
if (!(self->functions & Func_Resize)) {
|
if (!(self->functions & OB_CLIENT_FUNC_RESIZE)) {
|
||||||
w = self->area.width;
|
w = self->area.width;
|
||||||
h = self->area.height;
|
h = self->area.height;
|
||||||
}
|
}
|
||||||
|
@ -1818,7 +1827,7 @@ void client_fullscreen(ObClient *self, gboolean fs, gboolean savearea)
|
||||||
{
|
{
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
|
||||||
if (!(self->functions & Func_Fullscreen) || /* can't */
|
if (!(self->functions & OB_CLIENT_FUNC_FULLSCREEN) || /* can't */
|
||||||
self->fullscreen == fs) return; /* already done */
|
self->fullscreen == fs) return; /* already done */
|
||||||
|
|
||||||
self->fullscreen = fs;
|
self->fullscreen = fs;
|
||||||
|
@ -1886,7 +1895,7 @@ static void client_iconify_recursive(ObClient *self,
|
||||||
self->iconic = iconic;
|
self->iconic = iconic;
|
||||||
|
|
||||||
if (iconic) {
|
if (iconic) {
|
||||||
if (self->functions & Func_Iconify) {
|
if (self->functions & OB_CLIENT_FUNC_ICONIFY) {
|
||||||
self->wmstate = IconicState;
|
self->wmstate = IconicState;
|
||||||
self->ignore_unmaps++;
|
self->ignore_unmaps++;
|
||||||
/* we unmap the client itself so that we can get MapRequest
|
/* we unmap the client itself so that we can get MapRequest
|
||||||
|
@ -1949,7 +1958,7 @@ void client_maximize(ObClient *self, gboolean max, int dir, gboolean savearea)
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
|
||||||
g_assert(dir == 0 || dir == 1 || dir == 2);
|
g_assert(dir == 0 || dir == 1 || dir == 2);
|
||||||
if (!(self->functions & Func_Maximize)) return; /* can't */
|
if (!(self->functions & OB_CLIENT_FUNC_MAXIMIZE)) return; /* can't */
|
||||||
|
|
||||||
/* check if already done */
|
/* check if already done */
|
||||||
if (max) {
|
if (max) {
|
||||||
|
@ -2048,7 +2057,8 @@ void client_maximize(ObClient *self, gboolean max, int dir, gboolean savearea)
|
||||||
|
|
||||||
void client_shade(ObClient *self, gboolean shade)
|
void client_shade(ObClient *self, gboolean shade)
|
||||||
{
|
{
|
||||||
if ((!(self->functions & Func_Shade) && shade) || /* can't shade */
|
if ((!(self->functions & OB_CLIENT_FUNC_SHADE) &&
|
||||||
|
shade) || /* can't shade */
|
||||||
self->shaded == shade) return; /* already done */
|
self->shaded == shade) return; /* already done */
|
||||||
|
|
||||||
/* when we're iconic, don't change the wmstate */
|
/* when we're iconic, don't change the wmstate */
|
||||||
|
@ -2064,7 +2074,7 @@ void client_close(ObClient *self)
|
||||||
{
|
{
|
||||||
XEvent ce;
|
XEvent ce;
|
||||||
|
|
||||||
if (!(self->functions & Func_Close)) return;
|
if (!(self->functions & OB_CLIENT_FUNC_CLOSE)) return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
XXX: itd be cool to do timeouts and shit here for killing the client's
|
XXX: itd be cool to do timeouts and shit here for killing the client's
|
||||||
|
@ -2434,7 +2444,7 @@ gboolean client_focused(ObClient *self)
|
||||||
|
|
||||||
ObClientIcon *client_icon(ObClient *self, int w, int h)
|
ObClientIcon *client_icon(ObClient *self, int w, int h)
|
||||||
{
|
{
|
||||||
int i;
|
guint i;
|
||||||
/* si is the smallest image >= req */
|
/* si is the smallest image >= req */
|
||||||
/* li is the largest image < req */
|
/* li is the largest image < req */
|
||||||
unsigned long size, smallest = 0xffffffff, largest = 0, si = 0, li = 0;
|
unsigned long size, smallest = 0xffffffff, largest = 0, si = 0, li = 0;
|
||||||
|
|
|
@ -29,27 +29,29 @@ struct _ObClientIcon
|
||||||
};
|
};
|
||||||
|
|
||||||
/*! Possible window types */
|
/*! Possible window types */
|
||||||
typedef enum {
|
typedef enum
|
||||||
Type_Desktop, /*!< A desktop (bottom-most window) */
|
{
|
||||||
Type_Dock, /*!< A dock bar/panel window */
|
OB_CLIENT_TYPE_DESKTOP, /*!< A desktop (bottom-most window) */
|
||||||
Type_Toolbar, /*!< A toolbar window, pulled off an app */
|
OB_CLIENT_TYPE_DOCK, /*!< A dock bar/panel window */
|
||||||
Type_Menu, /*!< An unpinned menu from an app */
|
OB_CLIENT_TYPE_TOOLBAR, /*!< A toolbar window, pulled off an app */
|
||||||
Type_Utility, /*!< A small utility window such as a palette */
|
OB_CLIENT_TYPE_MENU, /*!< An unpinned menu from an app */
|
||||||
Type_Splash, /*!< A splash screen window */
|
OB_CLIENT_TYPE_UTILITY, /*!< A small utility window such as a palette */
|
||||||
Type_Dialog, /*!< A dialog window */
|
OB_CLIENT_TYPE_SPLASH, /*!< A splash screen window */
|
||||||
Type_Normal /*!< A normal application window */
|
OB_CLIENT_TYPE_DIALOG, /*!< A dialog window */
|
||||||
} WindowType;
|
OB_CLIENT_TYPE_NORMAL /*!< A normal application window */
|
||||||
|
} ObClientType;
|
||||||
|
|
||||||
/*! The things the user can do to the client window */
|
/*! The things the user can do to the client window */
|
||||||
typedef enum {
|
typedef enum
|
||||||
Func_Resize = 1 << 0, /*!< Allow resizing */
|
{
|
||||||
Func_Move = 1 << 1, /*!< Allow moving */
|
OB_CLIENT_FUNC_RESIZE = 1 << 0, /*!< Allow user resizing */
|
||||||
Func_Iconify = 1 << 2, /*!< Allow to be iconified */
|
OB_CLIENT_FUNC_MOVE = 1 << 1, /*!< Allow user moving */
|
||||||
Func_Maximize = 1 << 3, /*!< Allow to be maximized */
|
OB_CLIENT_FUNC_ICONIFY = 1 << 2, /*!< Allow to be iconified */
|
||||||
Func_Shade = 1 << 4, /*!< Allow to be shaded */
|
OB_CLIENT_FUNC_MAXIMIZE = 1 << 3, /*!< Allow to be maximized */
|
||||||
Func_Fullscreen = 1 << 5, /*!< Allow to be made fullscreen */
|
OB_CLIENT_FUNC_SHADE = 1 << 4, /*!< Allow to be shaded */
|
||||||
Func_Close = 1 << 6 /*!< Allow to be closed */
|
OB_CLIENT_FUNC_FULLSCREEN = 1 << 5, /*!< Allow to be made fullscreen */
|
||||||
} Function;
|
OB_CLIENT_FUNC_CLOSE = 1 << 6 /*!< Allow to be closed */
|
||||||
|
} ObFunctions;
|
||||||
|
|
||||||
/*! The decorations the client window wants to be displayed on it */
|
/*! The decorations the client window wants to be displayed on it */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -112,7 +114,7 @@ struct _ObClient
|
||||||
gchar *role;
|
gchar *role;
|
||||||
|
|
||||||
/*! The type of window (what its function is) */
|
/*! The type of window (what its function is) */
|
||||||
WindowType type;
|
ObClientType type;
|
||||||
|
|
||||||
/*! Position and size of the window
|
/*! Position and size of the window
|
||||||
This will not always be the actual position of the window on screen, it
|
This will not always be the actual position of the window on screen, it
|
||||||
|
@ -227,23 +229,23 @@ struct _ObClient
|
||||||
The values in the variable are the decorations that the client wants to
|
The values in the variable are the decorations that the client wants to
|
||||||
be displayed around it.
|
be displayed around it.
|
||||||
*/
|
*/
|
||||||
int decorations;
|
guint decorations;
|
||||||
|
|
||||||
/*! A bitmask of values in the Decoration enum.
|
/*! A bitmask of values in the Decoration enum.
|
||||||
Specifies the decorations that should NOT be displayed on the client.
|
Specifies the decorations that should NOT be displayed on the client.
|
||||||
*/
|
*/
|
||||||
int disabled_decorations;
|
guint disabled_decorations;
|
||||||
|
|
||||||
/*! A bitmask of values in the Function enum
|
/*! A bitmask of values in the ObFunctions enum
|
||||||
The values in the variable specify the ways in which the user is allowed
|
The values in the variable specify the ways in which the user is allowed
|
||||||
to modify this window.
|
to modify this window.
|
||||||
*/
|
*/
|
||||||
int functions;
|
guint functions;
|
||||||
|
|
||||||
/*! Icons for the client as specified on the client window */
|
/*! Icons for the client as specified on the client window */
|
||||||
ObClientIcon *icons;
|
ObClientIcon *icons;
|
||||||
/*! The number of icons in icons */
|
/*! The number of icons in icons */
|
||||||
int nicons;
|
guint nicons;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern GList *client_list;
|
extern GList *client_list;
|
||||||
|
|
|
@ -37,7 +37,7 @@ typedef struct Frame {
|
||||||
Strut size;
|
Strut size;
|
||||||
Rect area;
|
Rect area;
|
||||||
gboolean visible;
|
gboolean visible;
|
||||||
int decorations;
|
guint decorations;
|
||||||
|
|
||||||
Window title;
|
Window title;
|
||||||
Window label;
|
Window label;
|
||||||
|
@ -63,17 +63,17 @@ typedef struct Frame {
|
||||||
|
|
||||||
GSList *clients;
|
GSList *clients;
|
||||||
|
|
||||||
int width; /* title and handle */
|
gint width; /* title and handle */
|
||||||
int label_width;
|
gint label_width;
|
||||||
int icon_x; /* x-position of the window icon button */
|
gint icon_x; /* x-position of the window icon button */
|
||||||
int label_x; /* x-position of the window title */
|
gint label_x; /* x-position of the window title */
|
||||||
int iconify_x; /* x-position of the window iconify button */
|
gint iconify_x; /* x-position of the window iconify button */
|
||||||
int desk_x; /* x-position of the window all-desktops button */
|
gint desk_x; /* x-position of the window all-desktops button */
|
||||||
int shade_x; /* x-position of the window shade button */
|
gint shade_x; /* x-position of the window shade button */
|
||||||
int max_x; /* x-position of the window maximize button */
|
gint max_x; /* x-position of the window maximize button */
|
||||||
int close_x; /* x-position of the window close button */
|
gint close_x; /* x-position of the window close button */
|
||||||
int bwidth; /* border width */
|
gint bwidth; /* border width */
|
||||||
int cbwidth; /* client border width */
|
gint cbwidth; /* client border width */
|
||||||
|
|
||||||
gboolean max_press;
|
gboolean max_press;
|
||||||
gboolean close_press;
|
gboolean close_press;
|
||||||
|
|
|
@ -485,7 +485,7 @@ void screen_show_desktop(gboolean show)
|
||||||
if (show) {
|
if (show) {
|
||||||
/* focus desktop */
|
/* focus desktop */
|
||||||
for (it = focus_order[screen_desktop]; it; it = it->next)
|
for (it = focus_order[screen_desktop]; it; it = it->next)
|
||||||
if (((ObClient*)it->data)->type == Type_Desktop &&
|
if (((ObClient*)it->data)->type == OB_CLIENT_TYPE_DESKTOP &&
|
||||||
client_focus(it->data))
|
client_focus(it->data))
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue