add opaque move/resize to the rc3

This commit is contained in:
Dana Jansens 2003-05-11 23:57:56 +00:00
parent ea6b9cafe9
commit 9938de3693
4 changed files with 62 additions and 16 deletions

View file

@ -38,6 +38,16 @@
# A list of names for the desktops # A list of names for the desktops
names = ("one" "two" "three" "four") 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] [theme]
# the theme to display # the theme to display

View file

@ -12,6 +12,9 @@ char *config_theme;
int config_desktops_num; int config_desktops_num;
GSList *config_desktops_names; GSList *config_desktops_names;
gboolean config_opaque_move;
gboolean config_opaque_resize;
static void parse_focus(char *name, ParseToken *value) static void parse_focus(char *name, ParseToken *value)
{ {
if (!g_ascii_strcasecmp(name, "focusnew")) { if (!g_ascii_strcasecmp(name, "focusnew")) {
@ -96,6 +99,25 @@ static void parse_desktops(char *name, ParseToken *value)
parse_free_token(value); 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() void config_startup()
{ {
config_focus_new = TRUE; config_focus_new = TRUE;
@ -114,6 +136,11 @@ void config_startup()
config_desktops_names = NULL; config_desktops_names = NULL;
parse_reg_section("desktops", NULL, parse_desktops); 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() void config_shutdown()

View file

@ -13,8 +13,14 @@ extern gboolean config_focus_last;
extern gboolean config_focus_last_on_desktop; extern gboolean config_focus_last_on_desktop;
/*! Show a popup dialog while cycling focus */ /*! Show a popup dialog while cycling focus */
extern gboolean config_focus_popup; extern gboolean config_focus_popup;
/*! The number of slits to create */ /*! The number of slits to create
extern int config_slit_number; 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 */ /* The name of the theme */
char *config_theme; char *config_theme;

View file

@ -6,6 +6,7 @@
#include "dispatch.h" #include "dispatch.h"
#include "openbox.h" #include "openbox.h"
#include "popup.h" #include "popup.h"
#include "config.h"
#include "render/render.h" #include "render/render.h"
#include "render/theme.h" #include "render/theme.h"
@ -34,9 +35,6 @@ static gboolean first_draw = FALSE;
#define POPUP_X (10) #define POPUP_X (10)
#define POPUP_Y (10) #define POPUP_Y (10)
gboolean config_opaque_move = FALSE;
gboolean config_opaque_resize = FALSE;
void moveresize_startup() void moveresize_startup()
{ {
XSetWindowAttributes attrib; XSetWindowAttributes attrib;
@ -203,17 +201,22 @@ static void do_move()
client_configure(moveresize_client, Corner_TopLeft, cur_x, cur_y, client_configure(moveresize_client, Corner_TopLeft, cur_x, cur_y,
start_cw, start_ch, TRUE, FALSE); start_cw, start_ch, TRUE, FALSE);
/* draw the new one */ /* draw the new one */
if (!config_opaque_move) if (moveresize_client->frame->area.x != oldx ||
XDrawRectangle(ob_display, opaque_window.win, opaque_gc, moveresize_client->frame->area.y != oldy ||
moveresize_client->frame->area.x, moveresize_client->frame->area.width != oldw ||
moveresize_client->frame->area.y, moveresize_client->frame->area.height != oldh) {
moveresize_client->frame->area.width - 1, if (!config_opaque_move)
moveresize_client->frame->area.height - 1); XDrawRectangle(ob_display, opaque_window.win, opaque_gc,
/* erase the old one */ moveresize_client->frame->area.x,
if (!config_opaque_move && !first_draw) moveresize_client->frame->area.y,
XDrawRectangle(ob_display, opaque_window.win, opaque_gc, moveresize_client->frame->area.width - 1,
oldx, oldy, oldw - 1, oldh - 1); moveresize_client->frame->area.height - 1);
first_draw = FALSE; /* 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 /* this would be better with a fixed width font ... XXX can do it better
if there are 2 text boxes */ if there are 2 text boxes */