]> Dogcows Code - chaz/openbox/commitdiff
add opaque move/resize to the rc3
authorDana Jansens <danakj@orodu.net>
Sun, 11 May 2003 23:57:56 +0000 (23:57 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 11 May 2003 23:57:56 +0000 (23:57 +0000)
data/rc3
openbox/config.c
openbox/config.h
openbox/moveresize.c

index fd16dc936975d9ad79c0b2440ae508395d9da392..01c9525ec156d4e6f5afa9dac20b1941a91c4369 100644 (file)
--- a/data/rc3
+++ b/data/rc3
 # 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
index 959f6c2c22b768fcccf249a4cddf8c69fbf5eebe..5624c48c30d2b215ed2689c521bc311e72fda44c 100644 (file)
@@ -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()
index 49e7c44e407dcb0892e7d50e646533f82c53cf10..c268503abb2ca1d17c866298485f7a58c6a0a391 100644 (file)
@@ -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;
index ddaa27621174d399c4fa44bafc70f273a30d85c8..9a1b4319220cf0a0d1d307d1dd3a4e9c77d4be15 100644 (file)
@@ -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 */
This page took 0.029161 seconds and 4 git commands to generate.