Lot of things that happened in this. The main change is on the design of the editor (Neovim area renderer) which is more extensible now:
The base class for an editor is EditorBase, this only handles the basic Neovim redraw messages and knows very little about the rendering. A small amount of Qt classes are used (QObject for message sending, QPoint and QRect etc. for convenience)
This is inherited by QtEditorUIBase which knows the UI component is going to be a QWidget so it can do things like handle Qt events, hide/show cursor, and handle most of the commonalities between all QWidget-based UIs. Also handles a great deal of the script-based customization.
Then UIs inherit QtEditorUIBase along with QWidget/QOpenGLWidget/some other inheritor of QWidget and do their own rendering, and leave events and setup to QtEditorUIBase, unless they have custom commands to customize with.
UIs will also create a custom type of PopupMenu and Cmdline which will have custom rendering as well.
Instead of the Window keeping track of Neovim events, it gets sent signals to respond to e.g. change the default colors, change the title bar properties, etc.
Also since each editor instance is attached to an Nvim instance it was relatively simple to allow for more than one editor to be created through :NvuiEditor* commands.
Also added some potential performance improvements, made the popup menu resizable, and made block text supported on the command line.
Lot of things that happened in this. The main change is on the design of the editor (Neovim area renderer) which is more extensible now:
:NvuiEditor*
commands.Also added some potential performance improvements, made the popup menu resizable, and made block text supported on the command line.