Commit graph

45 commits

Author SHA1 Message Date
adnano
1f221a73cf Fix destruction of pool buffers 2024-05-02 18:45:49 -04:00
adnano
6284eea24b Separate menu state from Wayland state 2024-05-02 17:03:07 -04:00
adnano
cf6f5b9d06 Support xdg_activation_v1 protocol 2024-04-07 08:51:57 -04:00
adnano
f7e6e0b4bf Free memory associated with the menu on exit 2024-03-02 11:31:13 -05:00
adnano
ff4d1f8f8e Fix output selection with -o flag 2024-03-01 20:54:12 -05:00
adnano
9f6a36d73f Drop unnecessary TODO comment 2024-02-27 11:40:34 -05:00
adnano
e8782db9c8 Move menu and rendering logic into separate files 2024-02-27 11:23:12 -05:00
adnano
8bcad262a4 Simplify movewordedge 2024-02-27 08:07:16 -05:00
Amin Bandali
c37c3fe38e Add dmenu's Meta (Alt) keybindings
This change adds dmenu's mixture of Emacs+vim-style Meta keybindings.

Also 'Page_Up' and 'Page_Down' were deprecated in upstream xkbcommon,
so replace them with the new 'Prior' and 'Next' names respectively.
2024-02-27 07:54:20 -05:00
Amin Bandali
04dfc06379 Add token matching like dmenu
This change ports dmenu's token matching of space-separated input to
wmenu to match the behaviour of dmenu, with a slightly more verbose
but hopefully more readable implementation.
2024-02-27 07:51:52 -05:00
adnano
96b3c0ef26 Add more rendering functions 2024-02-26 16:44:23 -05:00
adnano
f9167689dc Check if selection is not null before dereferencing 2024-02-26 16:31:41 -05:00
adnano
c6025455ec Add functions to render pages of items 2024-02-26 16:31:04 -05:00
adnano
628a5d82ee Refactor rendering code 2024-02-26 16:14:04 -05:00
adnano
da25fbfb27 Don't set selection if there are no pages 2024-02-26 15:05:37 -05:00
adnano
7284f5958b Don't match items in insert 2024-02-26 15:03:42 -05:00
adnano
48f4a1d2ed Add comments to menu 2024-02-26 14:50:09 -05:00
adnano
ce43ccfb75 Add some comments to item and page 2024-02-26 14:42:11 -05:00
adnano
ee43ebb783 Rename menu_state to menu 2024-02-26 14:40:18 -05:00
adnano
086211c83c Don't return -1 from render_horizontal_item 2024-02-26 14:29:53 -05:00
adnano
e23e215471 Rename menu_item to item 2024-02-26 14:14:11 -05:00
adnano
deab01baf1 Mark functions as static 2024-02-26 14:08:18 -05:00
adnano
9edefe1344 Rename item_group to page 2024-02-26 14:06:42 -05:00
adnano
07ac84239e Refactor item paging logic
Determine which items go on which page ahead of time to avoid
calculating it every time. This also fixes an issue where paging from
the back doesn't give the same results as paging from the front.
2024-02-26 12:40:11 -05:00
adnano
d23a2c563a Simplify match scrolling 2024-02-26 10:47:35 -05:00
adnano
906b55019e Keep track of end of match list 2024-02-26 10:43:52 -05:00
adnano
542c307ef2 Ignore unrecognized Ctrl keybindings
Currently, unrecognized Ctrl keybindings are treated as if Ctrl wasn't
pressed. For example, Ctrl+q results in q being typed. Instead, ignore
these keypresses.
2024-02-26 06:59:09 -05:00
Amin Bandali
cb884725f6 Update keybindings to more closely follow dmenu
There's no need to distinguish between vertical and horizontal mode
for the directional keys.  By not doing so we match dmenu's behaviour
and also reduce code duplication.
2024-02-26 06:31:38 -05:00
adnano
69a7078e01 Check the return value of pipe
On some systems, pipe is declared with the attribute warn_unused_result,
so we have to check the return value.
2023-12-28 11:42:50 -05:00
adnano
d77ff0e64d Fix various type issues 2023-12-28 11:26:38 -05:00
Piotr Stefański
e120b9156e Fix build failure when compiling in release
Compiling with --buildtype=release fails with message:

../main.c:935:17: error: argument 2 null where non-null expected [-Werror=nonnull]
  935 |                 memcpy(state->text + state->cursor, s, n);

GCC only produces this error with optimizations enabled. Looking at
the build output I assume this happens because it tries to inline the
function.
2023-10-31 15:12:41 -04:00
adnano
adf5cda6e1 Implement clipboard paste support
References: https://todo.sr.ht/~adnano/wmenu/4
2023-07-28 03:01:34 -04:00
adnano
554f3e7445 pango: Remove unused format specifier 2023-07-15 18:51:45 -04:00
Mykyta Holubakha
ccca01d3cd Render after reading stdin
This allows seeing option list without doing any input, like in original dmenu.
2023-07-15 18:35:17 -04:00
Mykyta Holubakha
62e9584977 Drop render_frame on surface_enter 2023-07-15 18:35:15 -04:00
Nikita Ivanov
9fb3ffa522 Fix crash when some line contains % 2023-06-05 09:33:20 -04:00
adnano
7c1e28b201 Fix potential buffer overflow
Calling strncpy where the size of the string to copy is equal to the
size of the destination can potentially lead to a buffer overflow. To
fix this, copy only what is needed with memcpy, and explicitly terminate
the string with a null character.
2023-02-26 07:50:54 -05:00
adnano
5ed249e3f3 Fix buffer size not divisible by scale 2023-02-01 09:37:02 -05:00
adnano
272540c7fb Drop xdg-output-unstable-v1
Closes: https://todo.sr.ht/~adnano/wmenu/2
2022-12-02 12:00:28 -05:00
adnano
38b4bae4bd Fix move to end of word 2022-12-02 11:35:30 -05:00
adnano
972277a5e0 Support basic Emacs-style line-editing bindings
Implements: https://todo.sr.ht/~adnano/wmenu/3
2022-12-02 10:09:32 -05:00
adnano
8cc6a22737 Support number pad keys 2022-12-02 09:29:15 -05:00
adnano
1f9b23e412 Adjust line height 2022-04-17 13:27:28 -04:00
adnano
decd2452de Implement vertical list support
Implements: https://todo.sr.ht/~adnano/wmenu/1
2022-04-17 13:15:09 -04:00
adnano
2f1c189d53 Initial commit 2022-01-16 08:32:58 -05:00