When focus_follows_mouse is enabled, returning to a desktop/space fired an
enter event that switched the active window to whichever one was under the
cursor, even though the mouse had not crossed a window boundary.
Distinguish genuine mouse motion into a window from a window reappearing
under a stationary cursor by checking, in cursor_enter_callback, whether the
cursor position actually changed. focus_follows_mouse now switches focus only
when the cursor moved, so motion into a window still switches focus while a
stationary reappearance does not.
Currently it was a bit ambiguous some places assuming inclusive some
not. Also there seemed to be one left over pixel at the bottom/right
edges of the calculated regions compared to viewport size.This fixes
that. Hopefully doesnt break anything else, we will see.
Frees up two bytes in GPUCell. Doesn't require a minimum texture row
size. Makes a bunch of code faster. Index uses 31 bits which gives us
2,147,483,647 aka ~ 2 billion sprites.
We now buffer the key events until the kitten tells us it is ready.
Without this the key presses are delivered to the underlying window
as the kitten's overlay window was not being focused until the kitten
set the ready message.
Fixes#7089
My "./dev.sh build" failed with
Compiling kitty/screen.c ...
gcc -MMD -DNDEBUG -DPRIMARY_VERSION=4000 -DSECONDARY_VERSION=37 -DXT_VERSION="0.37.0" -I/home/johannes/git/kitty/dependencies/linux-amd64/include -Wextra -Wfloat-conversion -Wno-missing-field-initializers -Wall -Wstrict-prototypes -std=c11 -pedantic-errors -Werror -O3 -fwrapv -fstack-protector-strong -pipe -fvisibility=hidden -fno-plt -fPIC -D_FORTIFY_SOURCE=2 -flto -fcf-protection=full -march=native -mtune=native -pthread -I/home/johannes/git/kitty/dependencies/linux-amd64/include/libpng16 -I/home/johannes/git/kitty/dependencies/linux-amd64/include -I/home/johannes/git/kitty/dependencies/linux-amd64/include -I/home/johannes/git/kitty/dependencies/linux-amd64/include -I/home/johannes/git/kitty/dependencies/linux-amd64/include/freetype2 -I/home/johannes/git/kitty/dependencies/linux-amd64/include/libpng16 -I/usr/include/uuid -I/home/johannes/git/kitty/dependencies/linux-amd64/include/harfbuzz -I/home/johannes/git/kitty/dependencies/linux-amd64/include/freetype2 -I/home/johannes/git/kitty/dependencies/linux-amd64/include/libpng16 -I/home/johannes/git/kitty/dependencies/linux-amd64/include -I/home/johannes/git/kitty/dependencies/linux-amd64/include/python3.12 -c kitty/screen.c -o build/fast_data_types-kitty-screen.c.o
In file included from /home/johannes/git/kitty/dependencies/linux-amd64/include/python3.12/Python.h:12,
from kitty/data-types.h:11,
from kitty/text-cache.h:10,
from kitty/line.h:10,
from kitty/history.h:10,
from kitty/lineops.h:9,
from kitty/fonts.h:9,
from kitty/screen.c:19:
/home/johannes/git/kitty/dependencies/linux-amd64/include/python3.12/pyconfig.h:1875:9: error: "_POSIX_C_SOURCE" redefined
1875 | #define _POSIX_C_SOURCE 200809L
| ^~~~~~~~~~~~~~~
In file included from /usr/include/bits/libc-header-start.h:33,
from /usr/include/stdint.h:26,
from /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/stdint.h:9,
from kitty/charsets.h:9,
from kitty/screen.c:17:
/usr/include/features.h:329:10: note: this is the location of the previous definition
329 | # define _POSIX_C_SOURCE 199506L
| ^~~~~~~~~~~~~~~
The following build command failed: /home/johannes/git/kitty/dependencies/linux-amd64/bin/python setup.py develop
exit status 1
[Python docs](https://docs.python.org/3/c-api/intro.html) say:
> Since Python may define some pre-processor definitions which affect
> the standard headers on some systems, you must include Python.h
> before any standard headers are included.
Make it so. Since data-types.h is already included first in a lot of
*.c and *.h files, let's use that one.
Also fix the includes in launcher.
This is similar to commit 8e84b2145 (Re-order includes for
"_POSIX_C_SOURCE", 2018-06-02).
Also add an explicit error for this case, to make the resolution more
obvious? Here's the error when I try to include <stdlib.h> in screen.c:
In file included from kitty/screen.c:14:
kitty/data-types.h:11:2: error: #error "Must include \"data-types.h\" before any system headers"
11 | #error "Must include \"data-types.h\" before any system headers"
| ^~~~~
In file included from /home/johannes/git/kitty/dependencies/linux-amd64/include/python3.12/Python.h:12,
from kitty/data-types.h:14:
/home/johannes/git/kitty/dependencies/linux-amd64/include/python3.12/pyconfig.h:1875:9: error: "_POSIX_C_SOURCE" redefined
1875 | #define _POSIX_C_SOURCE 200809L
| ^~~~~~~~~~~~~~~
In file included from /usr/include/bits/libc-header-start.h:33,
from /usr/include/stdlib.h:26,
from kitty/screen.c:13:
/usr/include/features.h:329:10: note: this is the location of the previous definition
329 | # define _POSIX_C_SOURCE 199506L
| ^~~~~~~~~~~~~~~
The following build command failed: /home/johannes/git/kitty/dependencies/linux-amd64/bin/python setup.py develop
exit status 1