all repos — openbox @ d03c1afac676c612c2d70584ceb4101607ac4c7e

openbox fork - make it a bit more like ryudo

Better placement of the client window. Might need some tweaking.
Scott Moynes smoynes@nexus.carleton.ca
commit

d03c1afac676c612c2d70584ceb4101607ac4c7e

parent

b6e3e1bc7e929200fc2c4bc744be2c1e2b80ecf6

1 files changed, 21 insertions(+), 17 deletions(-)

jump to
M plugins/menu/client_menu.cplugins/menu/client_menu.c

@@ -9,9 +9,7 @@ #include "kernel/frame.h"

#include "render/theme.h" -#if 0 static char *PLUGIN_NAME = "client_menu"; -#endif static ObMenu *send_to_menu; static ObMenu *layer_menu;

@@ -53,28 +51,34 @@ a->data.sendto.follow = FALSE;

e = menu_entry_new(screen_desktop_names[i], a); menu_add_entry(self, e); } - + menu_render_full(self); } } -#if 0 -void client_menu_show(ObMenu *self, int x, int y, Client *client) +void client_menu_show(ObMenu *self, int x, int y, ObClient *client) { - int newy; + guint i, newy, newx; + Rect *a = NULL; + g_assert(!self->invalid); g_assert(client); - newy = MAX(client->frame->area.y + client->frame->size.top, y); - newy -= ob_rr_theme->bwidth; + for (i = 0; i < screen_num_monitors; ++i) { + a = screen_physical_area_monitor(i); + if (RECT_CONTAINS(*a, x, y)) + break; + } + g_assert(a != NULL); + self->xin_area = i; + + newx = MAX(x, client->area.x); + newy = MAX(y, client->area.y); + POINT_SET(self->location, + MIN(newx, client->area.x + client->area.width - self->size.width), + MIN(newy, client->area.y + client->area.height - + self->size.height)); - /* XXX do xinerama shit like in menu.c! im not coding it now because - this function isnt even being used right now... */ - POINT_SET(self->location, - MIN(x, screen_physical_size.width - self->size.width - - ob_rr_theme->bwidth * 2), - MIN(newy, screen_physical_size.height - self->size.height - - ob_rr_theme->bwidth * 2)); XMoveWindow(ob_display, self->frame, self->location.x, self->location.y); if (!self->shown) {

@@ -85,7 +89,6 @@ } else if (self->shown && self->open_submenu) {

menu_hide(self->open_submenu); } } -#endif void plugin_setup_config() { }

@@ -98,7 +101,8 @@

void *plugin_create() /* TODO: need config */ { ObMenu *m = menu_new_full(NULL, "client-menu", NULL, - /*client_menu_show*/NULL, NULL); + client_menu_show, NULL); + m->plugin = PLUGIN_NAME; menu_add_entry(m, menu_entry_new_submenu("Send To Workspace", send_to_menu)); send_to_menu->parent = m;