Kix wrote:
> On 03/04/2013 20:33, Carlos R. Mafra wrote:
> > On Wed, 3 Apr 2013 at 20:01:49 +0200, Rodolfo García Peñas (kix)
> > wrote:
> >> From: "Rodolfo García Peñas (kix)" <[email protected]>
> >>
> >> The function get_right_position_on_screen() sets the right
> >> position
> >> in the screen using a WRect.
> > [...]
>
> This patches checks if the "x,y" inside the screen, using a rect.
>
> Is something like:
> is x is minor, is outside (left)
> if x is greater, is outside (rigth)
How does it compare to
int wScreenKeepInside(WScreen * scr, int *x, int *y, int width, int height)
found in screen.c?
The latter is quite harder to understand than your function, but they seem to
do precisely the same thing.
-- Daniel
> >> ---
> >> src/menu.c | 16 +++-------------
> >> src/placement.c | 17 +++++++++++++++++
> >> 2 files changed, 20 insertions(+), 13 deletions(-)
> >>
> >> diff --git a/src/menu.c b/src/menu.c
> >> index 696daa0..5a52d36 100644
> >> --- a/src/menu.c
> >> +++ b/src/menu.c
> >> @@ -43,6 +43,7 @@
> >> #include "workspace.h"
> >> #include "dialog.h"
> >> #include "rootmenu.h"
> >> +#include "placement.h"
> >>
> >> /****** Global Variables ******/
> >>
> >> @@ -1068,19 +1069,8 @@ void wMenuMapAt(WMenu * menu, int x, int y,
> >> int keyboard)
> >> }
> >>
> >> if (!menu->flags.mapped) {
> >> - if (wPreferences.wrap_menus) {
> >> - WScreen *scr = menu->frame->screen_ptr;
> >> - WMRect rect = wGetRectForHead(scr,
> >> wGetHeadForPointerLocation(scr));
> >> -
> >> - if (x < rect.pos.x)
> >> - x = rect.pos.x;
> >> - if (y < rect.pos.y)
> >> - y = rect.pos.y;
> >> - if (x + MENUW(menu) > rect.pos.x + rect.size.width)
> >> - x = rect.pos.x + rect.size.width - MENUW(menu);
> >> - if (y + MENUH(menu) > rect.pos.y + rect.size.height)
> >> - y = rect.pos.y + rect.size.height - MENUH(menu);
> >> - }
> >> + if (wPreferences.wrap_menus)
> >> + get_right_position_on_screen(menu->frame->screen_ptr,
> >> &x, &y,
> >> MENUW(menu), MENUH(menu));
> >>
> >> XMoveWindow(dpy, menu->frame->core->window, x, y);
> >> menu->frame_x = x;
> >> diff --git a/src/placement.c b/src/placement.c
> >> index 5e4a8e7..5a3eaa9 100644
> >> --- a/src/placement.c
> >> +++ b/src/placement.c
> >> @@ -565,3 +565,20 @@ void PlaceWindow(WWindow *wwin, int *x_ret,
> >> int *y_ret, unsigned width, unsigned
> >> if (*y_ret < usableArea.y1)
> >> *y_ret = usableArea.y1;
> >> }
> >> +
> >> +void get_right_position_on_screen(WScreen *scr, int *x, int *y,
> >> int size_x, int size_y)
> >> +{
> >> + WMRect rect = wGetRectForHead(scr,
> >> wGetHeadForPointerLocation(scr));
> >> +
> >> + if (*x < rect.pos.x)
> >> + *x = rect.pos.x;
> >> +
> >> + if (*y < rect.pos.y)
> >> + *y = rect.pos.y;
> >> +
> >> + if (*x + size_x > rect.pos.x + rect.size.width)
> >> + *x = rect.pos.x + rect.size.width - size_x;
> >> +
> >> + if (*y + size_y > rect.pos.y + rect.size.height)
> >> + *y = rect.pos.y + rect.size.height - size_y;
> >> +}
> >> --
> >> 1.7.10.4
> >>
> >>
> >> --
> >> To unsubscribe, send mail to
> >> [email protected].
> >
> >
>
>
> --
> ||// //\\// Rodolfo "kix" Garcia
> ||\\// //\\ http://www.kix.es/
>
>
> --
> To unsubscribe, send mail to
> [email protected].
>
--
To unsubscribe, send mail to [email protected].