Re: dirline.focus_toggle does not consider the active pane?

  • From: Walther Maldonado <walther.md@xxxxxxxxx>
  • To: emelfm2@xxxxxxxxxxxxx
  • Date: Fri, 25 Jul 2008 15:19:26 +0200

On Fri, 25 Jul 2008 10:41:12 +1000
<tpgww@xxxxxxxxxxx> wrote:

> On Thu, 24 Jul 2008 15:24:30 +0200
> Walther Maldonado <walther.md@xxxxxxxxx> wrote:
> 
> > Recently I've bumped into a small annoyance. I have <X key> configured to 
> > pane_active.switch, and I have <Y key> configured to dirline.focus_toggle. 
> > The problem is that there are two dirlines, and no matter which pane is the 
> > active one, I always get the focus on the right-sided dirline (curiously 
> > enough, when doing dirline.focus_toggle again, I do go back to the last 
> > active pane rather than the right one). How could I set it so I can get the 
> > left-sided dirline get the focus when I press the shortcut?
> 
> Walther, that action should toggle focus between active filelist and its 
> correspoding dirline if no argument is supplied to the action. To apply to a 
> specific list+line, supply argument "1" or "2" (no quotes).

"Should" is apparently quite different from practice. I just found the related 
code section and added a few debug messages to see what is happening:

e2_pane.c:1145

static gboolean _e2_pane_focus_dirline_action (gpointer from, E2_ActionRuntime 
*art)
{
   //string with "1" (or anything else) which specifies the dir line to focus
   gchar *arg = (gchar *) art->data;
   gint choice = 1;
   if (arg != NULL)
   {
      g_strstrip (arg);
      if (!g_str_equal (arg, "1"))  //CHECKME no translation ??
         choice = 2;
      printd (DEBUG, "_e2_pane_focus_dirline_action: [%s]", arg);
   }
   E2_PaneRuntime *pane = (choice == 1) ? &app.pane1 : &app.pane2;
   printd (DEBUG, "_e2_pane_focus_dirline_action: Selected Pane [%d]", 
choice==1?1:2);
...
After compiling with the debug flag on, this is what comes out when pressing 
the keybinding:

[DEBUG ] e2_action_run (from:, rt:dirline.focus_toggle)
[DEBUG ] _e2_pane_focus_dirline_action: []
[DEBUG ] _e2_pane_focus_dirline_action: Selected Pane [2]
[DEBUG ] e2_action_run () ends

Conclusion: The code is broken. :P An empty string is being evaluated to pane 
2, and there's nothing in the code that picks the selected pane, the code just 
takes pane1 by default! And this is from the emelfm2-trunk-20080723.tar.bz2 
file, so it's quite current...

Regards,
Walther.

> 
> The default keybinding configuration includes
>   <Control>1  dirline.focus_toggle 1
>   <Control>2  dirline.focus_toggle 2
> and those may still be in effect for you.
> 
> Regards
> Tom
> 
> 
> -- 
> Users can unsubscribe from the list by sending email to 
> emelfm2-request@xxxxxxxxxxxxx with 'unsubscribe' in the subject field or by 
> logging into the web interface.



-- 
Users can unsubscribe from the list by sending email to 
emelfm2-request@xxxxxxxxxxxxx with 'unsubscribe' in the subject field or by 
logging into the web interface.

Other related posts: