mirror of
https://github.com/Relintai/Godot-TextEditor.git
synced 2025-01-26 16:59:19 +01:00
selection bug
This commit is contained in:
parent
436b7b8f10
commit
76932313ae
@ -19,6 +19,7 @@ var last_selection:Array = [0, 0, 0, 0]
|
||||
|
||||
var hscroll:int = 0
|
||||
var vscroll:int = 0
|
||||
var in_focus:bool = false
|
||||
|
||||
func _ready():
|
||||
var _e
|
||||
@ -28,6 +29,8 @@ func _ready():
|
||||
_e = editor.connect("file_selected", self, "_file_selected")
|
||||
_e = editor.connect("file_renamed", self, "_file_renamed")
|
||||
_e = connect("text_changed", self, "text_changed")
|
||||
_e = connect("focus_entered", self, "set", ["in_focus", true])
|
||||
_e = connect("focus_exited", self, "set", ["in_focus", false])
|
||||
|
||||
if get_parent() is TabContainer:
|
||||
get_parent().connect("tab_changed", self, "_tab_changed")
|
||||
@ -81,9 +84,20 @@ func _input(e):
|
||||
if not editor.is_plugin_active():
|
||||
return
|
||||
|
||||
if not visible:
|
||||
if not visible or not in_focus:
|
||||
return
|
||||
|
||||
# save files
|
||||
if e is InputEventKey and e.pressed and e.control:
|
||||
if e.scancode == KEY_S:
|
||||
if modified:
|
||||
get_tree().set_input_as_handled()
|
||||
editor.save_files()
|
||||
|
||||
if e.scancode == KEY_W and not e.shift:
|
||||
get_tree().set_input_as_handled()
|
||||
close()
|
||||
|
||||
# remember last selection
|
||||
if e is InputEventKey and e.pressed:
|
||||
last_key = e.scancode
|
||||
|
@ -191,7 +191,7 @@ func url(s:String, url:String) -> String: return "[url=%s]%s[/url]" % [url, s]
|
||||
const FOLDER:String = "🗀" # not visible in godot
|
||||
func _draw_dir(dir:Dictionary, deep:int):
|
||||
var is_tagging = editor.is_tagging()
|
||||
var dimmest:float = .65 if is_tagging else 0.0
|
||||
var dimmest:float = .5 if is_tagging else 0.0
|
||||
|
||||
var space = clr("┃ ".repeat(deep), Color.white.darkened(.8))
|
||||
var file:String = dir.file_path
|
||||
|
@ -116,9 +116,11 @@ func _ready():
|
||||
popup_file = menu_file.get_popup()
|
||||
popup_file.clear()
|
||||
popup_file.add_font_override("font", FONT_R)
|
||||
popup_file.add_item("New File")
|
||||
popup_file.add_item("New Folder")
|
||||
_e = popup_file.connect("index_pressed", self, "_menu_file")
|
||||
popup_file.add_item("New File", 100)
|
||||
popup_file.add_item("New Folder", 200)
|
||||
popup_file.add_separator()
|
||||
popup_file.add_item("Open last closed", 300)
|
||||
_e = popup_file.connect("id_pressed", self, "_menu_file")
|
||||
|
||||
# view
|
||||
menu_view.add_font_override("font", FONT_R)
|
||||
@ -268,10 +270,14 @@ func _apply_fonts(n:Node):
|
||||
if n.has_font("font"):
|
||||
n.add_font_override("font", FONT_R)
|
||||
|
||||
func _menu_file(a):
|
||||
match menu_file.get_popup().items[a]:
|
||||
"New File": popup_create_file()
|
||||
"New Folder": popup_create_dir()
|
||||
func _menu_file(id):
|
||||
# var index = popup_file.get_item_index(id)
|
||||
# var data = popup_file.items[index]
|
||||
# prints(id, index, data)
|
||||
match id:
|
||||
100: popup_create_file() # "New File"
|
||||
200: popup_create_dir() # "New Folder"
|
||||
300: open_last_file() # "Open last closed"
|
||||
|
||||
func _menu_view_dir(index:int):
|
||||
match index:
|
||||
@ -411,29 +417,32 @@ func create_dir(file_path:String):
|
||||
func _debug_pressed():
|
||||
set_directory()
|
||||
|
||||
func _unhandled_key_input(e:InputEventKey):
|
||||
if not e.pressed:
|
||||
return
|
||||
|
||||
if e.control:
|
||||
# save
|
||||
if e.scancode == KEY_S:
|
||||
emit_signal("save_files")
|
||||
|
||||
# close/unclose tab
|
||||
elif e.scancode == KEY_W:
|
||||
if e.shift:
|
||||
open_last_file()
|
||||
else:
|
||||
close_selected()
|
||||
|
||||
elif e.scancode == KEY_R:
|
||||
sort_files()
|
||||
|
||||
else:
|
||||
return
|
||||
|
||||
get_tree().set_input_as_handled()
|
||||
#func _unhandled_key_input(e:InputEventKey):
|
||||
# if not e.pressed:
|
||||
# return
|
||||
#
|
||||
# if e.control:
|
||||
# # save
|
||||
# if e.scancode == KEY_S:
|
||||
# emit_signal("save_files")
|
||||
#
|
||||
# # close/unclose tab
|
||||
# elif e.scancode == KEY_W:
|
||||
# if e.shift:
|
||||
# open_last_file()
|
||||
# else:
|
||||
# close_selected()
|
||||
#
|
||||
# elif e.scancode == KEY_R:
|
||||
# sort_files()
|
||||
#
|
||||
# else:
|
||||
# return
|
||||
#
|
||||
# get_tree().set_input_as_handled()
|
||||
|
||||
func save_files():
|
||||
emit_signal("save_files")
|
||||
|
||||
func sort_files():
|
||||
TE_Util.dig(file_list, self, "_sort")
|
||||
|
@ -21,13 +21,20 @@ func toggle_comment(t:TextEdit, head:String="", tail:String=""):
|
||||
var cursor_c
|
||||
|
||||
if not t.is_selection_active():
|
||||
var l = t.cursor_get_line()
|
||||
var lt = t.get_line(l)
|
||||
wasnt_selected = lt.strip_edges() == ""
|
||||
cursor_l = t.cursor_get_line()
|
||||
cursor_c = t.cursor_get_column()
|
||||
var s = len(lt) - len(lt.strip_edges(true, false))
|
||||
t.select(l, s, l, len(t.get_line(l)))
|
||||
var c = t.cursor_get_column()
|
||||
t.insert_text_at_cursor(head + tail)
|
||||
t.cursor_set_column(c + len(head))
|
||||
return
|
||||
# var l = t.cursor_get_line()
|
||||
# var lt = t.get_line(l)
|
||||
# wasnt_selected = lt.strip_edges() == ""
|
||||
# cursor_l = t.cursor_get_line()
|
||||
# cursor_c = t.cursor_get_column()
|
||||
# var s = len(lt) - len(lt.strip_edges(true, false))
|
||||
# t.select(l, s, l, len(t.get_line(l)))
|
||||
|
||||
# if not t.is_selection_active():
|
||||
# return
|
||||
|
||||
var l1 = t.get_selection_from_line()
|
||||
var c1 = t.get_selection_from_column()
|
||||
@ -51,8 +58,6 @@ func toggle_comment(t:TextEdit, head:String="", tail:String=""):
|
||||
var l2 = l1 + len(l)-1
|
||||
var c2 = c1 + len(l[-1])
|
||||
t.select(l1, c1, l2, c2)
|
||||
|
||||
return [old, new]
|
||||
|
||||
func add_symbol(line:int=-1, deep:int=0, name:String="") -> Dictionary:
|
||||
var symbol = { deep=deep, name=name, tags=[] }
|
||||
|
@ -18,11 +18,11 @@ func get_symbols(t:String):
|
||||
last = add_symbol(i, deep, key)
|
||||
|
||||
# tags
|
||||
elif "/* #" in lines[i]:
|
||||
for tag in lines[i].split("/* #", true, 1)[1].split("*/", true, 1)[0].split("#"):
|
||||
tag = tag.strip_edges()
|
||||
if tag:
|
||||
last.tags.append(tag)
|
||||
# elif "/* #" in lines[i]:
|
||||
# for tag in lines[i].split("/* #", true, 1)[1].split("*/", true, 1)[0].split("#"):
|
||||
# tag = tag.strip_edges()
|
||||
# if tag:
|
||||
# last.tags.append(tag)
|
||||
|
||||
elif '"#": "' in lines[i]:
|
||||
for tag in lines[i].split('"#": "', true, 1)[1].split('"', true, 1)[0].split("#"):
|
||||
|
@ -42,10 +42,6 @@ config/name="TextEdit"
|
||||
run/main_scene="res://addons/text_editor/TextEditor.tscn"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
enabled=PoolStringArray( "res://addons/text_editor/plugin.cfg" )
|
||||
|
||||
[physics]
|
||||
|
||||
common/enable_pause_aware_picking=true
|
||||
|
Loading…
Reference in New Issue
Block a user