From a99eb3ffe07f403c9d1b61e3095da794ea2d1ace Mon Sep 17 00:00:00 2001 From: Ksaper Date: Fri, 10 Mar 2023 05:38:32 +0200 Subject: [PATCH] Adjust some code + fix initial value not working --- widget/app_launcher/text_input.lua | 39 +++++++++++++++++------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/widget/app_launcher/text_input.lua b/widget/app_launcher/text_input.lua index b32403e..de1c9ad 100644 --- a/widget/app_launcher/text_input.lua +++ b/widget/app_launcher/text_input.lua @@ -31,7 +31,7 @@ local properties = { "unfocus_keys", "unfocus_on_clicked_outside", "unfocus_on_mouse_leave", "unfocus_on_tag_change", "focus_on_subject_mouse_enter", "unfocus_on_subject_mouse_leave", "reset_on_unfocus", - "placeholder", "text", "pattern", "obscure", + "placeholder", "initial", "pattern", "obscure", "cursor_blink", "cursor_blink_rate","cursor_size", "cursor_bg", "selection_bg" } @@ -195,20 +195,21 @@ end function text_input:set_widget_template(widget_template) local wp = self._private - self._private.text_widget = widget_template:get_children_by_id("text_role")[1] - self._private.text_widget.forced_width = math.huge - local text_draw = self._private.text_widget.draw - - self._private.text_widget:set_text(self:get_text()) + wp.text_widget = widget_template:get_children_by_id("text_role")[1] + wp.text_widget.forced_width = math.huge + local text_draw = wp.text_widget.draw + if self:get_initial() then + self:set_text(self:get_initial()) + end local placeholder_widget = widget_template:get_children_by_id("placeholder_role") if placeholder_widget then placeholder_widget = placeholder_widget[1] end - function self._private.text_widget:draw(context, cr, width, height) + function wp.text_widget:draw(context, cr, width, height) -- Selection bg - local ink_rect, logical_rect = self._private.layout:get_pixel_extents() + local _, logical_rect = self._private.layout:get_pixel_extents() cr:set_source(gcolor.change_opacity(wp.selection_bg, wp.selection_opacity)) cr:rectangle( wp.selection_start_x, @@ -219,7 +220,7 @@ function text_input:set_widget_template(widget_template) cr:fill() -- Cursor - local ink_rect, logical_rect = self._private.layout:get_pixel_extents() + local _, logical_rect = self._private.layout:get_pixel_extents() cr:set_source(gcolor.change_opacity(wp.cursor_bg, wp.cursor_opacity)) cr:set_line_width(wp.cursor_width) cr:move_to(wp.cursor_x, logical_rect.y - 3) @@ -236,19 +237,17 @@ function text_input:set_widget_template(widget_template) end end - wp.selecting_text = false - - local function on_drag(drawable, lx, ly) + local function on_drag(_, lx, ly) if not wp.selecting_text and (lx ~= wp.press_pos.lx or ly ~= wp.press_pos.ly) then self:set_selection_start_index_from_x_y(wp.press_pos.lx, wp.press_pos.ly) - self:set_selection_end_index(self._private.selection_start) + self:set_selection_end_index(wp.selection_start) wp.selecting_text = true elseif wp.selecting_text then self:set_selection_end_index_from_x_y(lx - wp.offset.x, ly - wp.offset.y) end end - self._private.text_widget:connect_signal("button::press", function(_, lx, ly, button, mods, find_widgets_result) + wp.text_widget:connect_signal("button::press", function(_, lx, ly, button, mods, find_widgets_result) if button == 1 then wp.press_pos = { lx = lx, ly = ly } wp.offset = { x = find_widgets_result.x, y = find_widgets_result.y } @@ -256,7 +255,7 @@ function text_input:set_widget_template(widget_template) end end) - self._private.text_widget:connect_signal("button::release", function(_, lx, ly, button, mods, find_widgets_result) + wp.text_widget:connect_signal("button::release", function(_, lx, ly, button, mods, find_widgets_result) find_widgets_result.drawable:disconnect_signal("mouse::move", on_drag) if not wp.selecting_text then self:set_cursor_index_from_x_y(lx, ly) @@ -266,7 +265,7 @@ function text_input:set_widget_template(widget_template) self:focus() end) - self._private.text_widget:connect_signal("mouse::enter", function() + wp.text_widget:connect_signal("mouse::enter", function() capi.root.cursor("xterm") local wibox = capi.mouse.current_wibox if wibox then @@ -274,7 +273,7 @@ function text_input:set_widget_template(widget_template) end end) - self._private.text_widget:connect_signal("mouse::leave", function(_, find_widgets_result) + wp.text_widget:connect_signal("mouse::leave", function(_, find_widgets_result) if self:get_focused() == false then capi.root.cursor("left_ptr") local wibox = capi.mouse.current_wibox @@ -314,6 +313,11 @@ function text_input:toggle_obscure() self:set_obscure(not self._private.obscure) end +function text_input:set_initial(initial) + self._private.initial = initial + self:set_text(initial) +end + function text_input:update_text(text) if self:get_mode() == "insert" then self:insert_text(text) @@ -738,6 +742,7 @@ local function new() wp.selection_start_y = 0 wp.selection_end_y = 0 wp.selection_opacity = 0 + wp.selecting_text = false wp.unfocus_keys = { "Escape", "Return" } wp.unfocus_on_clicked_outside = true