Enlightenment CVS committal

Author  : mej
Project : eterm
Module  : Eterm

Dir     : eterm/Eterm/src


Modified Files:
        command.c feature.h options.c options.h screen.c startup.c 
        startup.h term.c windows.c 


Log Message:
Tue Dec 14 17:22:23 2004                        Michael Jennings (mej)

The benefits of being a passenger on a long road trip...  The
beginnings of EWMH opacity (a la xcompmgr) support and (hopefully)
UTF-8 support.  Both as yet untested.
----------------------------------------------------------------------

===================================================================
RCS file: /cvsroot/enlightenment/eterm/Eterm/src/command.c,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -3 -r1.100 -r1.101
--- command.c   11 Mar 2004 13:59:44 -0000      1.100
+++ command.c   14 Dec 2004 23:24:24 -0000      1.101
@@ -34,7 +34,7 @@
  * he guarantee anything whatsoever.
  *----------------------------------------------------------------------*/
 
-static const char cvs_ident[] = "$Id: command.c,v 1.100 2004/03/11 13:59:44 
mej Exp $";
+static const char cvs_ident[] = "$Id: command.c,v 1.101 2004/12/14 23:24:24 
mej Exp $";
 
 /* includes: */
 #include "config.h"
@@ -107,6 +107,11 @@
 #if defined(linux)
 # include <linux/tty.h>         /* For N_TTY_BUF_SIZE. */
 #endif
+#ifdef MULTI_CHARSET
+# include <locale.h>
+# include <langinfo.h>
+# include <iconv.h>
+#endif
 
 /* Eterm-specific Headers */
 #include "command.h"
@@ -3464,9 +3469,7 @@
         if (ch >= ' ' || ch == '\t' || ch == '\n' || ch == '\r') {
             /* Read a text string from the input buffer */
             int nlines = 0;
-
-            /*           unsigned char * str; */
-            register unsigned char *str;
+            unsigned char *str;
 
             D_CMD(("Command buffer contains %d characters.\n", cmdbuf_endp - 
cmdbuf_ptr));
             D_VT(("\n%s\n\n", safe_print_string(cmdbuf_ptr - 1, cmdbuf_endp - 
cmdbuf_ptr + 1)));
@@ -3489,18 +3492,59 @@
                 }
 #endif
                 if (ch >= ' ' || ch == '\t' || ch == '\r') {
-                    /* nothing */
+                    NOP;
                 } else if (ch == '\n') {
                     nlines++;
                     if (++refresh_count >= (refresh_limit * 
(TERM_WINDOW_GET_ROWS() - 1)))
                         break;
-                } else {        /* unprintable */
+                } else {
+                    /* unprintable */
                     cmdbuf_ptr--;
                     break;
                 }
             }
-            D_SCREEN(("Adding %d lines (%d chars); str == %8p, cmdbuf_ptr == 
%8p, cmdbuf_endp == %8p\n", nlines, cmdbuf_ptr - str, str, cmdbuf_ptr, 
cmdbuf_endp));
-            scr_add_lines(str, nlines, (cmdbuf_ptr - str));
+            D_SCREEN(("Adding %d lines (%d chars); str == %8p, cmdbuf_ptr == 
%8p, cmdbuf_endp == %8p\n",
+                      nlines, cmdbuf_ptr - str, str, cmdbuf_ptr, cmdbuf_endp));
+#ifdef MULTI_CHARSET
+            if (!strcmp(nl_langinfo(CODESET), "UTF-8")) {
+                iconv_t handle;
+
+                handle = iconv_open("UTF-8", "UCS2");
+                if (handle == SPIF_CAST_C(iconv_t) -1) {
+                    print_error("Unable to decode UTF-8 locale %s to UCS-2.  
Defaulting to portable C locale.\n",
+                                setlocale(LC_ALL, ""));
+                    setlocale(LC_ALL, "C");
+                } else {
+                    char *outbuff, *pinbuff, *poutbuff;
+                    size_t bufflen, outlen = 0, retval;
+
+                    pinbuff = (char *) str;
+                    bufflen = cmdbuf_ptr - str;
+                    poutbuff = outbuff = SPIF_CAST_C(char *) MALLOC(bufflen * 
6);
+                    errno = 0;
+                    retval = iconv(handle, &pinbuff, &bufflen, &poutbuff, 
&outlen);
+                    if (retval != (size_t) -1) {
+                        errno = 0;
+                    }
+                    if (errno == E2BIG) {
+                        print_error("My UTF-8 decode buffer was too small by 
%lu bytes?!", bufflen);
+                    } else if (errno == EILSEQ) {
+                        print_error("Illegal multibyte sequence encountered at 
\'%c\' (0x%02x); skipping.\n",
+                                    *pinbuff, *pinbuff);
+                        *pinbuff = ' ';
+                        pinbuff++;
+                    } else if (errno == EINVAL) {
+                        D_VT(("Incomplete multibyte sequence encountered.\n"));
+                    }
+
+                    if (pinbuff > (char *) str) {
+                        cmdbuf_ptr = (unsigned char *) pinbuff;
+                        scr_add_lines(str, nlines, (cmdbuf_ptr - str));
+                    }
+                }
+            } else
+#endif
+                scr_add_lines(str, nlines, (cmdbuf_ptr - str));
         } else {
             switch (ch) {
 # ifdef NO_ENQ_ANS
===================================================================
RCS file: /cvsroot/enlightenment/eterm/Eterm/src/feature.h,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -3 -r1.44 -r1.45
--- feature.h   23 Jul 2004 16:23:06 -0000      1.44
+++ feature.h   14 Dec 2004 23:24:27 -0000      1.45
@@ -202,7 +202,7 @@
 #define META8_OPTION
 
 /* Attempt to deactivate UTF-8 and similar locales. */
-#define NO_UTF8_LOCALE
+/* #define NO_UTF8_LOCALE */
 
 /********************* Miscellaneous options *********************/
 
===================================================================
RCS file: /cvsroot/enlightenment/eterm/Eterm/src/options.c,v
retrieving revision 1.133
retrieving revision 1.134
diff -u -3 -r1.133 -r1.134
--- options.c   20 Apr 2004 17:50:14 -0000      1.133
+++ options.c   14 Dec 2004 23:24:28 -0000      1.134
@@ -21,7 +21,7 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char cvs_ident[] = "$Id: options.c,v 1.133 2004/04/20 17:50:14 
mej Exp $";
+static const char cvs_ident[] = "$Id: options.c,v 1.134 2004/12/14 23:24:28 
mej Exp $";
 
 #include "config.h"
 #include "feature.h"
@@ -150,6 +150,7 @@
 unsigned char rs_es_dock = BBAR_DOCKED_BOTTOM;
 char *rs_es_font = NULL;
 #endif
+spif_uint32_t rs_opacity = 0xffffffff;
 unsigned int rs_line_space = 0;
 unsigned int rs_meta_mod = 0, rs_alt_mod = 0, rs_numlock_mod = 0;
 #ifdef KEYSYM_ATTRIBUTE
@@ -245,6 +246,7 @@
     SPIFOPT_STR_LONG("trough-pixmap", "scrollbar background (trough) pixmap", 
rs_pixmaps[image_sb]),
     SPIFOPT_STR_LONG("anchor-pixmap", "scrollbar anchor pixmap", 
rs_pixmaps[image_sa]),
     SPIFOPT_STR_LONG("menu-pixmap", "menu pixmap", rs_pixmaps[image_menu]),
+    SPIFOPT_INT('o', "opacity", "window opacity (0-255; requires X COMPOSITE 
extension)", rs_opacity),
     SPIFOPT_BOOL('O', "trans", "creates a pseudo-transparent Eterm", 
image_options, IMAGE_OPTIONS_TRANS),
     SPIFOPT_BOOL('0', "itrans", "use immotile-optimized transparency", 
image_options, IMAGE_OPTIONS_ITRANS),
     SPIFOPT_BOOL_LONG("viewport-mode", "use viewport mode for the background 
image", image_options, IMAGE_OPTIONS_VIEWPORT),
@@ -2962,6 +2964,12 @@
     }
 #endif
 
+    if (rs_opacity < 0x100) {
+        rs_opacity |= (rs_opacity << 24) | (rs_opacity << 16) | (rs_opacity << 
8);
+    } else {
+        rs_opacity = 0xffffffff;
+    }
+
     if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_REVERSE_VIDEO)) {
         char *tmp;
 
===================================================================
RCS file: /cvsroot/enlightenment/eterm/Eterm/src/options.h,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -3 -r1.50 -r1.51
--- options.h   23 Jul 2004 16:28:25 -0000      1.50
+++ options.h   14 Dec 2004 23:24:30 -0000      1.51
@@ -125,6 +125,7 @@
 extern unsigned char rs_es_dock;
 extern char *rs_es_font;
 #endif
+extern spif_uint32_t rs_opacity;
 extern unsigned int rs_line_space;
 extern unsigned int rs_meta_mod, rs_alt_mod, rs_numlock_mod;
 #ifndef NO_BOLDFONT
===================================================================
RCS file: /cvsroot/enlightenment/eterm/Eterm/src/screen.c,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -3 -r1.77 -r1.78
--- screen.c    20 Jan 2004 02:04:04 -0000      1.77
+++ screen.c    14 Dec 2004 23:24:30 -0000      1.78
@@ -3,7 +3,7 @@
  *
  */
 
-static const char cvs_ident[] = "$Id: screen.c,v 1.77 2004/01/20 02:04:04 mej 
Exp $";
+static const char cvs_ident[] = "$Id: screen.c,v 1.78 2004/12/14 23:24:30 mej 
Exp $";
 
 #include "config.h"
 #include "feature.h"
@@ -183,7 +183,8 @@
         buf_rend = CALLOC(rend_t *, total_rows);
         drawn_rend = CALLOC(rend_t *, TERM_WINDOW_GET_REPORTED_ROWS());
         swap.rend = CALLOC(rend_t *, TERM_WINDOW_GET_REPORTED_ROWS());
-        D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, 
swap.rend == %8p\n", screen.text, screen.rend, swap.text, swap.rend));
+        D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, 
swap.rend == %8p\n",
+                  screen.text, screen.rend, swap.text, swap.rend));
 
         for (i = 0; i < TERM_WINDOW_GET_REPORTED_ROWS(); i++) {
             j = i + TermWin.saveLines;
@@ -226,7 +227,8 @@
             buf_rend = REALLOC(buf_rend, total_rows * sizeof(rend_t *));
             drawn_rend = REALLOC(drawn_rend, TERM_WINDOW_GET_REPORTED_ROWS() * 
sizeof(rend_t *));
             swap.rend = REALLOC(swap.rend, TERM_WINDOW_GET_REPORTED_ROWS() * 
sizeof(rend_t *));
-            D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == 
%8p, swap.rend == %8p\n", screen.text, screen.rend, swap.text, swap.rend));
+            D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == 
%8p, swap.rend == %8p\n",
+                      screen.text, screen.rend, swap.text, swap.rend));
 
             /* we have fewer rows so fix up number of scrolled lines */
             UPPER_BOUND(screen.row, TERM_WINDOW_GET_REPORTED_ROWS() - 1);
@@ -242,7 +244,8 @@
             buf_rend = REALLOC(buf_rend, total_rows * sizeof(rend_t *));
             drawn_rend = REALLOC(drawn_rend, TERM_WINDOW_GET_REPORTED_ROWS() * 
sizeof(rend_t *));
             swap.rend = REALLOC(swap.rend, TERM_WINDOW_GET_REPORTED_ROWS() * 
sizeof(rend_t *));
-            D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == 
%8p, swap.rend == %8p\n", screen.text, screen.rend, swap.text, swap.rend));
+            D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == 
%8p, swap.rend == %8p\n",
+                      screen.text, screen.rend, swap.text, swap.rend));
 
             k = MIN(TermWin.nscrolled, TERM_WINDOW_GET_REPORTED_ROWS() - 
prev_nrow);
             for (i = prev_total_rows; i < total_rows - k; i++) {
@@ -279,7 +282,8 @@
                     screen.rend[i] = REALLOC(screen.rend[i], 
TERM_WINDOW_GET_REPORTED_COLS() * sizeof(rend_t));
                     screen.text[i][TERM_WINDOW_GET_REPORTED_COLS()] = MIN(tc, 
TERM_WINDOW_GET_REPORTED_COLS());
                     if (TERM_WINDOW_GET_REPORTED_COLS() > prev_ncol)
-                        blank_line(&(screen.text[i][prev_ncol]), 
&(screen.rend[i][prev_ncol]), TERM_WINDOW_GET_REPORTED_COLS() - prev_ncol, 
DEFAULT_RSTYLE);
+                        blank_line(&(screen.text[i][prev_ncol]), 
&(screen.rend[i][prev_ncol]),
+                                   TERM_WINDOW_GET_REPORTED_COLS() - 
prev_ncol, DEFAULT_RSTYLE);
                 }
             }
             for (i = 0; i < TERM_WINDOW_GET_REPORTED_ROWS(); i++) {
@@ -291,10 +295,12 @@
                     swap.rend[i] = REALLOC(swap.rend[i], 
TERM_WINDOW_GET_REPORTED_COLS() * sizeof(rend_t));
                     swap.text[i][TERM_WINDOW_GET_REPORTED_COLS()] = MIN(tc, 
TERM_WINDOW_GET_REPORTED_COLS());
                     if (TERM_WINDOW_GET_REPORTED_COLS() > prev_ncol)
-                        blank_line(&(swap.text[i][prev_ncol]), 
&(swap.rend[i][prev_ncol]), TERM_WINDOW_GET_REPORTED_COLS() - prev_ncol, 
DEFAULT_RSTYLE);
+                        blank_line(&(swap.text[i][prev_ncol]), 
&(swap.rend[i][prev_ncol]),
+                                   TERM_WINDOW_GET_REPORTED_COLS() - 
prev_ncol, DEFAULT_RSTYLE);
                 }
                 if (TERM_WINDOW_GET_REPORTED_COLS() > prev_ncol)
-                    blank_line(&(drawn_text[i][prev_ncol]), 
&(drawn_rend[i][prev_ncol]), TERM_WINDOW_GET_REPORTED_COLS() - prev_ncol, 
DEFAULT_RSTYLE);
+                    blank_line(&(drawn_text[i][prev_ncol]), 
&(drawn_rend[i][prev_ncol]),
+                               TERM_WINDOW_GET_REPORTED_COLS() - prev_ncol, 
DEFAULT_RSTYLE);
             }
         }
         if (tabs)
===================================================================
RCS file: /cvsroot/enlightenment/eterm/Eterm/src/startup.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -3 -r1.48 -r1.49
--- startup.c   7 Nov 2004 20:38:20 -0000       1.48
+++ startup.c   14 Dec 2004 23:24:31 -0000      1.49
@@ -21,7 +21,7 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char cvs_ident[] = "$Id: startup.c,v 1.48 2004/11/07 20:38:20 mej 
Exp $";
+static const char cvs_ident[] = "$Id: startup.c,v 1.49 2004/12/14 23:24:31 mej 
Exp $";
 
 #include "config.h"
 #include "feature.h"
@@ -150,6 +150,7 @@
     props[PROP_DND_PROTOCOL] = XInternAtom(Xdisplay, "DndProtocol", False);
     props[PROP_DND_SELECTION] = XInternAtom(Xdisplay, "DndSelection", False);
     props[PROP_EWMH_ICON] = XInternAtom(Xdisplay, "_NET_WM_ICON", False);
+    props[PROP_EWMH_OPACITY] = XInternAtom(Xdisplay, "_NET_WM_WINDOW_OPACITY", 
True);
 
     if ((theme_dir = conf_parse_theme(&rs_theme, THEME_CFG, PARSE_TRY_ALL)) != 
NULL) {
         char *tmp;
===================================================================
RCS file: /cvsroot/enlightenment/eterm/Eterm/src/startup.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- startup.h   11 Jan 2004 22:10:29 -0000      1.19
+++ startup.h   14 Dec 2004 23:24:32 -0000      1.20
@@ -103,6 +103,7 @@
   PROP_DND_PROTOCOL,
   PROP_DND_SELECTION,
   PROP_EWMH_ICON,
+  PROP_EWMH_OPACITY,
   NUM_PROPS
 };
 
===================================================================
RCS file: /cvsroot/enlightenment/eterm/Eterm/src/term.c,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -3 -r1.104 -r1.105
--- term.c      14 Jul 2004 20:18:30 -0000      1.104
+++ term.c      14 Dec 2004 23:24:32 -0000      1.105
@@ -21,7 +21,7 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char cvs_ident[] = "$Id: term.c,v 1.104 2004/07/14 20:18:30 mej 
Exp $";
+static const char cvs_ident[] = "$Id: term.c,v 1.105 2004/12/14 23:24:32 mej 
Exp $";
 
 #include "config.h"
 #include "feature.h"
@@ -2017,7 +2017,8 @@
                     if ((valptr = (char *) strsep(&tnstr, ";")) == NULL) {
                         break;
                     }
-                    D_CMD(("Modifying the %s attribute of the %s color 
modifier of the %s image to be %s\n", mod, color, get_image_type(which), 
valptr));
+                    D_CMD(("Modifying the %s attribute of the %s color 
modifier of the %s image to be %s\n",
+                           mod, color, get_image_type(which), valptr));
                     changed = 1;
 # ifdef PIXMAP_OFFSET
                     if (image_mode_is(which, MODE_TRANS) && (desktop_pixmap != 
None)) {
@@ -2365,30 +2366,37 @@
                     xev.message_type = props[PROP_DESKTOP];
                     xev.format = 32;
                     xev.data.l[0] = rs_desktop;
-                    XChangeProperty(Xdisplay, TermWin.parent, 
xev.message_type, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) 
&rs_desktop, 1);
+                    XChangeProperty(Xdisplay, TermWin.parent, 
xev.message_type, XA_CARDINAL, 32,
+                                    PropModeReplace, (unsigned char *) 
&rs_desktop, 1);
                     XSendEvent(Xdisplay, Xroot, False, SubstructureNotifyMask, 
(XEvent *) & xev);
                 }
                 break;
-#if 0
-            case 70:
-                /* Exit Eterm */
-                exit(0);
-                break;
-            case 71:
-                /* Save current config */
+            case 51:
+                /* Change opacity */
                 nstr = (char *) strsep(&tnstr, ";");
                 if (nstr && *nstr) {
-                    valptr = (char *) strsep(&tnstr, ";");
-                    if (!strcasecmp(nstr, "theme")) {
-                        save_config(valptr, SAVE_THEME_CONFIG);
+                    XClientMessageEvent xev;
+                    spif_uint32_t tmp;
+
+                    tmp = (int) strtol(nstr, (char **) NULL, 0);
+                    if (tmp < 0x100) {
+                        rs_opacity = tmp | (tmp << 24) | (tmp << 16) | (tmp << 
8);
                     } else {
-                        save_config(valptr, SAVE_USER_CONFIG);
+                        rs_opacity = 0xffffffff;
                     }
-                } else {
-                    save_config(NULL, SAVE_USER_CONFIG);
+                    xev.type = ClientMessage;
+                    xev.window = TermWin.parent;
+                    xev.message_type = props[PROP_EWMH_OPACITY];
+                    xev.format = 32;
+                    xev.data.l[0] = rs_opacity;
+                    XChangeProperty(Xdisplay, TermWin.parent, 
xev.message_type, XA_CARDINAL, 32,
+                                    PropModeReplace, (unsigned char *) 
&rs_opacity, 1);
+                    XChangeProperty(Xdisplay, TermWin.vt, xev.message_type, 
XA_CARDINAL, 32,
+                                    PropModeReplace, (unsigned char *) 
&rs_opacity, 1);
+                    XSendEvent(Xdisplay, Xroot, False, SubstructureNotifyMask, 
(XEvent *) (&xev));
                 }
                 break;
-#endif
+
             case 72:
                 /* Search scrollback buffer for a string.  NULL to clear. */
                 nstr = (char *) strsep(&tnstr, ";");
@@ -2398,15 +2406,7 @@
                     scr_search_scrollback(NULL);
                 }
                 break;
-#if 0
-            case 73:
-                /* Spawn a subprogram */
-                nstr = (char *) strsep(&tnstr, ";");
-                if (nstr && *nstr) {
-                    system_no_wait(nstr);
-                }
-                break;
-#endif
+
             case 80:
                 /* Set debugging level */
                 nstr = (char *) strsep(&tnstr, ";");
===================================================================
RCS file: /cvsroot/enlightenment/eterm/Eterm/src/windows.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -3 -r1.67 -r1.68
--- windows.c   25 Jun 2004 21:52:00 -0000      1.67
+++ windows.c   14 Dec 2004 23:24:33 -0000      1.68
@@ -21,7 +21,7 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char cvs_ident[] = "$Id: windows.c,v 1.67 2004/06/25 21:52:00 mej 
Exp $";
+static const char cvs_ident[] = "$Id: windows.c,v 1.68 2004/12/14 23:24:33 mej 
Exp $";
 
 #include "config.h"
 #include "feature.h"
@@ -380,7 +380,8 @@
     }
     Attributes.colormap = cmap;
 
-    szHint.base_width = (2 * TermWin.internalBorder + 
((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR)) ? 
(scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0));
+    szHint.base_width = (2 * TermWin.internalBorder + 
((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR))
+                                                       ? 
(scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0));
     szHint.base_height = (2 * TermWin.internalBorder) + 
bbar_calc_docked_height(BBAR_DOCKED);
 
     flags = (rs_geometry ? XParseGeometry(rs_geometry, &x, &y, &width, 
&height) : 0);
@@ -447,8 +448,10 @@
     XSelectInput(Xdisplay, TermWin.parent, (KeyPressMask | FocusChangeMask | 
StructureNotifyMask | VisibilityChangeMask | PropertyChangeMask));
     if (mwmhints.flags) {
         prop = XInternAtom(Xdisplay, "_MOTIF_WM_HINTS", False);
-        XChangeProperty(Xdisplay, TermWin.parent, prop, prop, 32, 
PropModeReplace, (unsigned char *) &mwmhints, PROP_MWM_HINTS_ELEMENTS);
+        XChangeProperty(Xdisplay, TermWin.parent, prop, prop, 32,
+                        PropModeReplace, (unsigned char *) &mwmhints, 
PROP_MWM_HINTS_ELEMENTS);
     }
+
     /* vt cursor: Black-on-White is standard, but this is more popular */
     TermWin_cursor = XCreateFontCursor(Xdisplay, XC_xterm);
     set_pointer_colors(NULL, NULL);
@@ -457,9 +460,12 @@
     cursor = XCreateFontCursor(Xdisplay, XC_left_ptr);
 
     /* the vt window */
-    TermWin.x = (((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR)) && 
!(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT))) ? 
(scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0);
+    TermWin.x = (((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR))
+                  && !(BITFIELD_IS_SET(eterm_options, 
ETERM_OPTIONS_SCROLLBAR_RIGHT)))
+                 ? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0);
     TermWin.y = bbar_calc_docked_height(BBAR_DOCKED_TOP);
-    TermWin.vt = XCreateWindow(Xdisplay, TermWin.parent, TermWin.x, TermWin.y, 
szHint.width, szHint.height, 0, Xdepth, InputOutput, CopyFromParent,
+    TermWin.vt = XCreateWindow(Xdisplay, TermWin.parent, TermWin.x, TermWin.y, 
szHint.width, szHint.height,
+                               0, Xdepth, InputOutput, CopyFromParent,
                                CWBackPixel | CWBorderPixel | 
CWOverrideRedirect | CWColormap, &Attributes);
     D_X11(("Created terminal window 0x%08x at %dx%d\n", TermWin.vt, TermWin.x, 
TermWin.y));
     if (!(background_is_pixmap()) && !(BITFIELD_IS_SET(eterm_options, 
ETERM_OPTIONS_BORDERLESS))) {
@@ -475,7 +481,16 @@
     /* If the user wants a specific desktop, tell the WM that */
     if (rs_desktop != -1) {
         val = rs_desktop;
-        XChangeProperty(Xdisplay, TermWin.parent, props[PROP_DESKTOP], 
XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &val, 1);
+        XChangeProperty(Xdisplay, TermWin.parent, props[PROP_DESKTOP],
+                        XA_CARDINAL, 32, PropModeReplace, (unsigned char *) 
&val, 1);
+    }
+
+    /* Set window opacity if needed. */
+    if ((props[PROP_EWMH_OPACITY] != None) && (rs_opacity != 0xff)) {
+        XChangeProperty(Xdisplay, TermWin.parent, props[PROP_EWMH_OPACITY],
+                        XA_CARDINAL, 32, PropModeReplace, SPIF_CAST_PTR(uchar) 
&rs_opacity, 1);
+        XChangeProperty(Xdisplay, TermWin.vt, props[PROP_EWMH_OPACITY],
+                        XA_CARDINAL, 32, PropModeReplace, SPIF_CAST_PTR(uchar) 
&rs_opacity, 1);
     }
 
     /* We're done creating our windows.  Now let's initialize the event 
subsystem to handle them. */




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to