add opaque move/resize to the rc3
This commit is contained in:
parent
ea6b9cafe9
commit
9938de3693
4 changed files with 62 additions and 16 deletions
10
data/rc3
10
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
|
||||
|
|
|
@ -12,6 +12,9 @@ char *config_theme;
|
|||
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 @@ static void parse_desktops(char *name, ParseToken *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()
|
||||
{
|
||||
config_focus_new = TRUE;
|
||||
|
@ -114,6 +136,11 @@ void config_startup()
|
|||
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()
|
||||
|
|
|
@ -13,8 +13,14 @@ extern gboolean config_focus_last;
|
|||
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;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "dispatch.h"
|
||||
#include "openbox.h"
|
||||
#include "popup.h"
|
||||
#include "config.h"
|
||||
#include "render/render.h"
|
||||
#include "render/theme.h"
|
||||
|
||||
|
@ -34,9 +35,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()
|
||||
{
|
||||
XSetWindowAttributes attrib;
|
||||
|
@ -203,6 +201,10 @@ static void do_move()
|
|||
client_configure(moveresize_client, Corner_TopLeft, cur_x, cur_y,
|
||||
start_cw, start_ch, TRUE, FALSE);
|
||||
/* draw the new one */
|
||||
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,
|
||||
|
@ -214,6 +216,7 @@ static void do_move()
|
|||
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 */
|
||||
|
|
Loading…
Reference in a new issue