all repos — openbox @ 9938de36938107546b2e5b0410cc97d7a01632e7

openbox fork - make it a bit more like ryudo

add opaque move/resize to the rc3
Dana Jansens danakj@orodu.net
commit

9938de36938107546b2e5b0410cc97d7a01632e7

parent

ea6b9cafe94672bd1798e04e6962eb8ae9d2b8ac

4 files changed, 62 insertions(+), 16 deletions(-)

jump to
M data/rc3data/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.copenbox/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.hopenbox/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.copenbox/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 */