Moved commands out to the outer event loop.

This commit is contained in:
Adam Harrison 2021-10-05 19:42:04 -04:00
parent 6f53ee1b69
commit ce2ec9f442
6 changed files with 21 additions and 7 deletions

View File

@ -389,6 +389,12 @@ local commands = {
core.log("Removed \"%s\"", filename) core.log("Removed \"%s\"", filename)
end, end,
["doc:select-to-cursor"] = function(x, y, clicks)
local line1, col1 = select(3, doc():get_selection())
local line2, col2 = dv():resolve_screen_position(x, y)
doc():set_selection(line2, col2, line1, col1)
end,
["doc:set-cursor"] = function(x, y, clicks) ["doc:set-cursor"] = function(x, y, clicks)
local line, col = dv():resolve_screen_position(x, y) local line, col = dv():resolve_screen_position(x, y)
doc():set_selection(line, col, line, col) doc():set_selection(line, col, line, col)

View File

@ -922,7 +922,9 @@ function core.on_event(type, ...)
elseif type == "mousemoved" then elseif type == "mousemoved" then
core.root_view:on_mouse_moved(...) core.root_view:on_mouse_moved(...)
elseif type == "mousepressed" then elseif type == "mousepressed" then
core.root_view:on_mouse_pressed(...) if not core.root_view:on_mouse_pressed(...) then
did_keymap = keymap.on_mouse_pressed(...)
end
elseif type == "mousereleased" then elseif type == "mousereleased" then
core.root_view:on_mouse_released(...) core.root_view:on_mouse_released(...)
elseif type == "mousewheel" then elseif type == "mousewheel" then

View File

@ -96,6 +96,8 @@ local function keymap_macos(keymap)
["shift+lclick"] = "doc:select-to-cursor", ["shift+lclick"] = "doc:select-to-cursor",
["ctrl+lclick"] = "doc:split-cursor", ["ctrl+lclick"] = "doc:split-cursor",
["lclick"] = "doc:set-cursor", ["lclick"] = "doc:set-cursor",
["dlclick"] = "doc:select-word",
["tlclick"] = "doc:select-lines",
["shift+left"] = "doc:select-to-previous-char", ["shift+left"] = "doc:select-to-previous-char",
["shift+right"] = "doc:select-to-next-char", ["shift+right"] = "doc:select-to-next-char",
["shift+up"] = "doc:select-to-previous-line", ["shift+up"] = "doc:select-to-previous-line",

View File

@ -85,6 +85,10 @@ function keymap.on_key_pressed(k, ...)
return false return false
end end
local click_prefixes = { "", "d", "t" }
function keymap.on_mouse_pressed(button, x, y, clicks)
return keymap.on_key_pressed(click_prefixes[((clicks - 1) % 3) + 1] .. button:sub(1,1) .. "click", x, y, clicks)
end
function keymap.on_key_released(k) function keymap.on_key_released(k)
local mk = modkey_map[k] local mk = modkey_map[k]

View File

@ -3,7 +3,7 @@ local config = require "core.config"
local style = require "core.style" local style = require "core.style"
local common = require "core.common" local common = require "core.common"
local Object = require "core.object" local Object = require "core.object"
local keymap = require "core.keymap"
local View = Object:extend() local View = Object:extend()
@ -76,13 +76,11 @@ function View:scrollbar_overlaps_point(x, y)
end end
local click_prefixes = { "", "d", "t" }
function View:on_mouse_pressed(button, x, y, clicks) function View:on_mouse_pressed(button, x, y, clicks)
if self:scrollbar_overlaps_point(x, y) then if self:scrollbar_overlaps_point(x, y) then
self.dragging_scrollbar = true self.dragging_scrollbar = true
return true return true
end end
return keymap.on_key_pressed(click_prefixes[((clicks - 1) % 3) + 1] .. button:sub(1,1) .. "click", x, y, clicks)
end end

View File

@ -18,9 +18,11 @@ extern SDL_Window *window;
static const char* button_name(int button) { static const char* button_name(int button) {
switch (button) { switch (button) {
case 1 : return "left"; case SDL_BUTTON_LEFT : return "left";
case 2 : return "middle"; case SDL_BUTTON_MIDDLE : return "middle";
case 3 : return "right"; case SDL_BUTTON_RIGHT : return "right";
case SDL_BUTTON_X1 : return "x1";
case SDL_BUTTON_X2 : return "x2";
default : return "?"; default : return "?";
} }
} }