summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* drw_text: improve both performance and correctnessGravatar NRK 2022-03-251-28/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this patch makes some non-trivial changes, which significantly improves the performance of drawing large strings as well as fixes any issues regarding the printing of the ellipsis when string gets truncated. * performance: before there were two O(n) loops, one which finds how long we can go without changing font, and the second loop would (incorrectly) truncate the string if it's too big. this patch merges the overflow calculation into the first loop and exits out when overflow is detected. when dumping lots of emojies into dmenu, i see some noticeable startup time improvement: before -> after 460ms -> 360ms input latency when scrolling up/down is also noticeably better and can be tested with the following: for _ in $(seq 20); do cat /dev/urandom | base64 | tr -d '\n' | head -c 1000000 echo done | ./dmenu -l 10 * correctness: the previous version would incorrectly assumed single byte chars and would overwrite them with '.' , this caused a whole bunch of obvious problems, including the ellipsis not getting rendered if then font changed. in addition to exiting out when we detect overflow, this patch also keeps track of the last x-position where the ellipsis would fit. if we detect overflow, we simply make a recursing call to drw_text() at the ellipsis_x position and overwrite what was there. so now the ellipsis will always be printed properly, regardless of weather the font changes or if the string is single byte char or not. the idea of rendering the ellipsis on top incase of overflow was from Bakkeby <bakkeby@gmail.com>, thanks! however the original patch had some issues incorrectly truncating the prompt (-p flag) and cutting off emojies. those have been fixed in here.
* remove false-positive warning for int comparison as boolGravatar Hiltjo Posthuma 2022-03-011-1/+1
| | | | | | Reported by Prathu Baronia <prathu.baronia@praton.me>, patch slightly changed. Thanks!
* bump version to 5.1Gravatar Hiltjo Posthuma 2022-02-112-2/+2
|
* code-style: rm newline (oops)Gravatar Hiltjo Posthuma 2022-02-081-1/+0
|
* revert using strcasestr and use a more optimized portable versionGravatar Hiltjo Posthuma 2022-02-082-2/+21
| | | | | | ... compared to the old cistrstr(). Thanks for the feedback!
* follow-up fix: add -D_GNU_SOURCE for strcasestr for some systemsGravatar Hiltjo Posthuma 2022-02-071-1/+1
|
* improve performance of case-insensitive matchingGravatar Hiltjo Posthuma 2022-02-071-12/+1
|
* Revert "Improve speed of drw_text when provided with large strings"Gravatar Hiltjo Posthuma 2021-08-201-5/+2
| | | | | | | This reverts commit c585e8e498ec6f9c423ab8ea07cf853ee5b05fbe. It causes issues with truncation of characters when the text does not fit and so on. The patch should be reworked and properly tested.
* add support for more keypad keysGravatar Hiltjo Posthuma 2021-08-091-0/+11
| | | | | | The keypad Enter key was already supported. On some keyboard layouts like my laptop the page-up and page-down key is more comfortable to use. This adds a few lines but no complexity.
* Improve speed of drw_text when provided with large stringsGravatar Miles Alan 2021-08-091-2/+5
| | | | | | Calculates len & ew in drw_font_getexts loop by incrementing instead of decrementing; as such avoids proportional increase in time spent in loop based on provided strings size.
* remove always true condition in if statementGravatar Guilherme Janczak 2021-07-251-1/+1
|
* bump version to 5.0Gravatar Hiltjo Posthuma 2020-09-022-2/+2
| | | | ... and bump LICENSE year.
* Fix memory leaks in drwGravatar Hiltjo Posthuma 2020-06-111-0/+1
| | | | | Synced from dwm. Patch by Alex Flierl <shad0w73@freenet.de>, thanks.
* revert IME supportGravatar Hiltjo Posthuma 2019-03-031-12/+3
| | | | | | | dmenu will not handle IME support (st will, atleast for now). revert parts of commit 377bd37e212b1ec4c03a481245603c6560d0be22 this commit also broke input focus.
* improve xopenim error messageGravatar Hiltjo Posthuma 2019-02-121-1/+1
| | | | die() already prints a newline.
* make dmenu_path script executableGravatar Hiltjo Posthuma 2019-02-121-0/+0
| | | | (as dmenu_run is)
* fix crash when XOpenIM returns NULLGravatar Hiltjo Posthuma 2019-02-121-2/+11
| | | | for example when IME variables are set, but the program is not started (yet).
* Close when the embedding window is destroyedGravatar Quentin Rameau 2019-02-042-2/+7
|
* Prepared 4.9 release.Gravatar Anselm R Garbe 2019-02-023-4/+18
|
* dmenu.1: document improved fastgrab behaviour from previous patchGravatar Hiltjo Posthuma 2019-01-271-2/+2
|
* Use slow path if stdin is a ttyGravatar dok 2019-01-271-3/+1
| | | | | If stdin is a tty and dmenu is ran with the fast option then it's impossible to close stdin because the keyboard is already grabbed.
* dmenu_path: always use the cachedirGravatar Quentin Rameau 2018-07-211-6/+6
|
* Makefile: just show the compiler outputGravatar Hiltjo Posthuma 2018-06-021-38/+28
| | | | Don't be fancy and just show the actual output so debugging is simpler.
* Do not strip at link stageGravatar Hiltjo Posthuma 2018-06-021-1/+1
| | | | | Building with debug symbols is worthless unless LDFLAGS are manually adjusted as well.
* code-style for pledge: check the return code -1, not < 0Gravatar Hiltjo Posthuma 2018-05-251-1/+1
| | | | this is the proper idiom
* code-style for pledge(2)Gravatar Hiltjo Posthuma 2018-05-251-6/+5
| | | | feedback from Klemens, thanks
* Pledge on OpenBSDGravatar Hiltjo Posthuma 2018-05-251-0/+9
|
* Use bold for keyboard shortcuts in dmenu.1Gravatar David Demelier 2018-05-121-28/+28
| | | | | Like dwm, use the same syntax for all keyboard shortcuts for consistency.
* Fix cursor drawn position with wide glyphsGravatar Quentin Rameau 2018-04-221-1/+1
|
* Makefile: bikesheddingly replace ${} with $()Gravatar Quentin Rameau 2018-04-222-43/+43
|
* Handle IME inputGravatar Quentin Rameau 2018-04-221-1/+4
| | | | Thanks to nzl <uruabi@gmail.com> for the patch!
* Fix handling of input stringsGravatar Hiltjo Posthuma 2018-04-221-14/+21
|
* Update LICENSEGravatar Quentin Rameau 2018-03-151-4/+6
| | | | | Only "meaningful" commits and contributors who made changes over the years have been added.
* bump version to 4.8Gravatar Hiltjo Posthuma 2018-03-141-1/+1
|
* add key bindings for moving to the word start or endGravatar Quentin Rameau 2018-03-132-0/+46
| | | | Mod1+b/^Left and Mod1+f/^Right
* Fix regression in 84a1bc5Gravatar Hiltjo Posthuma 2018-01-041-1/+2
| | | | | | Reported by Jochen Sprickerhof, thanks! Applied patch with minor change (only initialize `i` for XINERAMA).
* Instantiate j var outside #ifdef XINEMARA directive because it is used in ↵Gravatar Vincent Carluer 2018-01-041-3/+2
| | | | loop outside directive
* drw: drw_scm_create: use Clr typeGravatar Hiltjo Posthuma 2017-11-031-1/+1
| | | | in this context XftColor is a too low-level type.
* fix a possible free of a uninitialize variable in paste()Gravatar Hiltjo Posthuma 2017-11-031-4/+6
|
* init colors using SchemeLastGravatar Hiltjo Posthuma 2017-11-031-3/+2
| | | | this makes it slightly easier to add colors to schemes.
* Set class name on menu windowGravatar Omar Sandoval 2017-11-031-0/+2
| | | | | | WM_CLASS is a standard ICCCM property which is used to identify windows. Window managers and compositors use it to allow per-application configurable behavior.
* release 4.7Gravatar Hiltjo Posthuma 2017-05-021-1/+1
|
* Revert "fix input text matching"Gravatar Andrew Gregory 2016-12-111-1/+1
| | | | | | | This reverts commit 09d0a36e0370f7ca9bdb171bf93c5ac3131c5a92. Using strncmp with the length of the user input turns it into a prefix match rather than an exact match as it's supposed to be.
* Xinerama: correct variable declarations in preprocessor conditionalGravatar Thomas Gardner 2016-11-251-5/+6
|
* die() on calloc failureGravatar Hiltjo Posthuma 2016-11-051-1/+1
| | | | thanks Markus Teich and David!
* add embedding support with -w optionGravatar Quentin Rameau 2016-10-142-12/+58
|
* dmenu.1: group single optionsGravatar Quentin Rameau 2016-10-142-6/+3
|
* dmenu.1: fix -l optionGravatar Quentin Rameau 2016-10-141-1/+1
|
* die() consistency: always add newlineGravatar Hiltjo Posthuma 2016-08-123-7/+9
|
* fix crash if negative monitor (< -1) was passedGravatar Hiltjo Posthuma 2016-07-261-2/+2
| | | | for example: dmenu -m '-9001'