summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-05-11 23:57:56 +0000
committerDana Jansens <danakj@orodu.net>2003-05-11 23:57:56 +0000
commit9938de36938107546b2e5b0410cc97d7a01632e7 (patch)
tree76e33f9d2ff93a3bcccf462474a022f5fe4d89db /openbox
parentea6b9cafe94672bd1798e04e6962eb8ae9d2b8ac (diff)
add opaque move/resize to the rc3
Diffstat (limited to 'openbox')
-rw-r--r--openbox/config.c27
-rw-r--r--openbox/config.h10
-rw-r--r--openbox/moveresize.c31
3 files changed, 52 insertions, 16 deletions
diff --git a/openbox/config.c b/openbox/config.c
index 959f6c2c..5624c48c 100644
--- a/openbox/config.c
+++ b/openbox/config.c
@@ -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()
diff --git a/openbox/config.h b/openbox/config.h
index 49e7c44e..c268503a 100644
--- a/openbox/config.h
+++ b/openbox/config.h
@@ -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;
diff --git a/openbox/moveresize.c b/openbox/moveresize.c
index ddaa2762..9a1b4319 100644
--- a/openbox/moveresize.c
+++ b/openbox/moveresize.c
@@ -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,17 +201,22 @@ 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 (!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 */