Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/dox Modified Files: dox.c dox.h Log Message: Various tweaks for nested E. =================================================================== RCS file: /cvsroot/enlightenment/e16/e/dox/dox.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -3 -r1.30 -r1.31 --- dox.c 4 May 2004 19:04:19 -0000 1.30 +++ dox.c 1 Jul 2004 21:04:39 -0000 1.31 @@ -28,6 +28,7 @@ #include <X11/Xosdefs.h> #include <X11/Xproto.h> #include <X11/keysym.h> +#include <X11/Xatom.h> #ifdef HAS_XINERAMA #include <X11/extensions/Xinerama.h> @@ -41,39 +42,6 @@ #pragma 2 #endif -/* Motif window hints */ -#define MWM_HINTS_FUNCTIONS (1L << 0) -#define MWM_HINTS_DECORATIONS (1L << 1) - -/* bit definitions for MwmHints.functions */ -#define MWM_FUNC_ALL (1L << 0) -#define MWM_FUNC_RESIZE (1L << 1) -#define MWM_FUNC_MOVE (1L << 2) -#define MWM_FUNC_MINIMIZE (1L << 3) -#define MWM_FUNC_MAXIMIZE (1L << 4) -#define MWM_FUNC_CLOSE (1L << 5) - -/* bit definitions for MwmHints.decorations */ -#define MWM_DECOR_ALL (1L << 0) -#define MWM_DECOR_BORDER (1L << 1) -#define MWM_DECOR_RESIZEH (1L << 2) -#define MWM_DECOR_TITLE (1L << 3) -#define MWM_DECOR_MENU (1L << 4) -#define MWM_DECOR_MINIMIZE (1L << 5) -#define MWM_DECOR_MAXIMIZE (1L << 6) - -#define PROP_MWM_HINTS_ELEMENTS 4 - -#define STARTPOS 4 /* to bypass next/prev/exit buttons for key binding positions */ - -typedef struct _mwmhints -{ - CARD32 flags; - CARD32 functions; - CARD32 decorations; - INT32 inputMode; -} MWMHints; - Display *disp; Root VRoot; @@ -94,18 +62,88 @@ Imlib_Image *im_exit1, *im_exit2; char *docdir = NULL; -Window CreateWindow(Window parent, int x, int y, int ww, int hh); -int ReadHeader(FILE * f); -int ReadPages(FILE * f); +static Window +FindRootWindow(Display * dpy) +{ + Window win1, win2, win3, root_win; + char *str; + Atom a, at; + int format_ret; + unsigned long bytes_after, num_ret; + unsigned char *retval; + + root_win = DefaultRootWindow(dpy); + + str = getenv("ENL_WM_ROOT"); + if (!str) + goto done; + win1 = strtoul(str, NULL, 0); + + a = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", True); + + XGetWindowProperty(dpy, win1, a, 0, 1, False, XA_WINDOW, &at, + &format_ret, &num_ret, &bytes_after, &retval); + if (!retval) + goto done; + win2 = *((Window *) retval); + XFree(retval); + + XGetWindowProperty(dpy, win2, a, 0, 1, False, XA_WINDOW, &at, + &format_ret, &num_ret, &bytes_after, &retval); + if (!retval) + goto done; + win3 = *((Window *) retval); + XFree(retval); + + if (win2 != win3) + goto done; + + root_win = win1; + + done: + return root_win; +} + +static void +VRootInit(void) +{ + Window root_return; + int x_return, y_return; + unsigned int border_width_return; + + VRoot.scr = DefaultScreen(disp); + VRoot.win = FindRootWindow(disp); + XGetGeometry(disp, VRoot.win, &root_return, &x_return, &y_return, + &VRoot.w, &VRoot.h, &border_width_return, &VRoot.depth); +#if USE_IMLIB2 + VRoot.vis = DefaultVisual(disp, VRoot.scr); + VRoot.depth = DefaultDepth(disp, VRoot.scr); + VRoot.cmap = DefaultColormap(disp, VRoot.scr); + + imlib_set_color_usage(128); + + imlib_context_set_display(disp); + imlib_context_set_visual(VRoot.vis); + imlib_context_set_colormap(VRoot.cmap); + imlib_context_set_dither(1); + imlib_context_set_dither_mask(0); +#else + params.flags = PARAMS_IMAGECACHESIZE | PARAMS_PIXMAPCACHESIZE; + params.imagecachesize = (w * h * 3 * 2); + params.pixmapcachesize = (w * h * 3 * 2 * 8); + pI1Ctx = Imlib_init_with_params(disp, ¶ms); + Imlib_set_render_type(pI1Ctx, RT_DITHER_TRUECOL); + VRoot.vis = Imlib_get_visual(pI1Ctx); + VRoot.depth = pI1Ctx->x.depth; + VRoot.cmap = Imlib_get_colormap(pI1Ctx); +#endif +} -Window +static Window CreateWindow(Window parent, int x, int y, int ww, int hh) { Window win; XSetWindowAttributes attr; - MWMHints mwm; - -/* Atom a; */ XSizeHints hnt; attr.backing_store = NotUseful; @@ -114,18 +152,11 @@ attr.border_pixel = 0; attr.background_pixel = 0; attr.save_under = False; - mwm.flags = MWM_HINTS_DECORATIONS; - mwm.functions = 0; - mwm.decorations = 0; - mwm.inputMode = 0; -/* a = XInternAtom(disp, "_MOTIF_WM_HINTS", False); */ win = XCreateWindow(disp, parent, x, y, ww, hh, 0, VRoot.depth, InputOutput, VRoot.vis, CWOverrideRedirect | CWSaveUnder | CWBackingStore | CWColormap | CWBackPixel | CWBorderPixel, &attr); XSetWindowBackground(disp, win, 0); -/* XChangeProperty(disp, win, a, a, 32, PropModeReplace, - * (unsigned char *)&mwm, sizeof(MWMHints) / 4); */ XStoreName(disp, win, "DOX: Enlightenment Document Viewer"); hnt.flags = USPosition | USSize | PPosition | PSize | PMinSize | PMaxSize; hnt.x = x; @@ -254,31 +285,7 @@ /* I dont want any internationalisation of my numeric input & output */ setlocale(LC_NUMERIC, "C"); - VRoot.scr = DefaultScreen(disp); -#if USE_IMLIB2 - VRoot.win = DefaultRootWindow(disp); - VRoot.vis = DefaultVisual(disp, VRoot.scr); - VRoot.depth = DefaultDepth(disp, VRoot.scr); - VRoot.cmap = DefaultColormap(disp, VRoot.scr); - - imlib_set_color_usage(128); - - imlib_context_set_display(disp); - imlib_context_set_visual(VRoot.vis); - imlib_context_set_colormap(VRoot.cmap); - imlib_context_set_dither(1); - imlib_context_set_dither_mask(0); -#else - params.flags = PARAMS_IMAGECACHESIZE | PARAMS_PIXMAPCACHESIZE; - params.imagecachesize = (w * h * 3 * 2); - params.pixmapcachesize = (w * h * 3 * 2 * 8); - pI1Ctx = Imlib_init_with_params(disp, ¶ms); - Imlib_set_render_type(pI1Ctx, RT_DITHER_TRUECOL); - VRoot.win = pI1Ctx->x.root; - VRoot.vis = Imlib_get_visual(pI1Ctx); - VRoot.depth = pI1Ctx->x.depth; - VRoot.cmap = Imlib_get_colormap(pI1Ctx); -#endif + VRootInit(); #if USE_FNLIB pFnlibData = Fnlib_init(pI1Ctx); #endif @@ -314,11 +321,13 @@ im_title = LoadImage("title.xpm"); imlib_context_set_image(im_title); + ibd.left = 50; ibd.right = 2; ibd.top = 2; ibd.bottom = 2; imlib_image_set_border(&ibd); + im_prev1 = LoadImage("prev1.xpm"); im_prev2 = LoadImage("prev2.xpm"); im_next1 = LoadImage("next1.xpm"); @@ -341,14 +350,16 @@ } } - t = 16; GetObjects(f); fclose(f); + #if USE_FNLIB Fnlib_add_dir(pFnlibData, docdir); #endif - wx = (DisplayWidth(disp, DefaultScreen(disp)) - w) / 2; - wy = (DisplayHeight(disp, DefaultScreen(disp)) - (h + t)) / 2; + + t = 16; + wx = (VRoot.w - w) / 2; + wy = (VRoot.h - (h + t)) / 2; #ifdef HAS_XINERAMA { if (XineramaIsActive(disp)) =================================================================== RCS file: /cvsroot/enlightenment/e16/e/dox/dox.h,v retrieving revision 1.35 retrieving revision 1.36 diff -u -3 -r1.35 -r1.36 --- dox.h 30 Jun 2004 15:27:49 -0000 1.35 +++ dox.h 1 Jul 2004 21:04:40 -0000 1.36 @@ -191,10 +191,10 @@ { Window win; Visual *vis; - int depth; + unsigned int depth; Colormap cmap; int scr; - int w, h; + unsigned int w, h; } Root; ------------------------------------------------------- This SF.Net email sponsored by Black Hat Briefings & Training. Attend Black Hat Briefings & Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs