123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- /*
- * wmfs2 by Martin Duquesnoy <xorg62@gmail.com> { for(i = 2011; i < 2111; ++i) ©(i); }
- * For license, see COPYING.
- */
- #include "wmfs.h"
- #include "barwin.h"
- #include "util.h"
- /** Create a barwin
- * \param parent Parent window of the BarWindow
- * \param x X position
- * \param y Y position
- * \param w barwin Width
- * \param h barwin Height
- * \param color barwin color
- * \param entermask bool for know if the EnterMask mask is needed
- * \return The BarWindow pointer
- */
- struct barwin*
- barwin_new(Window parent, int x, int y, int w, int h, Color fg, Color bg, bool entermask)
- {
- struct barwin *b = (struct barwin*)xcalloc(1, sizeof(struct barwin));
- XSetWindowAttributes at =
- {
- .override_redirect = true,
- .background_pixmap = ParentRelative,
- .event_mask = BARWIN_MASK
- };
- if(entermask)
- at.event_mask |= BARWIN_ENTERMASK;
- /* Create window */
- b->win = XCreateWindow(W->dpy, parent,
- x, y, w, h,
- 0, W->xdepth,
- CopyFromParent,
- DefaultVisual(W->dpy, W->xscreen),
- BARWIN_WINCW,
- &at);
- b->dr = XCreatePixmap(W->dpy, parent, w, h, W->xdepth);
- /* Property */
- b->geo.x = x;
- b->geo.y = y;
- b->geo.w = w;
- b->geo.h = h;
- b->bg = bg;
- b->fg = fg;
- SLIST_INIT(&b->mousebinds);
- SLIST_INIT(&b->statusmousebinds);
- /* Attach */
- SLIST_INSERT_HEAD(&W->h.barwin, b, next);
- return b;
- }
- /** Delete a barwin
- * \param bw barwin pointer
- */
- void
- barwin_remove(struct barwin *b)
- {
- SLIST_REMOVE(&W->h.barwin, b, barwin, next);
- XSelectInput(W->dpy, b->win, NoEventMask);
- XDestroyWindow(W->dpy, b->win);
- XFreePixmap(W->dpy, b->dr);
- free(b);
- }
- /** Resize a barwin
- * \param bw barwin pointer
- * \param w Width
- * \param h Height
- */
- void
- barwin_resize(struct barwin *b, int w, int h)
- {
- /* Frame */
- XFreePixmap(W->dpy, b->dr);
- b->dr = XCreatePixmap(W->dpy, W->root, w, h, W->xdepth);
- b->geo.w = w;
- b->geo.h = h;
- XResizeWindow(W->dpy, b->win, w, h);
- }
- /** Refresh the barwin Color
- * \param bw barwin pointer
- */
- void
- barwin_refresh_color(struct barwin *b)
- {
- XSetForeground(W->dpy, W->gc, b->bg);
- XFillRectangle(W->dpy, b->dr, W->gc, 0, 0, b->geo.w, b->geo.h);
- }
|