Recent submissions

Comment · 6 months ago
Fixed it. Thanks for reporting.
Comment · 6 months ago
I have been able to install MiniWord under Windows. It is a bit more challenging.

You should use cairocffi instead of pycairo:

  pip install cairocffi
You also need to install the Cairo DLL. The easiest way is to install the full GTK3 runtime from:
https://github.com/tschoonj/gtk-for-windows-runtime-environm...

You must add the directory containing libcairo-2.dll to your PATH environment variable. In my case, this is:

  C:\Program Files\GTK3-Runtime Win64\bin
Note that MiniWord is not yet optimised for Windows. While it mostly works, the rendering quality is lower and startup is slow.
Comment · 6 months ago
Comment · 6 months ago
When you want to develop cross platform apps which use the native widgets, there are not so many options. The two big players are qt and wx.
Comment · 6 months ago
Yes, I can see what you mean: There are hand coded colors together with system colors. With the dark mode this gives white text on white background for the side panel. Thanks for mentioning.
Comment · 6 months ago
Cursor positioning is simple. The layout is a tree of nested box. Each box knows the x,y-position of its children. There is also an index dimension which numbers possible cursor positions. A box lies from i1 to i2 in index space. You just iterate over all boxes holding cursor position i to find the cursor coordinate x,y. Selection is simple as well. It is defined by a start index s1 and end index s2. Some objects have a special selection, e.g. tables where you select a rectangular range of table cells.
Comment · 6 months ago
Ropes are for strings. In a word processor you need text with formatting, and structures as tables, images and math.
Comment · 6 months ago
My mistake. Now it works (on linux).
Comment · 6 months ago
My apologies. I added the missing file.
Comment · 7 months ago
Comment · 7 months ago
You're right that hidden structure is often the cause of strange effects — but Group is not a document element in that sense. It's invisible at the index level too: when you iterate over the document by index, you pass through Groups transparently. A Group is purely a tree node for balancing purposes — it has no position in the document model that a cursor could land on, no semantic meaning, and no user-visible boundary. It has no effect the user can see or feel. Think of it like the internal nodes of a B-Tree: they exist to keep the structure efficient, but you never 'see' them when you traverse the data."

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton