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 description confuses me a bit. The function is named get_ but it sets the
> position, so it should be named set_, no?
> 
>> It moves the x and y coordinates to the right place.
> 
> So what's the _right_ in the name? It is 'right' as opposed
> to 'left' or is it 'right' as 'correct'?
> 
> From my brief reading of the function, I think that dropping 
> the 'right' from the name would not create confusion, or do
> you envision having a set_left_position_on_screen()?
> 
> I don't know if I'm making sense, though :-)

Sorry, correct.

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)
...



>> ---
>>  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].

Reply via email to