On 02/24/2007 17:27, Sebastian Dransfeld wrote:
> If pinned is actually just a combination of three other states, why not 
> just make an action which triggers these states and not add a lot of 
> duplicate code?

Yep... your right.

I assume you are referring to the code in the action, 
_e_border_menu_cb_pin, and _e_border_menu_cb_unpin.

Maybe another new func to set the pinned state (e_border_pinned_set() 
maybe)... and this would be called accordingly from all of the above. 
Thus providing one copy of the code.  That sound reasonable?

Thanks.

> 
> Sebastian
> 
> Ravenlock wrote:
>> Hello,
>>
>> Attached is a patch which will allow a user to have borders remember 
>> their pinned state.  Additionally, an action has been added to the 
>> keybindings that allows a user to toggle this state via the keyboard.
>>
>>
>> ------------------------------------------------------------------------
>>
>> Index: e17/apps/e/src/bin/e_actions.c
>> ===================================================================
>> RCS file: /var/cvs/e/e17/apps/e/src/bin/e_actions.c,v
>> retrieving revision 1.90
>> diff -u -r1.90 e_actions.c
>> --- e17/apps/e/src/bin/e_actions.c   10 Feb 2007 17:23:05 -0000      1.90
>> +++ e17/apps/e/src/bin/e_actions.c   24 Feb 2007 16:09:01 -0000
>> @@ -611,6 +611,48 @@
>>        bd->borderless = 0;
>>      else
>>        bd->borderless = 1;
>> +    if (!bd->borderless)
>> +      bd->pinned_to_desktop = 0;
>> +
>> +    bd->client.border.changed = 1;
>> +    bd->changed = 1;
>> +     }
>> +}
>> +
>> +/***************************************************************************/
>> +ACT_FN_GO(window_pinned_toggle)
>> +{
>> +   if ((!obj) || (obj->type != E_BORDER_TYPE)) obj = 
>> E_OBJECT(e_border_focused_get());
>> +   if (!obj) return;
>> +   if (!((E_Border *)obj)->lock_border)
>> +     {
>> +    E_Border *bd;
>> +
>> +    bd = (E_Border *)obj;
>> +    if (bd->pinned_to_desktop)
>> +      bd->pinned_to_desktop = 0;
>> +    else
>> +      bd->pinned_to_desktop = 1;
>> +    bd->borderless = bd->pinned_to_desktop; 
>> +    bd->user_skip_winlist = bd->pinned_to_desktop;
>> +        if (bd->pinned_to_desktop)
>> +      {
>> +         bd->client.netwm.state.stacking = E_STACKING_BELOW; 
>> +         if (bd->layer != 50) 
>> +           { 
>> +              e_border_layer_set(bd, 50); 
>> +              e_hints_window_stacking_set(bd, E_STACKING_NONE); 
>> +           }
>> +      }
>> +    else
>> +      {
>> +         bd->client.netwm.state.stacking = E_STACKING_NONE; 
>> +         if (bd->layer != 100) 
>> +           { 
>> +              e_border_layer_set(bd, 100); 
>> +              e_hints_window_stacking_set(bd, E_STACKING_NONE); 
>> +           }
>> +      } 
>>  
>>      bd->client.border.changed = 1;
>>      bd->changed = 1;
>> @@ -1949,7 +1991,12 @@
>>     ACT_GO(window_borderless_toggle);
>>     e_action_predef_name_set(_("Window : State"), _("Toggle Borderless 
>> State"),
>>       "window_borderless_toggle", NULL, NULL, 0);
>> -   
>> +  
>> +   /* window_pinned_toggle */
>> +   ACT_GO(window_pinned_toggle);
>> +   e_action_predef_name_set(_("Window : State"), _("Toggle Pinned State"),
>> +     "window_pinned_toggle", NULL, NULL, 0);
>> +
>>     /* desk_flip_by */
>>     ACT_GO(desk_flip_by);
>>     e_action_predef_name_set(_("Desktop"), _("Flip Desktop Left"), 
>> "desk_flip_by", "-1 0", NULL, 0);
>> Index: e17/apps/e/src/bin/e_border.c
>> ===================================================================
>> RCS file: /var/cvs/e/e17/apps/e/src/bin/e_border.c,v
>> retrieving revision 1.571
>> diff -u -r1.571 e_border.c
>> --- e17/apps/e/src/bin/e_border.c    14 Feb 2007 02:43:34 -0000      1.571
>> +++ e17/apps/e/src/bin/e_border.c    24 Feb 2007 16:09:05 -0000
>> @@ -5456,7 +5456,8 @@
>>                bd->placed = 1;
>>                bd->changes.pos = 1;
>>             }
>> -         if (rem->apply & E_REMEMBER_APPLY_LAYER)
>> +         if (rem->apply & E_REMEMBER_APPLY_LAYER ||
>> +             rem->apply & E_REMEMBER_APPLY_PIN)
>>             {
>>                bd->layer = rem->prop.layer;
>>                if (bd->layer == 100)
>> @@ -5465,6 +5466,12 @@
>>                  e_hints_window_stacking_set(bd, E_STACKING_ABOVE);
>>                e_container_border_raise(bd);
>>             }
>> +         if (rem->apply & E_REMEMBER_APPLY_PIN)
>> +           { 
>> +              bd->pinned_to_desktop = 1; 
>> +              bd->borderless = 1;
>> +              bd->client.border.changed = 1; 
>> +           }
>>           if (rem->apply & E_REMEMBER_APPLY_BORDER)
>>             {
>>                if (rem->prop.border)
>> @@ -5512,7 +5519,8 @@
>>                bd->lock_focus_out = rem->prop.lock_focus_out;
>>                bd->lock_life = rem->prop.lock_life;
>>             }
>> -         if (rem->apply & E_REMEMBER_APPLY_SKIP_WINLIST)
>> +         if (rem->apply & E_REMEMBER_APPLY_SKIP_WINLIST ||
>> +             rem->apply & E_REMEMBER_APPLY_PIN)
>>             bd->user_skip_winlist = rem->prop.skip_winlist;
>>        }
>>       }
>> @@ -5559,6 +5567,9 @@
>>      else 
>>        bordername = e_config->theme_default_border_style;
>>      if (!bordername) bordername = "default";
>> +fprintf(stderr,"BorderName: %s \n",bordername);
>> +    if (strcmp("borderless", bordername) != 0)
>> +      bd->pinned_to_desktop = 0;
>>  
>>      if ((!bd->client.border.name) || (strcmp(bd->client.border.name, 
>> bordername)))
>>        {
>> Index: e17/apps/e/src/bin/e_int_border_menu.c
>> ===================================================================
>> RCS file: /var/cvs/e/e17/apps/e/src/bin/e_int_border_menu.c,v
>> retrieving revision 1.56
>> diff -u -r1.56 e_int_border_menu.c
>> --- e17/apps/e/src/bin/e_int_border_menu.c   22 Feb 2007 05:17:44 -0000      
>> 1.56
>> +++ e17/apps/e/src/bin/e_int_border_menu.c   24 Feb 2007 16:09:07 -0000
>> @@ -710,7 +710,8 @@
>>     if (bd->layer != 150)
>>       {
>>      e_border_layer_set(bd, 150);
>> -    e_hints_window_stacking_set(bd, E_STACKING_ABOVE);
>> +    e_hints_window_stacking_set(bd, E_STACKING_ABOVE); 
>> +    bd->pinned_to_desktop = 0;
>>       }
>>  }
>>  
>> @@ -737,6 +738,7 @@
>>       {
>>      e_border_layer_set(bd, 100);
>>      e_hints_window_stacking_set(bd, E_STACKING_NONE);
>> +    bd->pinned_to_desktop = 0;
>>       }
>>  }
>>  
>> @@ -772,6 +774,7 @@
>>       bd->user_skip_winlist = e_menu_item_toggle_get(mi);
>>     else
>>       bd->user_skip_winlist = 0;
>> +   if (!bd->user_skip_winlist) bd->pinned_to_desktop = 0;
>>     if (bd->remember) e_remember_update(bd->remember, bd);
>>  }
>>  
>> Index: e17/apps/e/src/bin/e_int_border_remember.c
>> ===================================================================
>> RCS file: /var/cvs/e/e17/apps/e/src/bin/e_int_border_remember.c,v
>> retrieving revision 1.14
>> diff -u -r1.14 e_int_border_remember.c
>> --- e17/apps/e/src/bin/e_int_border_remember.c       22 Dec 2006 11:21:16 
>> -0000      1.14
>> +++ e17/apps/e/src/bin/e_int_border_remember.c       24 Feb 2007 16:09:07 
>> -0000
>> @@ -43,6 +43,7 @@
>>        int apply_zone;
>>        int apply_skip_winlist;
>>        int apply_run;
>> +      int apply_pin;
>>     } remember;
>>  };
>>  
>> @@ -98,6 +99,7 @@
>>      if (cfdata->border->remember->apply & E_REMEMBER_APPLY_ZONE) 
>> cfdata->remember.apply_zone = 1;
>>      if (cfdata->border->remember->apply & E_REMEMBER_APPLY_SKIP_WINLIST) 
>> cfdata->remember.apply_skip_winlist = 1;
>>      if (cfdata->border->remember->apply & E_REMEMBER_APPLY_RUN) 
>> cfdata->remember.apply_run = 1;
>> +    if (cfdata->border->remember->apply & E_REMEMBER_APPLY_PIN) 
>> cfdata->remember.apply_pin = 1;
>>       }
>>     if (!cfdata->border->remember) cfdata->mode = MODE_NOTHING;
>>     else if ((cfdata->remember.apply_pos) && (cfdata->remember.apply_size) 
>> && 
>> @@ -270,7 +272,7 @@
>>      else if (cfdata->mode == MODE_GEOMETRY_LOCKS)
>>        cfdata->border->remember->apply = E_REMEMBER_APPLY_POS | 
>> E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_LOCKS;
>>      else if (cfdata->mode == MODE_ALL)
>> -      cfdata->border->remember->apply = E_REMEMBER_APPLY_POS | 
>> E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_LAYER | E_REMEMBER_APPLY_LOCKS | 
>> E_REMEMBER_APPLY_BORDER | E_REMEMBER_APPLY_STICKY | E_REMEMBER_APPLY_DESKTOP 
>> | E_REMEMBER_APPLY_SHADE | E_REMEMBER_APPLY_ZONE | 
>> E_REMEMBER_APPLY_SKIP_WINLIST;
>> +      cfdata->border->remember->apply = E_REMEMBER_APPLY_POS | 
>> E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_LAYER | E_REMEMBER_APPLY_LOCKS | 
>> E_REMEMBER_APPLY_BORDER | E_REMEMBER_APPLY_STICKY | E_REMEMBER_APPLY_DESKTOP 
>> | E_REMEMBER_APPLY_SHADE | E_REMEMBER_APPLY_ZONE | 
>> E_REMEMBER_APPLY_SKIP_WINLIST | E_REMEMBER_APPLY_PIN;
>>      cfdata->border->remember->apply_first_only = 0;
>>         e_remember_update(cfdata->border->remember, cfdata->border);
>>       }
>> @@ -289,7 +291,7 @@
>>       (cfdata->remember.apply_border) || (cfdata->remember.apply_sticky) ||
>>       (cfdata->remember.apply_desktop) || (cfdata->remember.apply_shade) ||
>>       (cfdata->remember.apply_zone) || (cfdata->remember.apply_skip_winlist) 
>> ||
>> -     (cfdata->remember.apply_run)))
>> +     (cfdata->remember.apply_run) || (cfdata->remember.apply_pin)))
>>       {
>>      if (cfdata->border->remember)
>>        {
>> @@ -397,6 +399,7 @@
>>      if (cfdata->remember.apply_zone) cfdata->border->remember->apply |= 
>> E_REMEMBER_APPLY_ZONE;
>>      if (cfdata->remember.apply_skip_winlist) 
>> cfdata->border->remember->apply |= E_REMEMBER_APPLY_SKIP_WINLIST;
>>      if (cfdata->remember.apply_run) cfdata->border->remember->apply |= 
>> E_REMEMBER_APPLY_RUN;
>> +    if (cfdata->remember.apply_pin) cfdata->border->remember->apply |= 
>> E_REMEMBER_APPLY_PIN;
>>      cfdata->border->remember->apply_first_only = 
>> cfdata->remember.apply_first_only;
>>      e_remember_update(cfdata->border->remember, cfdata->border);
>>       }
>> @@ -493,6 +496,8 @@
>>     e_widget_frametable_object_append(of, ob, 0, 3, 1, 1, 1, 1, 1, 1);
>>     ob = e_widget_check_add(evas, _("Border style"), 
>> &(cfdata->remember.apply_border));
>>     e_widget_frametable_object_append(of, ob, 0, 4, 1, 1, 1, 1, 1, 1);
>> +   ob = e_widget_check_add(evas, _("Pinned"), 
>> &(cfdata->remember.apply_pin));
>> +   e_widget_frametable_object_append(of, ob, 0, 5, 1, 1, 1, 1, 1, 1);
>>     ob = e_widget_check_add(evas, _("Stickiness"), 
>> &(cfdata->remember.apply_sticky));
>>     e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 1, 1, 1);
>>     ob = e_widget_check_add(evas, _("Virtual Desktop"), 
>> &(cfdata->remember.apply_desktop));
>> Index: e17/apps/e/src/bin/e_remember.h
>> ===================================================================
>> RCS file: /var/cvs/e/e17/apps/e/src/bin/e_remember.h,v
>> retrieving revision 1.10
>> diff -u -r1.10 e_remember.h
>> --- e17/apps/e/src/bin/e_remember.h  4 Jan 2007 10:30:55 -0000       1.10
>> +++ e17/apps/e/src/bin/e_remember.h  24 Feb 2007 16:09:07 -0000
>> @@ -23,6 +23,7 @@
>>  #define E_REMEMBER_APPLY_ZONE (1 << 8)
>>  #define E_REMEMBER_APPLY_RUN (1 << 9)
>>  #define E_REMEMBER_APPLY_SKIP_WINLIST (1 << 10)
>> +#define E_REMEMBER_APPLY_PIN (1 << 11)
>>  
>>  #else
>>  #ifndef E_REMEMBER_H
>>
>>
>> ------------------------------------------------------------------------
>>
>> -------------------------------------------------------------------------
>> Take Surveys. Earn Cash. Influence the Future of IT
>> Join SourceForge.net's Techsay panel and you'll get the chance to share your
>> opinions on IT & business topics through brief surveys-and earn cash
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> enlightenment-devel mailing list
>> enlightenment-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 
> 


-- 
Regards,
Eric

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to