rm this garbage...
authorDana Jansens <danakj@orodu.net>
Sat, 10 May 2003 20:53:22 +0000 (20:53 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 10 May 2003 20:53:22 +0000 (20:53 +0000)
tools/Makefile.am [deleted file]
tools/slit/Makefile.am [deleted file]
tools/slit/slit.c [deleted file]

diff --git a/tools/Makefile.am b/tools/Makefile.am
deleted file mode 100644 (file)
index a66187c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = slit
diff --git a/tools/slit/Makefile.am b/tools/slit/Makefile.am
deleted file mode 100644 (file)
index b9aa505..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-rcdir=$(datadir)/openbox
-
-INCLUDES=-I../..
-
-CPPFLAGS=$(X_CFLAGS) $(XFT_CFLAGS) $(GLIB_CFLAGS) @CPPFLAGS@ \
-         -DRCDIR=\"$(rcdir)\" \
-         -DG_LOG_DOMAIN=\"ObSlit\"
-LIBS=$(X_LIBS) $(XFT_LIBS) $(GLIB_LIBS) @LIBS@ @LIBINTL@
-
-bin_PROGRAMS=obslit
-
-obslit_LDADD=-lobrender -L../../render
-obslit_SOURCES=slit.c
-MAINTAINERCLEANFILES=Makefile.in
-
-distclean-local:
-       $(RM) *\~ *.orig *.rej .\#*
diff --git a/tools/slit/slit.c b/tools/slit/slit.c
deleted file mode 100644 (file)
index 28d9303..0000000
+++ /dev/null
@@ -1,634 +0,0 @@
-#include "render/render.h"
-#include "render/theme.h"
-
-#include <X11/Xlib.h>
-#include <stdlib.h>
-#include <glib.h>
-#ifdef HAVE_SIGNAL_H
-#  include <signal.h>
-#endif
-#ifdef HAVE_SYS_SELECT_H
-#  include <sys/select.h>
-#endif
-
-#define TITLE_EVENT_MASK (ButtonPressMask | ButtonReleaseMask | \
-                          ButtonMotionMask)
-#define ROOT_EVENT_MASK (PropertyChangeMask | StructureNotifyMask | \
-                         SubstructureNotifyMask)
-#define SLITAPP_EVENT_MASK (StructureNotifyMask)
-
-Display *ob_display;
-Window ob_root;
-int ob_screen;
-
-static struct Slit {
-    Window frame;
-    Window title;
-
-    /* user-requested position stuff */
-    int gravity;
-    int user_x, user_y;
-
-    /* actual position (when not auto-hidden) */
-    int x, y;
-    int w, h;
-
-    gboolean horz;
-
-    Appearance *a_frame;
-    Appearance *a_title;
-
-    GList *slit_apps;
-} *slit;
-static int nslits;
-
-struct SlitApp {
-    Window icon_win;
-    Window win;
-    int x;
-    int y;
-    int w;
-    int h;
-};
-
-static Atom atom_atom;
-static Atom atom_card;
-static Atom atom_theme;
-static Atom atom_type;
-static Atom atom_type_dock;
-static Atom atom_desktop;
-static Atom atom_state;
-static Atom atom_strut;
-
-static gboolean quit = FALSE;
-static gboolean reconfig = FALSE;
-
-void slit_read_theme();
-void slit_configure();
-void event_handle(XEvent *e);
-void slit_add_existing();
-void slit_add_app(Window win);
-void slit_remove_app(struct Slit *slit, struct SlitApp *app,gboolean reparent);
-
-void sighandler(int signal)
-{
-    if (signal == SIGUSR1) 
-        reconfig =TRUE;
-    else
-        quit = TRUE;
-}
-
-int xerrorhandler(Display *d, XErrorEvent *e)
-{
-    char errtxt[128];
-    XGetErrorText(d, e->error_code, errtxt, 127);
-    g_error("X Error: %s", errtxt);
-    return 0;
-}
-
-int main()
-{
-    int i;
-    guint desk = 0xffffffff;
-    XEvent e;
-    XSetWindowAttributes attrib;
-    struct sigaction action;
-    sigset_t sigset;
-    int xfd;
-    fd_set selset;
-
-    /* set up signal handler */
-    sigemptyset(&sigset);
-    action.sa_handler = sighandler;
-    action.sa_mask = sigset;
-    action.sa_flags = SA_NOCLDSTOP;
-    sigaction(SIGUSR1, &action, (struct sigaction *) NULL);
-    sigaction(SIGPIPE, &action, (struct sigaction *) NULL);
-    sigaction(SIGSEGV, &action, (struct sigaction *) NULL);
-    sigaction(SIGFPE, &action, (struct sigaction *) NULL);
-    sigaction(SIGTERM, &action, (struct sigaction *) NULL);
-    sigaction(SIGINT, &action, (struct sigaction *) NULL);
-    sigaction(SIGHUP, &action, (struct sigaction *) NULL);
-
-    ob_display = XOpenDisplay(NULL);
-    ob_screen = DefaultScreen(ob_display);
-    ob_root = RootWindow(ob_display, ob_screen);
-
-   XSetErrorHandler(xerrorhandler);
-
-    render_startup();
-    theme_startup();
-
-    atom_atom = XInternAtom(ob_display, "ATOM", False);
-    atom_card = XInternAtom(ob_display, "CARDINAL", False);
-    atom_theme = XInternAtom(ob_display, "_OPENBOX_THEME", False);
-    atom_type = XInternAtom(ob_display, "_NET_WM_WINDOW_TYPE", False);
-    atom_type_dock = XInternAtom(ob_display, "_NET_WM_WINDOW_TYPE_DOCK",False);
-    atom_desktop =XInternAtom(ob_display, "_NET_WM_DESKTOP", False);
-    atom_state = XInternAtom(ob_display, "WM_STATE", False);
-    atom_strut = XInternAtom(ob_display, "_NET_WM_STRUT", False);
-
-    nslits = 1;
-    slit = g_new0(struct Slit, nslits);
-
-    for (i = 0; i < nslits; ++i) {
-        slit[i].horz = TRUE;
-
-        slit[i].frame = XCreateWindow(ob_display, ob_root, 0, 0, 1, 1, 0,
-                                      render_depth, InputOutput, render_visual,
-                                      0, NULL);
-        attrib.event_mask = TITLE_EVENT_MASK;
-        slit[i].title = XCreateWindow(ob_display, slit[i].frame, 0, 0, 1, 1, 0,
-                                      render_depth, InputOutput, render_visual,
-                                      CWEventMask, &attrib);
-        XMapWindow(ob_display, slit[i].title);
-
-        XChangeProperty(ob_display, slit[i].frame, atom_type, atom_atom,
-                        32, PropModeReplace, (guchar*)&atom_type_dock, 1);
-
-        XChangeProperty(ob_display, slit[i].frame, atom_desktop, atom_card,
-                        32, PropModeReplace, (guchar*)&desk, 1);
-    }
-
-    slit_read_theme();
-
-    XSelectInput(ob_display, ob_root, ROOT_EVENT_MASK);
-
-    slit_add_existing();
-
-    xfd = ConnectionNumber(ob_display);
-    FD_ZERO(&selset);
-    FD_SET(xfd, &selset);
-    while (!quit) {
-        gboolean hadevent = FALSE;
-        while (XPending(ob_display)) {
-            XNextEvent(ob_display, &e);
-            event_handle(&e);
-            hadevent = TRUE;
-        }
-        if (!hadevent) {
-            if (reconfig)
-                slit_read_theme();
-
-            if (!quit)
-                select(xfd + 1, &selset, NULL, NULL, NULL);
-        }
-    }
-
-    for (i = 0; i < nslits; ++i) {
-        while (slit[i].slit_apps)
-            slit_remove_app(&slit[i], slit[i].slit_apps->data, TRUE);
-
-        XDestroyWindow(ob_display, slit[i].title);
-        XDestroyWindow(ob_display, slit[i].frame);
-
-        appearance_free(slit[i].a_frame);
-        appearance_free(slit[i].a_title);
-    }
-
-    theme_shutdown();
-    render_shutdown();
-    XCloseDisplay(ob_display);
-    return 0;
-}
-
-Window find_client(Window win)
-{
-  Window r, *children;
-  unsigned int n, i;
-  Atom ret_type;
-  int ret_format;
-  unsigned long ret_items, ret_bytesleft;
-  unsigned long *prop_return;
-
-  XQueryTree(ob_display, win, &r, &r, &children, &n);
-  for (i = 0; i < n; ++i) {
-    Window w = find_client(children[i]);
-    if (w) return w;
-  }
-
-  /* try me */
-  XGetWindowProperty(ob_display, win, atom_state, 0, 1,
-                    False, atom_state, &ret_type, &ret_format,
-                    &ret_items, &ret_bytesleft,
-                    (unsigned char**) &prop_return); 
-  if (ret_type == None || ret_items < 1)
-    return None;
-  return win; /* found it! */
-}
-
-void event_handle(XEvent *e)
-{
-    int i;
-    Window win;
-    static guint button = 0;
-    int sw, sh;
-    int xpos, ypos;
-    int x, y, g;
-
-    switch (e->type) {
-    case ButtonPress:
-        if (!button) {
-            button = e->xbutton.button;
-        }
-        break;
-    case ButtonRelease:
-        if (button == e->xbutton.button)
-            button = 0;
-        break;
-    case MotionNotify:
-        if (button == 1) {
-            for (i = 0; i < nslits; ++i)
-                if (slit[i].title == e->xmotion.window) {
-                    /* pick a corner and move it */
-                    sw = WidthOfScreen(ScreenOfDisplay(ob_display, ob_screen));
-                    sh = HeightOfScreen(ScreenOfDisplay(ob_display,ob_screen));
-
-                    if (e->xmotion.x_root < sw / 3) /* left edge */
-                        xpos = 0;
-                    else if (e->xmotion.x_root < sw / 3 * 2) /* middle */
-                        xpos = 1;
-                    else /* right edge */
-                        xpos = 2;
-                    if (e->xmotion.y_root < sh / 3) /* top edge */
-                        ypos = 0;
-                    else if (e->xmotion.y_root < sh / 3 * 2) /* middle */
-                        ypos = 1;
-                    else /* bottom edge */
-                        ypos = 2;
-
-                    if (xpos == 1 && ypos == 1)
-                        return; /* cant go in middle middle */
-
-                    if (xpos == 0) {
-                        if (ypos == 0) {
-                            x = 0;
-                            y = 0;
-                            g = NorthWestGravity;
-                        } else if (ypos == 1) {
-                            x = 0;
-                            y = sh / 2;
-                            g = WestGravity;
-                        } else {
-                            x = 0;
-                            y = sh;
-                            g = SouthWestGravity;
-                        }
-                    } else if (xpos == 1) {
-                        if (ypos == 0) {
-                            x = sw / 2;
-                            y = 0;
-                            g = NorthGravity;
-                        } else {
-                            x = sw / 2;
-                            y = sh;
-                            g = SouthGravity;
-                        }
-                    } else {
-                        if (ypos == 0) {
-                            x = sw;
-                            y = 0;
-                            g = NorthEastGravity;
-                        } else if (ypos == 1) {
-                            x = sw;
-                            y = sh / 2;
-                            g = EastGravity;
-                        } else {
-                            x = sw;
-                            y = sh;
-                            g = SouthEastGravity;
-                        }
-                    }
-                    if (x != slit[i].x || y != slit[i].y ||
-                        g != slit[i].gravity) {
-                        slit[i].user_x = x;
-                        slit[i].user_y = y;
-                        slit[i].gravity = g;
-                        slit_configure();
-                    }
-                }
-        }
-        break;
-    case PropertyNotify:
-        g_message("PropertyNotify on 0x%lx", e->xproperty.window);
-        if (e->xproperty.window == ob_root) {
-            if (e->xproperty.atom == atom_theme)
-                slit_read_theme();
-        }
-        break;
-    case ConfigureNotify:
-        g_message("ConfigureNotify on 0x%lx", e->xconfigure.window);
-        if (e->xconfigure.window == ob_root) {
-            slit_configure();
-            return;
-        }
-
-        /* an owned slitapp? */
-        for (i = 0; i < nslits; ++i) {
-            GList *it;
-
-            for (it = slit[i].slit_apps; it; it = it->next) {
-                struct SlitApp *app = it->data;
-                if (e->xconfigure.window == app->icon_win) {
-                    if (app->w != e->xconfigure.width ||
-                        app->h != e->xconfigure.height) {
-                        g_message("w %d h %d w %d h %d",
-                                  app->w, e->xconfigure.width,
-                                  app->h, e->xconfigure.height);
-                        app->w = e->xconfigure.width;
-                        app->h = e->xconfigure.height;
-                        slit_configure();
-                    }
-                    return;
-                }
-            }
-        }
-        break;
-    case MapNotify:
-        g_message("MapNotify on 0x%lx", e->xmap.window);
-
-        win = find_client(e->xmap.window);
-        if (!win) return;
-
-        for (i = 0; i < nslits; ++i)
-            if (win == slit[i].frame)
-                return;
-
-        slit_add_app(win);
-        break;
-    case UnmapNotify:
-        g_message("UnmapNotify on 0x%lx", e->xunmap.window);
-        for (i = 0; i < nslits; ++i) {
-            GList *it;
-
-            for (it = slit[i].slit_apps; it; it = it->next) {
-                struct SlitApp *app = it->data;
-                if (e->xunmap.window == app->icon_win) {
-                    gboolean r;
-                    XEvent e;
-
-                    r = !XCheckTypedWindowEvent(ob_display, app->icon_win,
-                                                DestroyNotify, &e);
-                    if (r) {
-                        if (XCheckTypedWindowEvent(ob_display, app->icon_win,
-                                                   ReparentNotify, &e)) {
-                            XPutBackEvent(ob_display, &e);
-                            r = FALSE;
-                        }
-                    }
-                    slit_remove_app(&slit[i], app, r);
-                    break;
-                }
-            }
-        }
-        break;
-    case ReparentNotify:
-        g_message("ReparentNotify on 0x%lx", e->xdestroywindow.window);
-        for (i = 0; i < nslits; ++i) {
-            GList *it;
-
-            for (it = slit[i].slit_apps; it; it = it->next) {
-                struct SlitApp *app = it->data;
-                if (e->xdestroywindow.window == app->icon_win) {
-                    slit_remove_app(&slit[i], app, FALSE);
-                    break;
-                }
-            }
-        }
-    case DestroyNotify:
-        g_message("DestroyNotify on 0x%lx", e->xdestroywindow.window);
-        for (i = 0; i < nslits; ++i) {
-            GList *it;
-
-            for (it = slit[i].slit_apps; it; it = it->next) {
-                struct SlitApp *app = it->data;
-                if (e->xdestroywindow.window == app->icon_win) {
-                    slit_remove_app(&slit[i], app, FALSE);
-                    break;
-                }
-            }
-        }
-        break;
-    }
-}
-
-void slit_add_existing()
-{
-    unsigned int i, nchild;
-    int j;
-    Window w, *children;
-    XWindowAttributes attrib;
-
-    XQueryTree(ob_display, ob_root, &w, &w, &children, &nchild);
-
-    for (i = 0; i < nchild; ++i) {
-        for (j = 0; j < nslits; ++j)
-            if (children[i] == slit[j].frame)
-                continue;
-        if (children[i] == None)
-            continue;
-        if ((children[i] = find_client(children[i])) == None)
-            continue;
-       if (XGetWindowAttributes(ob_display, children[i], &attrib)) {
-           if (attrib.override_redirect) continue;
-
-            slit_add_app(children[i]);
-       }
-    }
-    XFree(children);
-}
-
-void slit_add_app(Window win)
-{
-    int i;
-    XWMHints *h;
-    XWindowAttributes attrib;
-    struct Slit *s;
-
-    s = &slit[0];
-
-    if ((h = XGetWMHints(ob_display, win))) {
-        if (h->flags & StateHint && h->initial_state == WithdrawnState) {
-            struct SlitApp *app = g_new(struct SlitApp, 1);
-
-            app->win = win;
-            app->icon_win = (h->flags & IconWindowHint) ?
-                h->icon_window : win;
-
-            XFree(h);
-
-            for (i = 0; i < nslits; ++i) {
-                GList *it;
-                for (it = slit[i].slit_apps; it; it = it->next)
-                    if (app->icon_win ==
-                        ((struct SlitApp*)it->data)->icon_win)
-                        /* already managed! */
-                        return;
-            }
-
-            if (XGetWindowAttributes(ob_display, app->icon_win, &attrib)) {
-                app->w = attrib.width;
-                app->h = attrib.height;
-            } else {
-                g_free(app);
-                app = NULL;
-            }
-
-            if (app) {
-                s->slit_apps = g_list_append(s->slit_apps, app);
-                slit_configure();
-                XReparentWindow(ob_display, app->icon_win,
-                                s->frame, app->x, app->y);
-/*                if (app->win != app->icon_win)
-                  XUnmapWindow(ob_display, app->win);*/
-                XSync(ob_display, False);
-                XSelectInput(ob_display, app->icon_win,
-                             SLITAPP_EVENT_MASK);
-            }
-            g_message("Managed: 0x%lx", app->icon_win);
-        } else
-            XFree(h);
-    }
-}
-
-void slit_remove_app(struct Slit *slit, struct SlitApp *app, gboolean reparent)
-{
-
-    XSelectInput(ob_display, app->icon_win, NoEventMask);
-    XSync(ob_display, False);
-    if (reparent) {
-        g_message("reparenting");
-/*        if (app->win != app->icon_win)
-          XMapWindow(ob_display, app->win);*/
-        XReparentWindow(ob_display, app->icon_win, ob_root, 0, 0);
-    }
-
-    g_free(app);
-    slit->slit_apps = g_list_remove(slit->slit_apps, app);
-    slit_configure();
-}
-
-void slit_read_theme()
-{
-    XTextProperty prop;
-    int i;
-    char *theme = NULL;
-
-    if (XGetTextProperty(ob_display, ob_root, &prop,
-                         XInternAtom(ob_display, "_OPENBOX_THEME", False))) {
-        theme = theme_load((char*)prop.value);
-        XFree(prop.value);
-    } else
-        theme = theme_load(NULL);
-    g_free(theme);
-    if (!theme) exit(EXIT_FAILURE);
-
-    for (i = 0; i < nslits; ++i) {
-        appearance_free(slit[i].a_frame);
-        appearance_free(slit[i].a_title);
-
-        slit[i].a_frame = appearance_copy(theme_a_unfocused_title);
-        slit[i].a_title = appearance_copy(theme_a_unfocused_title);
-
-        XSetWindowBorder(ob_display, slit[i].frame, theme_b_color->pixel);
-        XSetWindowBorderWidth(ob_display, slit[i].frame, theme_bwidth);
-        XSetWindowBorder(ob_display, slit[i].frame, BlackPixel(ob_display, ob_screen));
-        XSetWindowBorderWidth(ob_display, slit[i].frame, 30);
-    }
-
-    slit_configure();
-}
-
-void slit_configure()
-{
-    int i;
-    int titleh;
-    GList *it;
-    int spot;
-
-    titleh = 4;
-
-    for (i = 0; i < nslits; ++i) {
-        if (slit[i].horz) {
-            slit[i].w = titleh;
-            slit[i].h = 0;
-        } else {
-            slit[i].w = 0;
-            slit[i].h = titleh;
-        }
-        spot = titleh;
-
-        for (it = slit[i].slit_apps; it; it = it->next) {
-            struct SlitApp *app = it->data;
-            if (slit[i].horz) {
-                g_message("%d", spot);
-                app->x = spot;
-                app->y = 0;
-                slit[i].w += app->w;
-                slit[i].h = MAX(slit[i].h, app->h);
-                spot += app->w;
-            } else {
-                app->x = 0;
-                app->y = spot;
-                slit[i].w = MAX(slit[i].h, app->w);
-                slit[i].h += app->h;
-                spot += app->h;
-            }
-
-            XMoveWindow(ob_display, app->icon_win, app->x, app->y);
-        }
-
-        /* calculate position */
-        slit[i].x = slit[i].user_x;
-        slit[i].y = slit[i].user_y;
-
-        switch(slit[i].gravity) {
-        case NorthGravity:
-        case CenterGravity:
-        case SouthGravity:
-            slit[i].x -= slit[i].w / 2;
-            break;
-        case NorthEastGravity:
-        case EastGravity:
-        case SouthEastGravity:
-            slit[i].x -= slit[i].w;
-            break;
-        }
-        switch(slit[i].gravity) {
-        case WestGravity:
-        case CenterGravity:
-        case EastGravity:
-            slit[i].y -= slit[i].h / 2;
-            break;
-        case SouthWestGravity:
-        case SouthGravity:
-        case SouthEastGravity:
-            slit[i].y -= slit[i].h;
-            break;
-        }
-
-        if (slit[i].w > 0 && slit[i].h > 0) {
-            RECT_SET(slit[i].a_frame->area, 0, 0, slit[i].w, slit[i].h);
-            XMoveResizeWindow(ob_display, slit[i].frame,
-                              slit[i].x - theme_bwidth,
-                              slit[i].y - theme_bwidth,
-                              slit[i].w, slit[i].h);
-
-            if (slit[i].horz) {
-                RECT_SET(slit[i].a_title->area, 0, 0, titleh, slit[i].h);
-                XMoveResizeWindow(ob_display, slit[i].title, 0, 0,
-                                  titleh, slit[i].h);
-            } else {
-                RECT_SET(slit[i].a_title->area, 0, 0, slit[i].w, titleh);
-                XMoveResizeWindow(ob_display, slit[i].title, 0, 0,
-                                  slit[i].w, titleh);
-            }
-
-            paint(slit[i].frame, slit[i].a_frame);
-            paint(slit[i].title, slit[i].a_title);
-            XMapWindow(ob_display, slit[i].frame);
-        } else
-            XUnmapWindow(ob_display, slit[i].frame);
-    }
-}