-
Notifications
You must be signed in to change notification settings - Fork 135
Description
I've written the following function:
(defcommand split (dir) ((:direction "Direction: "))
"Add a new frame at 'dir' position (left, right, up, down) and give it the focus."
(split-frame-in-dir (current-group)
(if (find dir '(:left :right)) :column :row))
(when (find dir '(:left :up))
(move-focus-and-or-window (if (eq dir :left) :right :down) t))
(move-focus-and-or-window dir))
What it does is:
1 - split the screen in two frame (horizontally or vertically)
2 - move the new frame to the position indicated by 'dir' if necessary (left, right, up, down)
3 - move the focus to the new frame
When I only have one frame with an application window (e.g. Firefox). If I call this function to create a new empty frame on the left with :
C-t ;
split left
it works perfectly. You end up with firefox on the right and a new empty frame with the focus on
the left. The problem is when I move the focus to the right window (firefox), either with the mouse or the keyboard shortcut, the selection outline to indicate that the window is active is not drawn and the keyboard doesn't work in this window. It seems that no window is selected.
To solve the problem, I need to reactivate the left frame and then reactivate the right frame.
It's exactly the same problem with the command: split up
The problem doesn't arise if two applications are open: the new frame displays the second application.
If, instead of calling the split left command, I perform all the operations one by one, either via keyboard shortcuts or by calling the commands, there's no problem.
How can I solve this problem?
thank you