enum {
M_INIT,
M_IDLE,
- M_RESIZE
+ M_RESIZE,
+ M_TILE_RESIZE,
+ M_COL_RESIZE
};
typedef struct {
wa.event_mask = EnterWindowMask | PropertyChangeMask | FocusChangeMask;
wa.do_not_propagate_mask = ButtonPressMask | ButtonReleaseMask;
XChangeWindowAttributes(X.disp, c->win, CWEventMask | CWDontPropagate, &wa);
- XReparentWindow(X.disp, c->win, c->frame,
- BORDER_WIDTH, BORDER_WIDTH + TITLE_HEIGHT);
+ XReparentWindow(X.disp, c->win, c->frame, BORDER_WIDTH, MIN_HEIGHT);
/* Map the window and draw the frame */
XAddToSaveSet(X.disp, c->win);
{
c->w += xdiff;
c->h += ydiff;
- if (c->w < TITLE_HEIGHT+BORDER_WIDTH) c->w = TITLE_HEIGHT+BORDER_WIDTH;
- if (c->h < TITLE_HEIGHT+BORDER_WIDTH) c->h = TITLE_HEIGHT+BORDER_WIDTH;
+ if (c->w < MIN_HEIGHT) c->w = MIN_HEIGHT;
+ if (c->h < MIN_HEIGHT) c->h = MIN_HEIGHT;
if (c->flags & F_SHADED)
{
- XResizeWindow(X.disp, c->frame, c->w, TITLE_HEIGHT+BORDER_WIDTH);
+ XResizeWindow(X.disp, c->frame, c->w, MIN_HEIGHT);
}
else
{
static void float_click(XButtonEvent* ev, Location* loc)
{
- if ((ev->button == Button1) && (ev->y > (TITLE_HEIGHT + BORDER_WIDTH)))
+ if ((ev->button == Button1) && (ev->y > MIN_HEIGHT))
{
X.mode = M_RESIZE;
warp_mouse(loc->client);
static void stacked_click(XButtonEvent* ev, Location* loc)
{
- if (ev->button == Button2)
+ if (ev->button == Button1)
+ {
+ X.mode = (ev->y > MIN_HEIGHT ? M_COL_RESIZE : M_TILE_RESIZE);
+ }
+ else if (ev->button == Button2)
{
client_close(loc->client);
}
void mouse_up(XButtonEvent* ev, Location* loc)
{
- (void)ev, (void)loc;
/* TODO: handle button 1 drag to resize, reposition, and move windows */
- /* TODO: check if we clicked in frame originally or if we clicked in titlebar */
- if (loc->column && !loc->column->focused)
+ if (X.mode == M_TILE_RESIZE)
{
stacked_addheight(loc->monitor, loc->column, loc->client, ev->y_root - X.start_y);
}
+ else if (X.mode == M_COL_RESIZE)
+ {
+ puts("resize column");
+ /* TODO: resize column */
+ }
+ X.mode = M_IDLE;
}
static void monocled_drag(XMotionEvent* ev, Location* loc)
if (prev)
{
amount = (amount == 0 ? (int)(-c->h * 0.25) : amount);
- int miny = (prev->y + TITLE_HEIGHT+BORDER_WIDTH);
+ int miny = (prev->y + MIN_HEIGHT);
int maxy = min((mon->y + mon->h) , (c->y + c->h)) - MIN_HEIGHT;
c->y = max(miny, min(maxy, c->y + amount));
prev->h = c->y - prev->y;