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
|
# 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
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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,6 +201,10 @@ 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 (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)
|
if (!config_opaque_move)
|
||||||
XDrawRectangle(ob_display, opaque_window.win, opaque_gc,
|
XDrawRectangle(ob_display, opaque_window.win, opaque_gc,
|
||||||
moveresize_client->frame->area.x,
|
moveresize_client->frame->area.x,
|
||||||
|
@ -214,6 +216,7 @@ static void do_move()
|
||||||
XDrawRectangle(ob_display, opaque_window.win, opaque_gc,
|
XDrawRectangle(ob_display, opaque_window.win, opaque_gc,
|
||||||
oldx, oldy, oldw - 1, oldh - 1);
|
oldx, oldy, oldw - 1, oldh - 1);
|
||||||
first_draw = FALSE;
|
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 */
|
||||||
|
|
Loading…
Reference in a new issue