107 Commits

Author SHA1 Message Date
Guldoman
5c2c95765e
Add IME support (#991) 2022-10-15 19:58:51 -04:00
jgmdev
3f206db69a initial documentation for better code completion 2022-06-07 22:09:34 -04:00
Guldoman
9de75988ba
Send mouseleft event when the mouse leaves the window (#928)
* Send `mouseleft` event when the mouse leaves the window

* Call `View:on_mouse_left` when the mouse leaves the `View`

Previously `View:on_mouse_left` was called only when the mouse left the
window, and it was called on every visible `View`.

Now it gets also called when the mouse "changes" `View`, and only the
last `View` the mouse was on will receive the event.
2022-04-28 21:50:34 -04:00
Guldoman
f42dbb0060
Add animation categories to enable finer transitions control (#941)
* Allow finer control over transitions

* Add categories to transitions
2022-04-25 20:35:35 -04:00
Jefferson González
30de42f4ab
Merge pull request #755 from Jipok/draw_tab_rework
rootview.lua: Refactor Node:draw_tab
2022-03-18 05:05:55 -04:00
Guldoman
539f929e30
Allow intercepting filedropped events
The event is first sent to the underlying `View`; if not handled, it's 
managed as before.
2022-02-15 00:45:59 +01:00
jgmdev
bb4569da53 Fix cases of nil node. 2022-02-09 10:40:02 -04:00
Jipok
6c1c983d1c rootview.lua: Refactor Node:draw_tab 2021-12-21 02:20:31 +05:00
Guldoman
7cb2068bb8
Split Node and EmptyView from RootView 2021-12-06 22:28:29 +01:00
Adam
4767ffe58d
Merge pull request #693 from adamharrison/fix-scrollbar-split
Added in check to make sure you can use a scrollbar on a split.
2021-11-27 11:44:22 -05:00
Adam Harrison
463605ff41 Fixed event propogation. 2021-11-23 21:56:07 -05:00
Adam Harrison
cc3fddd1e5 Added in check to make sure you can use a scrollbar on a split. 2021-11-23 20:34:01 -05:00
Adam Harrison
96db380c73 Manual merge of into . 2021-11-23 15:57:22 -05:00
Adam Harrison
18959aebef Fixed predicate and minor propogation issue. 2021-11-16 19:12:39 -05:00
Adam Harrison
6bdcfc824d Rearranged things to make a bit more sense. 2021-11-14 15:41:28 -05:00
Adam Harrison
7905ddd26f Fixed propogation again. 2021-11-14 15:41:28 -05:00
Adam Harrison
4e313d9fc5 Propogated mouse clicks correctly. 2021-11-14 15:41:28 -05:00
Guldoman
331b8e90ec
Select a new primary node when closing the current one
The new primary node can be any non-locked leaf node that isn't already 
primary.
2021-10-23 03:34:24 +02:00
Francesco Abbate
167e41de65 Fix problem with treeview keeping the editor busy
Fix a problem introduced when fixing the dirty pixel problem, commit
cb08c5c. The node, when determining the layout was rounding the size
of the fixed-size view. In turns this latter was calling move_towards
to the default_size it wanted. If default_size was non-integer the
value vas never archieved because it was rounded during layout and
move_towars was keeping the editor busy by setting the
core.need_redraw flag.
2021-10-21 23:18:31 +02:00
Francesco Abbate
0d2166c9ce Correct Node's clipping rectangle
Fixing the Node's clipping rectangle make the clipping in DocView:draw()
partially redundant. This latter is now no longer needed to clip
on the right when drawing the document's lines but it still serves to
the purpose of clipping on the left, before the gutter region.
2021-10-11 09:25:38 +02:00
Francesco Abbate
8b634daa66 Use rounded value for node's size when splitting
Rouding node's size to an integer value ensure drawing are pixel
perfect in sizing.
2021-10-10 21:48:16 +02:00
Francesco Abbate
cb08c5cbb7 Fix dirty pixels problem on window's right side
The last column of pixel on the window's right side isn't correctly
drawn and pixels appear dirty and more noticeably when the a NagView
message was previously shown, a stripe of red pixels remains on the right.

We use now a more souding roundig scheme. Now the rectangles to clip or to
draw are passed around as Lua numbers without any rounding. In turns, when
the rect coordinates are passed to the renderer we ensure the border of the
rect are correctly snapped to the pixel's grid. It works by computing the
coordinates of the edges, round them to integers and then compute the rect's
width based on the rounded coordinates values.
2021-10-10 14:52:55 +02:00
Guldoman
d817944170 Force showing tabs when dragging them 2021-10-02 18:37:00 +02:00
Guldoman
dced6da03d Implement tab drag and drop 2021-10-02 18:36:59 +02:00
Guldoman
86632b68de Move single tab drawing to its own function 2021-10-02 18:36:59 +02:00
Guldoman
f6b6634868 Force showing tabs when dragging them 2021-09-17 22:25:05 +02:00
Guldoman
3eba7cd7f1 Implement tab drag and drop 2021-09-17 22:25:05 +02:00
Guldoman
6a3f59c423 Move single tab drawing to its own function 2021-09-17 22:25:05 +02:00
Guldoman
66bfff2e26 Fix wrong locked sibling check
Previously if the split type was "hsplit", but `locked_size_x` was 
falsy, `locked_size_y` was wrongly used.
2021-09-15 22:38:09 +02:00
Guldoman
9bfec4aca5 Ensure that the primary node always has a View 2021-09-15 22:38:09 +02:00
Guldoman
fb955e4e12 Only check if sibling is locked in the split direction
If the sibling is not locked in the direction of the split, it should 
fill the space.
2021-09-15 22:38:09 +02:00
Guldoman
1e8031a0e8 Fix checking if sibling is locked when removing Views
We only checked if sibling was locked in the `x` direction.
2021-09-15 22:38:09 +02:00
Francesco Abbate
ccba91261d Merge remote-tracking branch 'origin/fix-2.0.1' 2021-08-28 17:37:55 +02:00
Francesco Abbate
d46475532f Introduce View objects context property
Used to determine if an instance of the given class should
be closed or not when a project session is terminated.
2021-08-27 23:55:17 +02:00
Francesco Abbate
9592ce85f5 Revert "Further simplifies logic for active view in close-all command"
This reverts commit bb6b99b16777f0b34c1ea28db78525b4041d0f31.
2021-08-27 23:20:08 +02:00
Guldoman
c7d044f178 Allow tabs to always be visible 2021-08-27 20:43:13 +02:00
Francesco Abbate
bb6b99b167 Further simplifies logic for active view in close-all command 2021-08-27 14:42:57 +02:00
Francesco Abbate
7f4d9789d6 Simplify commit daf91676 about active view setting 2021-08-27 13:02:28 +02:00
Francesco Abbate
daf916769f Fix bug with close-all command
There are really multiple things here in the close_all_docviews
function:

1. we reset the Node's tab_offset
2. we ensure the core's active_view is properly set
3. we close LogViews as well as DocViews

Some conditions seems to never happen but we stay safe and try
to cover all possible cases.
2021-08-27 00:13:40 +02:00
Adam Harrison
c644ca7df6 keep_inactive -> keep_active 2021-08-10 23:29:39 -04:00
Adam Harrison
851dc07408 Added in close others, and refactored close all. 2021-08-10 23:14:40 -04:00
Francesco Abbate
0b2bf227a8 Fix inactive divider intercepting mouse clicks
In the function Node:get_divider_overlapping_point() we check if we
hit a divider (separator between two nodes). If yes the event is
intercepted and used to set the cursor and drag the separator if
appropriate.

In reality, on mouse move events, when one of the node is a split
and one of its child is not resizable we don't set the cursor to
and we don't intercept the event. However on a mouse pressed event
the event was intercepted regardless of the fact that the child
nodes are resizable or not. This latter behavior was unwanted as it
prevents mouse clicks to be processed because of a divided that is
inactive.

In addition it prevented processing of mouse clicks when the child
node was invisible leading to issue #363. For this latter the issue
was the invisible NagView in the upper part of the window.

To fix the problem we provide a divider with
Node:get_divider_overlapping_point() only if its child node are
resizable. In this way the mouse clicks or movements are intercepted
only if the divider is actually active.
2021-08-06 09:07:17 -07:00
Adam Harrison
f899848631 Added in checks so that the entire thing isn't consumed. 2021-06-27 13:27:20 -04:00
Adam Harrison
fd3f25608f Created an extra command, to implement appropriat cmd+w behaviour on mac. 2021-06-27 13:18:54 -04:00
cukmekerb
e493fa1b0a clicking the empty space where the x was no longer closes the tab 2021-06-17 21:15:30 -07:00
cukmekerb
e1d85af69b added config.tab_close_button option to hide X on tabs 2021-06-17 18:35:36 -07:00
Francesco Abbate
b39db791f9 Do not duplicate RootView method in contextmenu
The method RootView:on_mouse_pressed was copied in the contextmenu plugin with
a small modification to intercept the mouse clicks of the active view.

This approach is problematic because a relatively large portion of code is
duplicated.

We introduced a function named RootView.on_view_mouse_pressed to let plugins
like contextmenu intercepts mouse clicks in the active area without duplicating
the function RootView:on_mouse_pressed.
2021-06-17 10:22:31 +02:00
Adam Harrison
66b76f15c2 Added a check for duplicate tabs, also ensured that the appropriate view is set as active. 2021-06-12 14:24:31 -04:00
Adam Harrison
a18eeafbc8 Added in some more checks. 2021-06-12 13:43:58 -04:00
Adam Harrison
f729d7d008 Allows you to drag nodes around splits. 2021-06-12 13:43:58 -04:00