add opaque move/resize to the rc3
Dana Jansens danakj@orodu.net
4 files changed,
62 insertions(+),
16 deletions(-)
M
data/rc3
→
data/rc3
@@ -38,6 +38,16 @@
# A list of names for the desktops names = ("one" "two" "three" "four") +[moveresize] + +# When true windows are moved opaquely, when false just an outline is shown +# while they are moved +#opaque_move = yes + +# When true windows are resized opaquely, when false just an outline is shown +# while they are resized +#opaque_resize = yes + [theme] # the theme to display
M
openbox/config.c
→
openbox/config.c
@@ -12,6 +12,9 @@
int config_desktops_num; GSList *config_desktops_names; +gboolean config_opaque_move; +gboolean config_opaque_resize; + static void parse_focus(char *name, ParseToken *value) { if (!g_ascii_strcasecmp(name, "focusnew")) {@@ -96,6 +99,25 @@ yyerror("invalid option");
parse_free_token(value); } +static void parse_moveresize(char *name, ParseToken *value) +{ + if (!g_ascii_strcasecmp(name, "opaque_move")) { + if (value->type != TOKEN_BOOL) + yyerror("invalid value"); + else { + config_opaque_move = value->data.integer; + } + } else if (!g_ascii_strcasecmp(name, "opaque_resize")) { + if (value->type != TOKEN_BOOL) + yyerror("invalid value"); + else { + config_opaque_resize = value->data.integer; + } + } else + yyerror("invalid option"); + parse_free_token(value); +} + void config_startup() { config_focus_new = TRUE;@@ -114,6 +136,11 @@ config_desktops_num = 4;
config_desktops_names = NULL; parse_reg_section("desktops", NULL, parse_desktops); + + config_opaque_move = TRUE; + config_opaque_resize = TRUE; + + parse_reg_section("moveresize", NULL, parse_moveresize); } void config_shutdown()
M
openbox/config.h
→
openbox/config.h
@@ -13,8 +13,14 @@ /*! Focus the last focused window as a fallback when switching desktops */
extern gboolean config_focus_last_on_desktop; /*! Show a popup dialog while cycling focus */ extern gboolean config_focus_popup; -/*! The number of slits to create */ -extern int config_slit_number; +/*! The number of slits to create + extern int config_slit_number;*/ +/*! When true windows are moved opaquely, when false just an outline is shown + while they are moved */ +extern gboolean config_opaque_move; +/*! When true windows are resize opaquely, when false just an outline is shown + while they are resize */ +extern gboolean config_opaque_resize; /* The name of the theme */ char *config_theme;
M
openbox/moveresize.c
→
openbox/moveresize.c
@@ -6,6 +6,7 @@ #include "client.h"
#include "dispatch.h" #include "openbox.h" #include "popup.h" +#include "config.h" #include "render/render.h" #include "render/theme.h"@@ -33,9 +34,6 @@ static gboolean first_draw = FALSE;
#define POPUP_X (10) #define POPUP_Y (10) - -gboolean config_opaque_move = FALSE; -gboolean config_opaque_resize = FALSE; void moveresize_startup() {@@ -203,17 +201,22 @@ frame_frame_gravity(moveresize_client->frame, &cur_x, &cur_y);
client_configure(moveresize_client, Corner_TopLeft, cur_x, cur_y, start_cw, start_ch, TRUE, FALSE); /* draw the new one */ - if (!config_opaque_move) - XDrawRectangle(ob_display, opaque_window.win, opaque_gc, - moveresize_client->frame->area.x, - moveresize_client->frame->area.y, - moveresize_client->frame->area.width - 1, - moveresize_client->frame->area.height - 1); - /* erase the old one */ - if (!config_opaque_move && !first_draw) - XDrawRectangle(ob_display, opaque_window.win, opaque_gc, - oldx, oldy, oldw - 1, oldh - 1); - first_draw = FALSE; + if (moveresize_client->frame->area.x != oldx || + moveresize_client->frame->area.y != oldy || + moveresize_client->frame->area.width != oldw || + moveresize_client->frame->area.height != oldh) { + if (!config_opaque_move) + XDrawRectangle(ob_display, opaque_window.win, opaque_gc, + moveresize_client->frame->area.x, + moveresize_client->frame->area.y, + moveresize_client->frame->area.width - 1, + moveresize_client->frame->area.height - 1); + /* erase the old one */ + if (!config_opaque_move && !first_draw) + XDrawRectangle(ob_display, opaque_window.win, opaque_gc, + oldx, oldy, oldw - 1, oldh - 1); + first_draw = FALSE; + } /* this would be better with a fixed width font ... XXX can do it better if there are 2 text boxes */