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")) {
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;
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()
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;
#include "dispatch.h"
#include "openbox.h"
#include "popup.h"
+#include "config.h"
#include "render/render.h"
#include "render/theme.h"
#define POPUP_X (10)
#define POPUP_Y (10)
-gboolean config_opaque_move = FALSE;
-gboolean config_opaque_resize = FALSE;
-
void moveresize_startup()
{
XSetWindowAttributes attrib;
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 */