Jabber Developer f636090fd9 fix(window): preserve scroll offset on page_down and refactor
When paging down beyond the visible chat buffer, the scroll position could
jump unexpectedly. This occurred because the visual distance from the bottom
(e.g. 6 lines until the last message) wasn’t preserved after loading new
messages from the DB.

This patch fixes that by capturing the visual offset (`current_offset`) before
the DB fetch and reapplying it after, based on the y-position of the final
buffer entry. This ensures consistent and smooth scroll transitions, even
as message heights vary.

In addition to fixing the visual glitch, this commit introduces a targeted
performance optimization: once the bottom of the chat has been reached
(`WIN_SCROLL_REACHED_BOTTOM`), we skip expensive operations entirely —
including datetime lookups and entry formatting — during further page_down
events. This reduces performance stalls
during rapid paging (e.g. holding the Page Down key at the bottom of the scrolling area).

This update also adapts to the recent change in `chatwin_db_history()`,
which now returns a `db_history_result_t` instead of `gboolean`, allowing
correct differentiation between an empty result and an actual DB error.

Together, these changes:
- Fix a scroll-jump bug in `page_down`
- Improve performance and responsiveness during rapid navigation
- Align with improved DB result handling
2025-07-02 19:27:15 +02:00
2021-12-24 13:49:07 +01:00
2025-06-20 18:20:47 +00:00
2025-03-27 20:27:09 +01:00
2016-03-09 12:55:57 +01:00
2025-03-11 12:15:09 +01:00
2025-06-20 18:20:47 +00:00
2022-02-01 15:01:28 +01:00
2025-01-28 16:43:13 +01:00
2025-03-27 20:06:38 +01:00
2025-03-27 20:27:09 +01:00
2025-06-20 18:20:47 +00:00
2021-08-26 00:30:55 +00:00
2025-03-11 12:15:09 +01:00
2025-04-16 11:06:49 +02:00
2025-03-11 12:15:09 +01:00
2025-03-11 12:15:09 +01:00
2019-04-24 01:08:38 +02:00
2025-03-11 12:15:09 +01:00
2025-04-10 07:23:35 +02:00
2025-06-20 18:20:47 +00:00
2025-06-20 18:20:47 +00:00
2020-05-21 09:16:18 +02:00

Profanity

Build Status GitHub contributors Packaging status

Profanity is a console based XMPP client inspired by Irssi.

alt tag

See the User Guide for information on installing and using Profanity.

Project

This project is about freedom, privacy and choice. We want to enable people to chat with one another in a safe way. Thus supporting encryption (OTR, PGP, OMEMO, OX) and being decentralized, meaning everyone can run their own server. We believe XMPP is a great proven protocol with an excellent community serving this purpose well.

Installation

Our user guide contains an install section and a section for building from source yourself.

How to contribute

We tried to sum things up on our helpout page. Additionally you can check out our blog where we have articles like: How to get a backtrace and Contributing a Patch via GitHub. For more technical details check out our CONTRIBUTING.md file.

Getting help

To get help, first read our User Guide then check out the FAQ. If you are having a problem then first search the issue tracker. If you don't find anything there either come to our MUC or create a new issue depending on what your problem is.

Website

Repo: https://git.jabber.space/devs/profanity

Plugins

Plugins repository: https://github.com/profanity-im/profanity-plugins

Description
Mirror of the CProof repository. Used for backward compatibility. Please use https://git.jabber.space/devs/cproof for Issues, Pull Requests and any other interactions.
Readme 38 MiB
Languages
C 95.2%
Python 1.7%
Makefile 0.9%
M4 0.8%
Shell 0.7%
Other 0.6%