From 17bc51aab8be25cd44c55eb0a652c92518bd9b0f Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 11 Jan 2008 20:24:16 -0500 Subject: let you specify the resize popup to be in a fixed place --- openbox/moveresize.c | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) (limited to 'openbox/moveresize.c') diff --git a/openbox/moveresize.c b/openbox/moveresize.c index bb17d4a0..07b8e22b 100644 --- a/openbox/moveresize.c +++ b/openbox/moveresize.c @@ -101,17 +101,60 @@ static void popup_coords(ObClient *c, const gchar *format, gint a, gint b) gchar *text; text = g_strdup_printf(format, a, b); - if (config_resize_popup_pos == 1) /* == "Top" */ + if (config_resize_popup_pos == OB_RESIZE_POS_TOP) popup_position(popup, SouthGravity, c->frame->area.x + c->frame->area.width/2, c->frame->area.y - ob_rr_theme->fbwidth); - else /* == "Center" */ + else if (config_resize_popup_pos == OB_RESIZE_POS_CENTER) popup_position(popup, CenterGravity, c->frame->area.x + c->frame->size.left + c->area.width / 2, c->frame->area.y + c->frame->size.top + c->area.height / 2); + else /* Fixed */ { + Rect *area = screen_physical_area_active(); + gint gravity, x, y; + + x = config_resize_popup_x; + if (config_resize_popup_x_center) x = area->x + area->width/2; + else if (config_resize_popup_x_opposite) x = RECT_RIGHT(*area) - x; + else x = area->x + x; + + y = config_resize_popup_y; + if (config_resize_popup_y_center) y = area->y + area->height/2; + else if (config_resize_popup_y_opposite) y = RECT_BOTTOM(*area) - y; + else y = area->y + y; + + if (config_resize_popup_x_center) { + if (config_resize_popup_y_center) + gravity = CenterGravity; + else if (config_resize_popup_y_opposite) + gravity = SouthGravity; + else + gravity = NorthGravity; + } + else if (config_resize_popup_x_opposite) { + if (config_resize_popup_y_center) + gravity = EastGravity; + else if (config_resize_popup_y_opposite) + gravity = SouthEastGravity; + else + gravity = NorthEastGravity; + } + else { + if (config_resize_popup_y_center) + gravity = WestGravity; + else if (config_resize_popup_y_opposite) + gravity = SouthWestGravity; + else + gravity = NorthWestGravity; + } + + popup_position(popup, gravity, x, y); + + g_free(area); + } popup_show(popup, text); g_free(text); } -- cgit v1.2.3 From c2e495c720d93521bdb0e1bfd7e76584a1b329b7 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 11 Jan 2008 20:58:03 -0500 Subject: make a GravityPoint and GravityCoord data structures for those --x, ++y type values --- openbox/moveresize.c | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) (limited to 'openbox/moveresize.c') diff --git a/openbox/moveresize.c b/openbox/moveresize.c index 07b8e22b..8dc122c7 100644 --- a/openbox/moveresize.c +++ b/openbox/moveresize.c @@ -116,36 +116,42 @@ static void popup_coords(ObClient *c, const gchar *format, gint a, gint b) Rect *area = screen_physical_area_active(); gint gravity, x, y; - x = config_resize_popup_x; - if (config_resize_popup_x_center) x = area->x + area->width/2; - else if (config_resize_popup_x_opposite) x = RECT_RIGHT(*area) - x; - else x = area->x + x; - - y = config_resize_popup_y; - if (config_resize_popup_y_center) y = area->y + area->height/2; - else if (config_resize_popup_y_opposite) y = RECT_BOTTOM(*area) - y; - else y = area->y + y; - - if (config_resize_popup_x_center) { - if (config_resize_popup_y_center) + x = config_resize_popup_fixed.x.pos; + if (config_resize_popup_fixed.x.center) + x = area->x + area->width/2; + else if (config_resize_popup_fixed.x.opposite) + x = RECT_RIGHT(*area) - x; + else + x = area->x + x; + + y = config_resize_popup_fixed.y.pos; + if (config_resize_popup_fixed.y.center) + y = area->y + area->width/2; + else if (config_resize_popup_fixed.y.opposite) + y = RECT_RIGHT(*area) - y; + else + y = area->y + y; + + if (config_resize_popup_fixed.x.center) { + if (config_resize_popup_fixed.y.center) gravity = CenterGravity; - else if (config_resize_popup_y_opposite) + else if (config_resize_popup_fixed.y.opposite) gravity = SouthGravity; else gravity = NorthGravity; } - else if (config_resize_popup_x_opposite) { - if (config_resize_popup_y_center) + else if (config_resize_popup_fixed.x.opposite) { + if (config_resize_popup_fixed.y.center) gravity = EastGravity; - else if (config_resize_popup_y_opposite) + else if (config_resize_popup_fixed.y.opposite) gravity = SouthEastGravity; else gravity = NorthEastGravity; } else { - if (config_resize_popup_y_center) + if (config_resize_popup_fixed.y.center) gravity = WestGravity; - else if (config_resize_popup_y_opposite) + else if (config_resize_popup_fixed.y.opposite) gravity = SouthWestGravity; else gravity = NorthWestGravity; -- cgit v1.2.3 From 32c3a97f2e6d029cfb183deb03ebd6963166ead1 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 12 Jan 2008 13:31:46 -0500 Subject: fix a copy/paste bug in placing the move&resize popup --- openbox/moveresize.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'openbox/moveresize.c') diff --git a/openbox/moveresize.c b/openbox/moveresize.c index 8dc122c7..675cbe9c 100644 --- a/openbox/moveresize.c +++ b/openbox/moveresize.c @@ -126,7 +126,7 @@ static void popup_coords(ObClient *c, const gchar *format, gint a, gint b) y = config_resize_popup_fixed.y.pos; if (config_resize_popup_fixed.y.center) - y = area->y + area->width/2; + y = area->y + area->height/2; else if (config_resize_popup_fixed.y.opposite) y = RECT_RIGHT(*area) - y; else -- cgit v1.2.3