changeset 70:f4e393a13d59 default tip

no find toggle
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 10 Jun 2025 22:34:24 -0600
parents 3867e9e1b94c
children
files src/luan_editor/find.luan src/luan_editor/menu.luan
diffstat 2 files changed, 29 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
diff -r 3867e9e1b94c -r f4e393a13d59 src/luan_editor/find.luan
--- a/src/luan_editor/find.luan	Tue Jun 10 20:47:20 2025 -0600
+++ b/src/luan_editor/find.luan	Tue Jun 10 22:34:24 2025 -0600
@@ -189,7 +189,7 @@
 				action_listener = replace_match
 			}
 			new_panel{
-				constraints = "span,wrap"
+				constraints = "span,grow,wrap"
 				layout = new_mig_layout("insets 0,gap 16px")
 				children = {
 					regex_check_box
@@ -199,22 +199,28 @@
 							browse("https://www.reactionary.software/learn.html#regex")
 						end
 					}
+					new_button{
+						constraints = "pushx, align right"
+						text = "Close"
+						action_listener = function(_)
+							window.hide_find_panel()
+						end
+					}
 				}
 			}
 		}
 	}
-	function window.show_find_panel(is_visible)
-		find_panel.is_visible = is_visible
-		if is_visible then
-			find_field.request_focus_in_window()
-			find_field.select_all()
-		else
-			text_area.clear_hightlights()
-		end
+	function window.show_find_panel()
+		find_panel.is_visible = true
+		find_field.request_focus_in_window()
+		find_field.select_all()
+	end
+	function window.hide_find_panel()
+		find_panel.is_visible = false
+		text_area.clear_hightlights()
 	end
 	function window.find_case_insensitive(_)
-		find_panel.visible = true
-		window.find_menu_item.is_selected = true
+		find_panel.is_visible = true
 		regex_check_box.is_selected = true
 		find_field.text = "(?i)\Q\E"
 		find_field.set_selection(7)
@@ -222,8 +228,7 @@
 		status_bar.text = [[Put search text between "\Q" and "\E"]]
 	end
 	function window.tabs_to_spaces(_)
-		find_panel.visible = true
-		window.find_menu_item.is_selected = true
+		find_panel.is_visible = true
 		regex_check_box.is_selected = true
 		find_field.text = [[(?m)^(\t*)\t]]
 		local spaces = repeated( " ", text_area.tab_size )
@@ -231,8 +236,7 @@
 		status_bar.text = [[Do "Replace All" until 0 replacements]]
 	end
 	function window.spaces_to_tabs(_)
-		find_panel.visible = true
-		window.find_menu_item.is_selected = true
+		find_panel.is_visible = true
 		regex_check_box.is_selected = true
 		local tab_size = text_area.tab_size
 		find_field.text = `%>(?m)^(( {<%=tab_size%>})*) {<%=tab_size%>}<%`
diff -r 3867e9e1b94c -r f4e393a13d59 src/luan_editor/menu.luan
--- a/src/luan_editor/menu.luan	Tue Jun 10 20:47:20 2025 -0600
+++ b/src/luan_editor/menu.luan	Tue Jun 10 22:34:24 2025 -0600
@@ -61,15 +61,6 @@
 	update_undo_redo()
 	document.add_undo_listener(update_undo_redo)
 
-	local find_menu_item = new_check_box_menu_item{
-		text = "Find and Replace"
-		accelerator = "F"
-		action_listener = function(event)
-			window.show_find_panel(event.source.state)
-		end
-	}
-	window.find_menu_item = find_menu_item
-
 	local menu_bar = new_menu_bar{
 		menus = {
 			new_menu{
@@ -164,7 +155,16 @@
 			new_menu{
 				text = "Find"
 				menu_items = {
-					find_menu_item
+					new_menu_item{
+						text = "Find and Replace"
+						accelerator = "F"
+						action_listener = action_listener(window.show_find_panel)
+					}
+					new_menu_item{
+						text = "Close Find and Replace"
+						accelerator = "shift F"
+						action_listener = action_listener(window.hide_find_panel)
+					}
 					new_menu_item{
 						text = "Find Case Insensitive"
 						action_listener = window.find_case_insensitive