X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmoveresize.c;h=2344e86ad77eb18bb9e4b4fa6fe17e321bfec434;hb=def76092b587e7e9a2b212dc5211773e336525e1;hp=ba10af4b3adb4cd2faa8a088d0b5fb9546a90c6f;hpb=c4e4760c41f10aae6af19a4363cb247c71edee4b;p=chaz%2Fopenbox diff --git a/openbox/moveresize.c b/openbox/moveresize.c index ba10af4b..2344e86a 100644 --- a/openbox/moveresize.c +++ b/openbox/moveresize.c @@ -1,4 +1,4 @@ -/* -*- indent-tabs-mode: t; tab-width: 4; c-basic-offset: 4; -*- +/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- moveresize.c for the Openbox window manager Copyright (c) 2003 Ben Jansens @@ -38,15 +38,15 @@ ObClient *moveresize_client = NULL; static gboolean moving = FALSE; /* TRUE - moving, FALSE - resizing */ -static int start_x, start_y, start_cx, start_cy, start_cw, start_ch; -static int cur_x, cur_y; +static gint start_x, start_y, start_cx, start_cy, start_cw, start_ch; +static gint cur_x, cur_y; static guint button; static guint32 corner; static ObCorner lockcorner; static ObPopup *popup = NULL; -static void client_dest(gpointer client) +static void client_dest(ObClient *client, gpointer data) { if (moveresize_client == client) moveresize_end(TRUE); @@ -57,7 +57,7 @@ void moveresize_startup(gboolean reconfig) popup = popup_new(FALSE); if (!reconfig) - client_add_destructor(client_dest); + client_add_destructor(client_dest, NULL); } void moveresize_shutdown(gboolean reconfig) @@ -72,9 +72,9 @@ void moveresize_shutdown(gboolean reconfig) popup = NULL; } -static void popup_coords(ObClient *c, char *format, int a, int b) +static void popup_coords(ObClient *c, gchar *format, gint a, gint b) { - char *text; + gchar *text; text = g_strdup_printf(format, a, b); popup_position(popup, CenterGravity, @@ -86,11 +86,17 @@ static void popup_coords(ObClient *c, char *format, int a, int b) g_free(text); } -void moveresize_start(ObClient *c, int x, int y, guint b, guint32 cnr) +void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr) { ObCursor cur; - if (moveresize_in_progress || !c->frame->visible) + moving = (cnr == prop_atoms.net_wm_moveresize_move || + cnr == prop_atoms.net_wm_moveresize_move_keyboard); + + if (moveresize_in_progress || !c->frame->visible || + !(moving ? + (c->functions & OB_CLIENT_FUNC_MOVE) : + (c->functions & OB_CLIENT_FUNC_RESIZE))) return; moveresize_client = c; @@ -116,15 +122,12 @@ void moveresize_start(ObClient *c, int x, int y, guint b, guint32 cnr) c->area.width / 2, c->area.height / 2); */ - if (corner == prop_atoms.net_wm_moveresize_move || - corner == prop_atoms.net_wm_moveresize_move_keyboard) { + if (moving) { cur_x = start_cx; cur_y = start_cy; - moving = TRUE; } else { cur_x = start_cw; cur_y = start_ch; - moving = FALSE; } moveresize_in_progress = TRUE; @@ -294,7 +297,7 @@ void moveresize_event(XEvent *e) moveresize_end(FALSE); else { if (corner == prop_atoms.net_wm_moveresize_size_keyboard) { - int dx = 0, dy = 0, ox = cur_x, oy = cur_y; + gint dx = 0, dy = 0, ox = cur_x, oy = cur_y; if (e->xkey.keycode == ob_keycode(OB_KEY_RIGHT)) dx = MAX(4, moveresize_client->size_inc.width); @@ -326,8 +329,8 @@ void moveresize_event(XEvent *e) start_x += dx - (cur_x - ox); start_y += dy - (cur_y - oy); } else if (corner == prop_atoms.net_wm_moveresize_move_keyboard) { - int dx = 0, dy = 0, ox = cur_x, oy = cur_y; - int opx, px, opy, py; + gint dx = 0, dy = 0, ox = cur_x, oy = cur_y; + gint opx, px, opy, py; if (e->xkey.keycode == ob_keycode(OB_KEY_RIGHT)) dx = 4;