Age | Commit message (Collapse) | Author |
|
Cursor position was miscalculated because WrapText works a bit differently with maxWidth==0.
Selection was not always updated as intended.
|
|
|
|
Fixed update after undo. Line wrap long destination URLs. Don't open a new upload dialog if one is already open.
|
|
Tweak that lets a single-line editor (URL field) keep its first line visible when unfocused.
|
|
|
|
Only process mouse wheel events on the root over which the mouse is currently.
|
|
|
|
|
|
|
|
|
|
User preference for line break / accept behavior in input fields. Still needs to be added to the Preferences dialog.
|
|
|
|
At a low level when measuring/drawing text, replace all characters with an override character.
|
|
|
|
|
|
Cursor movement and pasting.
|
|
|
|
|
|
Finding cursor position via coordinates. Handling the mark. Visual wrapped lines vs. content lines. Vertical scrolling inside the visual range.
|
|
`InputWidget` needs to be better at handling multiple lines. The previous implementation assumed that the content was short enough to be fully redrawn each frame, which is not a great idea when you have thousands of lines.
|
|
`run_Font_` was moving the Y cursor position twice for each line break.
Checking for the HarfBuzz UNSAFE_TO_BREAK flag leads to some unexpected behavior near edges of words.
The old `tryAdvanceNoWrap` method should return the maximum horizontal advance of the text, and not the cursor position's advance.
`draw_WrapText` used the wrong foreground color.
`TextBuf` now uses WrapText to do all the measuring and drawing, making things much simpler.
|
|
Use advance and not bounds.
|
|
The distinction between measure_Text and advance_Text was not very clear. Now there are only measure_Text functions that return both the bounds and the cursor position advancement, and the appropriate metrics are used by the caller.
|
|
Internally, all URIs should be converted to a canonical form so that they can be compared against each other.
The canonical form is an IRI with spaces and reserved characters percent-encoded.
|
|
|
|
Also fixing glitch with search input field where pressing Return would insert newline.
|
|
# Conflicts:
# src/gmdocument.c
# src/ui/documentwidget.c
# src/ui/inputwidget.h
|
|
The text renderer has problems with composites so normalizing the text (using Unicode normalization form C) yields better results for now.
|
|
|
|
Only unlimited-length input should allow line breaks with the Return key.
|
|
Heights of InputWidget vs. LabelWidget. The default sizes should be equal, e.g., so the navbar elements align properly.
Don't set the input focus automatically when opening a dialog, since the keyboard may cover much of the UI.
|
|
Heights of InputWidget vs. LabelWidget. The default sizes should be equal, e.g., so the navbar elements align properly.
Don't set the input focus automatically when opening a dialog, since the keyboard may cover much of the UI.
|
|
# Conflicts:
# src/ui/documentwidget.c
# src/ui/inputwidget.c
|
|
Use the mobile layout on tablets as well.
|
|
To avoid accidentally submitting queries, use the software keyboard Return key for inserting newlines.
|
|
|
|
Several regressions occurred when the split view mode was implemented.
|
|
|
|
Up/down movement sometimes ended up in the wrong cursor position.
Now the nearest overflow-scrollable parent scrolls to keep the cursor visible.
|
|
Improved TextBuf to handle word/bound-wrapped content.
|
|
|
|
|
|
Enforce the maximum length of 1024 bytes for Gemini URLs. The input query prompt shows how many bytes are remaining.
|
|
Use the Return key symbol consistently, also in the Search Query indicator. The input dialog "Send" label now no longer needs the "⇒" icon.
|
|
The navbar layout cannot accommodate more than one line of text, but allow the editor to expand while writing text.
|
|
|
|
|
|
Various refactorings and fixes to handle root-global and window-global state, root-specific palettes, and proper coordinate system changes (e.g., when opening menus).
UI events are posted and handled in the context of a specific root.
|
|
Most actions should occur in the context of the current UI root.
|
|
|