Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package lite-xl-widgets for openSUSE:Factory 
checked in at 2022-11-04 17:38:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lite-xl-widgets (Old)
 and      /work/SRC/openSUSE:Factory/.lite-xl-widgets.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "lite-xl-widgets"

Fri Nov  4 17:38:20 2022 rev:2 rq:1033566 version:git20221023.648c067

Changes:
--------
--- /work/SRC/openSUSE:Factory/lite-xl-widgets/lite-xl-widgets.changes  
2022-10-19 13:18:05.909274514 +0200
+++ 
/work/SRC/openSUSE:Factory/.lite-xl-widgets.new.2275/lite-xl-widgets.changes    
    2022-11-04 17:42:09.183063477 +0100
@@ -1,0 +2,11 @@
+Thu Nov 03 18:14:55 UTC 2022 - scott.bradn...@suse.com
+
+- Update to version git20221023.648c067:
+  * textbox: fix get_gutter_width returning nil, fixes lite-xl/lite-xl#1158
+  * fontslist: allow new max of 10 fonts
+  * use new on_scale_change logic from lite-xl master
+  * fontslist: limit maximum fonts to 3
+  * textbox: add double and triple click selection
+  * Adaptation to newer scroll API
+
+-------------------------------------------------------------------

Old:
----
  lite-xl-widgets-git20220917.6d8c23d.tar.gz

New:
----
  lite-xl-widgets-git20221023.648c067.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ lite-xl-widgets.spec ++++++
--- /var/tmp/diff_new_pack.yKps1o/_old  2022-11-04 17:42:09.767066528 +0100
+++ /var/tmp/diff_new_pack.yKps1o/_new  2022-11-04 17:42:09.775066570 +0100
@@ -17,12 +17,13 @@
 
 %define programname lite-xl
 Name:           lite-xl-widgets
-Version:        git20220917.6d8c23d
+Version:        git20221023.648c067
 Release:        0
 Summary:        Widgets for %{programname}
 License:        MIT
 URL:            https://github.com/lite-xl/lite-xl-widgets
 Source0:        %{name}-%{version}.tar.gz
+Requires:       lite-xl
 BuildArch:      noarch
 
 %description

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.yKps1o/_old  2022-11-04 17:42:09.823066820 +0100
+++ /var/tmp/diff_new_pack.yKps1o/_new  2022-11-04 17:42:09.823066820 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/lite-xl/lite-xl-widgets</param>
-              <param 
name="changesrevision">6d8c23d550d75a01251eafc7296e03b081805c2f</param></service></servicedata>
+              <param 
name="changesrevision">648c06723180c90194cba39c51e21bc05a707b2b</param></service></servicedata>
 (No newline at EOF)
 

++++++ lite-xl-widgets-git20220917.6d8c23d.tar.gz -> 
lite-xl-widgets-git20221023.648c067.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/button.lua 
new/lite-xl-widgets-git20221023.648c067/button.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/button.lua  2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/button.lua  2022-10-23 
06:34:26.000000000 +0200
@@ -25,6 +25,8 @@
 function Button:new(parent, label)
   Button.super.new(self, parent)
 
+  self.type_name = "widget.button"
+
   self.icon = {
     code = nil, color = nil, hover_color = nil
   }
@@ -103,7 +105,8 @@
   self.hover_back = nil
 end
 
-function Button:on_rescale(new_scale, prev_scale)
+function Button:on_scale_change(new_scale, prev_scale)
+  Button.super.on_scale_change(self, new_scale, prev_scale)
   self.padding.x = self.padding.x * (new_scale / prev_scale)
   self.padding.y = self.padding.y * (new_scale / prev_scale)
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/checkbox.lua 
new/lite-xl-widgets-git20221023.648c067/checkbox.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/checkbox.lua        2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/checkbox.lua        2022-10-23 
06:34:26.000000000 +0200
@@ -16,6 +16,7 @@
 ---@param label string
 function CheckBox:new(parent, label)
   CheckBox.super.new(self, parent)
+  self.type_name = "widget.checkbox"
   self.checked = false
   self:set_label(label or "")
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/dialog.lua 
new/lite-xl-widgets-git20221023.648c067/dialog.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/dialog.lua  2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/dialog.lua  2022-10-23 
06:34:26.000000000 +0200
@@ -21,6 +21,8 @@
 function Dialog:new(title)
   Dialog.super.new(self)
 
+  self.type_name = "widget.dialog"
+
   self.draggable = true
   self.scrollable = false
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/filepicker.lua 
new/lite-xl-widgets-git20221023.648c067/filepicker.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/filepicker.lua      2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/filepicker.lua      2022-10-23 
06:34:26.000000000 +0200
@@ -67,6 +67,8 @@
 
   local this = self
 
+  self.type_name = "widget.filepicker"
+
   self.filters = {}
   self.border.width = 0
   self.pick_mode = FilePicker.mode.FILE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/foldingbook.lua 
new/lite-xl-widgets-git20221023.648c067/foldingbook.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/foldingbook.lua     2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/foldingbook.lua     2022-10-23 
06:34:26.000000000 +0200
@@ -24,6 +24,7 @@
 ---@param parent widget
 function FoldingBook:new(parent)
   FoldingBook.super.new(self, parent)
+  self.type_name = "widget.foldingbook"
   self.panes = {}
   self.scrollable = true
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/fontdialog.lua 
new/lite-xl-widgets-git20221023.648c067/fontdialog.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/fontdialog.lua      2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/fontdialog.lua      2022-10-23 
06:34:26.000000000 +0200
@@ -45,6 +45,8 @@
 
   local this = self
 
+  self.type_name = "widget.fontdialog"
+
   self.preview = Label(self.panel, "No Font Selected")
   self.preview.border.width = 1
   self.preview.clickable = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/fontslist.lua 
new/lite-xl-widgets-git20221023.648c067/fontslist.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/fontslist.lua       2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/fontslist.lua       2022-10-23 
06:34:26.000000000 +0200
@@ -29,6 +29,8 @@
 function FontsList:new(parent)
   FontsList.super.new(self, parent)
 
+  self.type_name = "widget.fontslist"
+
   self.border.width = 0
 
   self.dialog = false
@@ -68,6 +70,10 @@
   self.add = Button(self, "Add")
   self.add:set_icon("B")
   function self.add:on_click()
+    if #this.list.rows > 9 then
+      MessageBox.error("Max Fonts Reached", "Only a maximum of ten fonts can 
be added.")
+      return
+    end
     if not this.dialog then
       this.dialog = true
       ---@type widget.inputdialog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/init.lua 
new/lite-xl-widgets-git20221023.648c067/init.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/init.lua    2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/init.lua    2022-10-23 
06:34:26.000000000 +0200
@@ -7,6 +7,7 @@
 local core = require "core"
 local config = require "core.config"
 local style = require "core.style"
+local keymap = require "core.keymap"
 local View = require "core.view"
 local RootView = require "core.rootview"
 
@@ -58,6 +59,7 @@
 ---@field public foreground_color renderer.color
 ---@field public background_color renderer.color
 ---@field public render_background boolean
+---@field public type_name string
 ---@field private visible boolean
 ---@field private has_focus boolean
 ---@field private dragged boolean
@@ -71,7 +73,7 @@
 ---@field private mouse_is_pressed boolean
 ---@field private mouse_is_hovering boolean
 ---@field private mouse_pressed_outside boolean
----@field private was_scrolling boolean
+---@field private is_scrolling boolean
 local Widget = View:extend()
 
 ---Indicates on a widget.styledtext that a new line follows.
@@ -93,6 +95,7 @@
 function Widget:new(parent, floating)
   Widget.super.new(self)
 
+  self.type_name = "widget"
   self.parent = parent
   self.name = "---" -- defaults to the application name
   if type(floating) == "boolean" then
@@ -123,7 +126,7 @@
   self.textview = nil
   self.mouse = {x = 0, y = 0}
   self.prev_size = {x = 0, y = 0}
-  self.was_scrolling = false
+  self.is_scrolling = false
 
   self.mouse_is_pressed = false
   self.mouse_is_hovering = false
@@ -131,8 +134,6 @@
   -- used to allow proper node resizing
   self.mouse_pressed_outside = false
 
-  self.current_scale = SCALE
-
   if parent then
     parent:add_child(self)
   elseif self.defer_draw then
@@ -143,6 +144,11 @@
   self:set_position(0, 0)
 end
 
+---Useful for debugging.
+function Widget:__tostring()
+  return self.type_name
+end
+
 ---Add a child widget, automatically assign a zindex if non set and sorts
 ---them in reverse order for better events matching.
 ---@param child widget
@@ -590,12 +596,12 @@
 function Widget:centered()
   local w, h = system.get_window_size();
   if self.parent then
-    w = self.parent.size.x - (self.parent.border.width*2)
-    h = self.parent.size.y - (self.parent.border.width*2)
+    w = self.parent:get_width()
+    h = self.parent:get_height()
   end
   self:set_position(
-    (w / 2) - (self.size.x / 2),
-    (h / 2) - (self.size.y / 2)
+    (w / 2) - (self:get_width() / 2),
+    (h / 2) - (self:get_height() / 2)
   )
 end
 
@@ -634,13 +640,20 @@
   end
 end
 
----Calculates the scrollable size taking into account the bottom most
+---Calculates the y scrollable size taking into account the bottom most
 ---widget or the size of the widget it self if greater.
 ---@return number
 function Widget:get_scrollable_size()
   return math.max(self.size.y, self:get_real_height())
 end
 
+---Calculates the x scrollable size taking into account the right most
+---widget or the size of the widget it self if greater.
+---@return number
+function Widget:get_h_scrollable_size()
+  return math.max(self.size.x, self:get_real_width())
+end
+
 ---The name that is displayed on lite-xl tabs.
 function Widget:get_name()
   return self.name
@@ -692,6 +705,18 @@
 function Widget:on_mouse_pressed(button, x, y, clicks)
   if not self.visible then return false end
 
+  if Widget.super.on_mouse_pressed(self, button, x, y, clicks) then
+    local parent = self.parent
+    while parent do
+      -- propagate to parents so if mouse is not on top still
+      -- reach the childrens when the mouse is released
+      parent.is_scrolling = true
+      parent = parent.parent
+    end
+    self.is_scrolling = true
+    return true
+  end
+
   for _, child in pairs(self.childs) do
     if child:mouse_on_top(x, y) and child.clickable then
       child:on_mouse_pressed(button, x, y, clicks)
@@ -700,18 +725,6 @@
   end
 
   if self:mouse_on_top(x, y) then
-    Widget.super.on_mouse_pressed(self, button, x, y, clicks)
-
-    if self.hovered_scrollbar then
-      if self.parent then
-        -- propagate to parents so if mouse is not on top still
-        -- reach the childrens when the mouse is released
-        self.parent.was_scrolling = true
-      end
-      self.was_scrolling = true
-      return true
-    end
-
     self.mouse_is_pressed = true
 
     if self.parent then
@@ -742,21 +755,37 @@
 function Widget:on_mouse_released(button, x, y)
   if not self.visible then return false end
 
+  Widget.super.on_mouse_released(self, button, x, y)
+
+  if self.is_scrolling then
+    self.is_scrolling = false
+    local parent = self.parent
+    while parent do
+      parent.is_scrolling = false
+      parent = parent.parent
+    end
+    for _, child in pairs(self.childs) do
+      if child.is_scrolling then
+        child:on_mouse_released(button, x, y)
+      end
+    end
+    return true
+  end
+
   self:swap_active_child()
 
+  if self.child_active then
+    self.child_active:on_mouse_released(button, x, y)
+  end
+
   if not self.dragged then
     for _, child in pairs(self.childs) do
       local mouse_on_top = child:mouse_on_top(x, y)
       if
         mouse_on_top
         or
-        child.was_scrolling
-        or
         child.mouse_is_pressed
       then
-        -- if child ~= self.child_active then
-        --   self:swap_active_child()
-        -- end
         child:on_mouse_released(button, x, y)
         if child.input_text then
           self:swap_active_child(child)
@@ -769,28 +798,14 @@
     end
   end
 
-  if self.was_scrolling then
-    Widget.super.on_mouse_released(self, button, x, y)
-    self.mouse_is_pressed = false
-    self.was_scrolling = false
-    if self.parent then
-      self.parent.was_scrolling = false
-    end
-    return false
-  end
-
   if
-    not self:mouse_on_top(x, y)
+    not self.dragged
     and
     not self.mouse_is_pressed
-    and
-    not self.was_scrolling
   then
     return false
   end
 
-  Widget.super.on_mouse_released(self, button, x, y)
-
   if self.mouse_is_pressed then
     if self:mouse_on_top(x, y) then
       self:on_click(button, x, y)
@@ -839,17 +854,35 @@
 function Widget:on_mouse_moved(x, y, dx, dy)
   if not self.visible then return false end
 
+  Widget.super.on_mouse_moved(self, x, y, dx, dy)
+
+  if self.is_scrolling then
+    if not self:scrollbar_dragging() then
+      for _, child in pairs(self.childs) do
+        if child.is_scrolling then
+          child:on_mouse_moved(x, y, dx, dy)
+          break
+        end
+      end
+    end
+    return true
+  end
+
   -- store latest mouse coordinates for usage on the on_mouse_wheel event.
   self.mouse.x = x
   self.mouse.y = y
 
+  if self.child_active then
+    self.child_active:on_mouse_moved(x, y, dx, dy)
+  end
+
   if not self.dragged then
     local hovered = nil
     for _, child in pairs(self.childs) do
       if
         not hovered
         and
-        (child:mouse_on_top(x, y) or child.was_scrolling or 
child.mouse_is_pressed)
+        (child:mouse_on_top(x, y) or child.mouse_is_pressed)
       then
         hovered = child
       elseif child.mouse_is_hovering then
@@ -874,20 +907,12 @@
   end
 
   if
-    self:mouse_on_top(x, y)
-    or
-    self.was_scrolling
-    or
-    self.mouse_is_pressed
-    or
-    not self.parent
+    not self:mouse_on_top(x, y)
+    and
+    not self.mouse_is_pressed
+    and
+    not self.mouse_is_hovering
   then
-    Widget.super.on_mouse_moved(self, x, y, dx, dy)
-    if self.dragging_scrollbar then
-      self.dragged = true
-      return true
-    end
-  else
     return false
   end
 
@@ -938,7 +963,7 @@
   end
 end
 
-function Widget:on_mouse_wheel(y)
+function Widget:on_mouse_wheel(y, x)
   if
     not self.visible
     or
@@ -949,14 +974,23 @@
 
   for _, child in pairs(self.childs) do
     if child:mouse_on_top(self.mouse.x, self.mouse.y) then
-      if child:on_mouse_wheel(y) then
+      if child:on_mouse_wheel(y, x) then
         return true
       end
     end
   end
 
   if self.scrollable then
-    self.scroll.to.y = self.scroll.to.y + y * -config.mouse_wheel_scroll
+    if keymap.modkeys["shift"] then
+      x = y
+      y = 0
+    end
+    if y and y ~= 0 then
+      self.scroll.to.y = self.scroll.to.y + y * -config.mouse_wheel_scroll
+    end
+    if x and x ~= 0 then
+      self.scroll.to.x = self.scroll.to.x + x * -config.mouse_wheel_scroll
+    end
     return true
   end
 
@@ -967,30 +1001,24 @@
 ---any neccesary changes in sizes, padding, etc...
 ---@param new_scale number
 ---@param prev_scale number
-function Widget:on_rescale(new_scale, prev_scale) end
+function Widget:on_scale_change(new_scale, prev_scale)
+  local font_type = type(self.font)
+  if
+    font_type == "userdata"
+    or
+    (font_type == "table" and not self.font.container)
+  then
+    self.font:set_size(
+      self.font:get_size() * (new_scale / prev_scale)
+    )
+  end
+end
 
 ---If visible execute the widget calculations and returns true.
 ---@return boolean
 function Widget:update()
   if not self:is_visible() then return false end
 
-  if self.current_scale ~= SCALE then
-    local font_type = type(self.font)
-    if
-      font_type == "userdata"
-      or
-      (font_type == "table" and not self.font.container)
-    then
-      self.font:set_size(
-        self.font:get_size() * (SCALE / self.current_scale)
-      )
-    end
-    for _, child in pairs(self.childs) do
-      child:on_rescale(SCALE, self.current_scale)
-    end
-    self.current_scale = SCALE
-  end
-
   Widget.super.update(self)
 
   -- call this to be able to properly scroll
@@ -1007,12 +1035,6 @@
   if self.scrollable then
     Widget.super.draw_scrollbar(self)
   end
-
-  for i=#self.childs, 1, -1 do
-    if self.childs[i].visible and self.childs[i].scrollable then
-      self.childs[i]:draw_scrollbar()
-    end
-  end
 end
 
 ---If visible draw the widget and returns true.
@@ -1058,11 +1080,9 @@
 
 ---Recursively destroy all childs from the widget.
 function Widget:destroy_childs()
-  ::remove_child::
-  for idx, child in ipairs(self.childs) do
-    child:destroy_childs()
-    table.remove(self.childs, idx)
-    goto remove_child
+  for _=1, #self.childs do
+    self.childs[1]:destroy_childs()
+    table.remove(self.childs, 1)
   end
 end
 
@@ -1157,7 +1177,13 @@
           or
           (moved or not widget:on_mouse_moved(x, y, dx, dy))
         then
-            if not widget.child_active and widget.outside_view then
+            if
+              not widget.is_scrolling
+              and
+              not widget.child_active
+              and
+              widget.outside_view
+            then
               core.set_active_view(widget.outside_view)
               widget.outside_view = nil
             end
@@ -1177,14 +1203,14 @@
     end
   end
 
-  function RootView:on_mouse_wheel(y)
+  function RootView:on_mouse_wheel(y, x)
     for i=#floating_widgets, 1, -1 do
       local widget = floating_widgets[i]
-      if widget.defer_draw and widget:on_mouse_wheel(y) then
+      if widget.defer_draw and widget:on_mouse_wheel(y, x) then
         return true
       end
     end
-    return root_view_on_mouse_wheel(self, y)
+    return root_view_on_mouse_wheel(self, y, x)
   end
 
   function RootView:on_file_dropped(filename, x, y)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/inputdialog.lua 
new/lite-xl-widgets-git20221023.648c067/inputdialog.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/inputdialog.lua     2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/inputdialog.lua     2022-10-23 
06:34:26.000000000 +0200
@@ -24,6 +24,8 @@
 function InputDialog:new(title, message, text)
   InputDialog.super.new(self, title or "Enter Value")
 
+  self.type_name = "widget.inputdialog"
+
   self.message = Label(self.panel, message)
   self.text = TextBox(self.panel, text or "")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/itemslist.lua 
new/lite-xl-widgets-git20221023.648c067/itemslist.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/itemslist.lua       2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/itemslist.lua       2022-10-23 
06:34:26.000000000 +0200
@@ -21,6 +21,8 @@
 function ItemsList:new(parent)
   ItemsList.super.new(self, parent)
 
+  self.type_name = "widget.itemslist"
+
   self.border.width = 0
 
   self.dialog = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lite-xl-widgets-git20220917.6d8c23d/keybinddialog.lua 
new/lite-xl-widgets-git20221023.648c067/keybinddialog.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/keybinddialog.lua   2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/keybinddialog.lua   2022-10-23 
06:34:26.000000000 +0200
@@ -34,6 +34,8 @@
 function KeybindDialog:new()
   KeybindDialog.super.new(self, "Keybinding Selector")
 
+  self.type_name = "widget.keybinddialog"
+
   self.selected = nil
 
   local this = self
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/label.lua 
new/lite-xl-widgets-git20221023.648c067/label.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/label.lua   2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/label.lua   2022-10-23 
06:34:26.000000000 +0200
@@ -15,6 +15,7 @@
 ---@param label string
 function Label:new(parent, label)
   Label.super.new(self, parent)
+  self.type_name = "widget.label"
   self.clickable = false
   self.border.width = 0
   self.custom_size = {x = 0, y = 0}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/line.lua 
new/lite-xl-widgets-git20221023.648c067/line.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/line.lua    2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/line.lua    2022-10-23 
06:34:26.000000000 +0200
@@ -18,6 +18,7 @@
 ---@param padding number
 function Line:new(parent, thickness, padding)
   Line.super.new(self, parent)
+  self.type_name = "widget.line"
   self.size.y = thickness or 2
   self.custom_width = nil
   self.border.width = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/listbox.lua 
new/lite-xl-widgets-git20221023.648c067/listbox.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/listbox.lua 2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/listbox.lua 2022-10-23 
06:34:26.000000000 +0200
@@ -51,6 +51,7 @@
 ---@param parent widget
 function ListBox:new(parent)
   ListBox.super.new(self, parent)
+  self.type_name = "widget.listbox"
   self.scrollable = true
   self.rows = {}
   self.row_data = {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/messagebox.lua 
new/lite-xl-widgets-git20221023.648c067/messagebox.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/messagebox.lua      2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/messagebox.lua      2022-10-23 
06:34:26.000000000 +0200
@@ -50,6 +50,7 @@
 ---@param icon_color renderer.color
 function MessageBox:new(parent, title, message, icon, icon_color)
   MessageBox.super.new(self, parent)
+  self.type_name = "widget.messagebox"
   self.draggable = true
   self.scrollable = true
   self.title = Label(self, "")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/notebook.lua 
new/lite-xl-widgets-git20221023.648c067/notebook.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/notebook.lua        2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/notebook.lua        2022-10-23 
06:34:26.000000000 +0200
@@ -27,6 +27,7 @@
 ---@param parent widget
 function NoteBook:new(parent)
   NoteBook.super.new(self, parent)
+  self.type_name = "widget.notebook"
   self.panes = {}
   self.active_pane = nil
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/numberbox.lua 
new/lite-xl-widgets-git20221023.648c067/numberbox.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/numberbox.lua       2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/numberbox.lua       2022-10-23 
06:34:26.000000000 +0200
@@ -27,6 +27,8 @@
 function NumberBox:new(parent, value, min, max, step)
   NumberBox.super.new(self, parent)
 
+  self.type_name = "widget.numberbox"
+
   self.scrollable = true
 
   self:set_range(min, max)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/progressbar.lua 
new/lite-xl-widgets-git20221023.648c067/progressbar.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/progressbar.lua     2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/progressbar.lua     2022-10-23 
06:34:26.000000000 +0200
@@ -21,6 +21,7 @@
 ---@param width number
 function ProgressBar:new(parent, percent, width)
   ProgressBar.super.new(self, parent)
+  self.type_name = "widget.progressbar"
   self.clickable = false
   self.percent = percent or 0
   self.percent_width = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/selectbox.lua 
new/lite-xl-widgets-git20221023.648c067/selectbox.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/selectbox.lua       2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/selectbox.lua       2022-10-23 
06:34:26.000000000 +0200
@@ -21,6 +21,7 @@
 ---@param label string
 function SelectBox:new(parent, label)
   SelectBox.super.new(self, parent)
+  self.type_name = "widget.selectbox"
   self.size.x = 200 + (style.padding.x * 2)
   self.size.y = self:get_font():get_height() + (style.padding.y * 2)
   self.list_container = Widget()
@@ -28,7 +29,6 @@
     self.size.x - self.list_container.border.width,
     150
   )
-  self.list_container.border.color = style.caret
   self.list = ListBox(self.list_container)
   self.list.border.width = 0
   self.list:enable_expand(true)
@@ -75,7 +75,7 @@
 ---@param text string
 ---@param max_width number
 ---@param font widget.font Default is style.font
----@param overflow_chars string Default is '...'
+---@param overflow_chars? string Default is '...'
 ---@return string chopped_text
 ---@return boolean overflows True if the text overflows
 function SelectBox:text_overflow(text, max_width, font, overflow_chars)
@@ -146,7 +146,7 @@
   local y1 = self.position.y + self:get_height()
   local y2 = self.position.y - self.list:get_height()
 
-  local w, h = system.get_window_size()
+  local _, h = system.get_window_size()
 
   if y1 + self.list:get_height() <= h then
     self.list_container:set_position(
@@ -194,6 +194,8 @@
   if button == "left" then
     self:reposition_container()
 
+    self.list_container.border.color = style.caret
+
     self.list_container:toggle_visible()
 
     self.list:resize_to_parent()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/textbox.lua 
new/lite-xl-widgets-git20221023.648c067/textbox.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/textbox.lua 2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/textbox.lua 2022-10-23 
06:34:26.000000000 +0200
@@ -3,8 +3,8 @@
 --
 
 local core = require "core"
-local command = require "core.command"
 local style = require "core.style"
+local translate = require "core.doc.translate"
 local Doc = require "core.doc"
 local DocView = require "core.docview"
 local View = require "core.view"
@@ -44,10 +44,6 @@
   return 0
 end
 
-function TextView:scroll_to_make_visible()
-  -- no-op function to disable this functionality
-end
-
 function TextView:get_text()
   return self.doc:get_text(1, 1, 1, math.huge)
 end
@@ -61,7 +57,7 @@
 end
 
 function TextView:get_gutter_width()
-  return self.gutter_width
+  return self.gutter_width or 0
 end
 
 function TextView:get_line_height()
@@ -89,13 +85,11 @@
   local lh = self:get_line_height()
 
   local x, y = self:get_line_screen_position(minline)
-  local gw, gpad = self:get_gutter_width()
   for i = minline, maxline do
-    self:draw_line_gutter(i, self.position.x, y, gpad and gw - gpad or gw)
+    self:draw_line_gutter(i, self.position.x, y)
     y = y + lh
   end
 
-  local pos = self.position
   x, y = self:get_line_screen_position(minline)
   for i = minline, maxline do
     self:draw_line_body(i, x, y)
@@ -114,6 +108,7 @@
 
 function TextBox:new(parent, text, placeholder)
   TextBox.super.new(self, parent)
+  self.type_name = "widget.textbox"
   self.textview = TextView()
   self.textview.name = parent.name
   self.size.x = 200 + (style.padding.x * 2)
@@ -125,6 +120,7 @@
   self.input_text = true
   self.cursor = "ibeam"
   self.active = false
+  self.drag_select = false
 
   if text ~= "" then
     self.textview:set_text(text, select)
@@ -135,7 +131,7 @@
 
   local this = self
 
-  function self.textview.doc:on_text_change(type)
+  function self.textview.doc:on_text_change()
     this:on_change(this:get_text())
   end
 
@@ -154,8 +150,7 @@
 end
 
 ---@param width integer
----@param height? integer Ignored on the textbox
-function TextBox:set_size(width, height)
+function TextBox:set_size(width)
   TextBox.super.set_size(
     self,
     width,
@@ -188,7 +183,16 @@
 function TextBox:on_mouse_pressed(button, x, y, clicks)
   if TextBox.super.on_mouse_pressed(self, button, x, y, clicks) then
     self.textview:on_mouse_pressed(button, x, y, clicks)
-    command.perform("doc:set-cursor", x, y)
+    local line, col = self.textview:resolve_screen_position(x, y)
+    self.drag_select = { line = line, col = col }
+    self.textview.doc:set_selection(line, col, line, col)
+    if clicks == 2 then
+      local line1, col1 = translate.start_of_word(self.textview.doc, line, col)
+      local line2, col2 = translate.end_of_word(self.textview.doc, line1, col1)
+      self.textview.doc:set_selection(line2, col2, line1, col1)
+    elseif clicks == 3 then
+      self.textview.doc:set_selection(1, 1, 1, math.huge)
+    end
     if core.active_view ~= self.textview then
       self.textview:on_mouse_released(button, x, y)
     end
@@ -199,6 +203,7 @@
 
 function TextBox:on_mouse_released(button, x, y)
   if TextBox.super.on_mouse_released(self, button, x, y) then
+    self.drag_select = false
     self.textview:on_mouse_released(button, x, y)
     return true
   end
@@ -206,10 +211,15 @@
 end
 
 function TextBox:on_mouse_moved(x, y, dx, dy)
+  if self.drag_select then
+    local line, col = self.textview:resolve_screen_position(x, y)
+    self.textview.doc:set_selection(
+      self.drag_select.line, self.drag_select.col, line, col
+    )
+  end
   if TextBox.super.on_mouse_moved(self, x, y, dx, dy) then
     if self.active or core.active_view == self.textview then
       self.textview:on_mouse_moved(x, y, dx, dy)
-      system.set_cursor("ibeam")
     end
     return true
   end
@@ -223,17 +233,18 @@
     self.placeholder_active = false
   end
   self.active = true
-  system.set_cursor("ibeam")
+  core.request_cursor("ibeam")
 end
 
 function TextBox:deactivate()
   self.hover_border = nil
+  self.drag_select = false
   if self:get_text() == "" then
     self:set_text(self.placeholder)
     self.placeholder_active = true
   end
   self.active = false
-  system.set_cursor("arrow")
+  core.request_cursor("arrow")
 end
 
 function TextBox:on_text_input(text)
@@ -253,6 +264,14 @@
 function TextBox:update()
   if not TextBox.super.update(self) then return false end
 
+  if
+    self.drag_select
+    or
+    (self.active and self:mouse_on_top(self.mouse.x, self.mouse.y))
+  then
+    core.request_cursor("ibeam")
+  end
+
   self.textview:update()
   self.size.y = self:get_font():get_height() + (style.padding.y * 2)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lite-xl-widgets-git20220917.6d8c23d/toggle.lua 
new/lite-xl-widgets-git20221023.648c067/toggle.lua
--- old/lite-xl-widgets-git20220917.6d8c23d/toggle.lua  2022-09-18 
03:54:40.000000000 +0200
+++ new/lite-xl-widgets-git20221023.648c067/toggle.lua  2022-10-23 
06:34:26.000000000 +0200
@@ -28,6 +28,8 @@
 function Toggle:new(parent, label, enable)
   Toggle.super.new(self, parent)
 
+  self.type_name = "widget.toggle"
+
   self.enabled = enable or false
   self.label = label or ""
 

++++++ lite-xl-widgets.obsinfo ++++++
--- /var/tmp/diff_new_pack.yKps1o/_old  2022-11-04 17:42:09.915067301 +0100
+++ /var/tmp/diff_new_pack.yKps1o/_new  2022-11-04 17:42:09.919067322 +0100
@@ -1,5 +1,5 @@
 name: lite-xl-widgets
-version: git20220917.6d8c23d
-mtime: 1663466080
-commit: 6d8c23d550d75a01251eafc7296e03b081805c2f
+version: git20221023.648c067
+mtime: 1666499666
+commit: 648c06723180c90194cba39c51e21bc05a707b2b
 

Reply via email to