pidgin/pidgin

Fix the infinite resizing freeze
release-2.x.y
2022-04-15, Belgin Știrbu
0079467afee4
Fix the infinite resizing freeze

This appears related to libpango somehow, as in Debian
Bullseye, libpango splits URLs with dashes at the end,
but in Debian Bookworm, the URLs are not split with dashes
at the end, and the bug does not appear to be triggered
in Bookworm.

This patch makes the assumption that the gtkimhtml widgets
stored in a PidginConversation normally resize in an
alternating manner. However, when the bug is triggered,
only the "entry" gtkimhtml member of PidginConversation
resizes, so we allow "entry" to resize only up to 3 times
in a row.

Testing Done:
Compiled and tested on several desktop environments on a few
GNU/Linux distros by pasting the link mentioned
here https://issues.imfreedom.org/issue/PIDGIN-17413 moving
the cursor at the beginning of the buffer, and holding
the spacebar pressed.

Bugs closed: PIDGIN-16753, PIDGIN-16999, PIDGIN-17287, PIDGIN-17413, PIDGIN-17430, PIDGIN-17568, PIDGIN-17602

Reviewed at https://reviews.imfreedom.org/r/1342/
/* This file contains macros that wrap calls to the purple dbus module.
These macros call the appropriate functions if the build includes
dbus support and do nothing otherwise. See "dbus-server.h" for
documentation. */
#ifndef _PURPLE_DBUS_MAYBE_H_
#define _PURPLE_DBUS_MAYBE_H_
#ifdef HAVE_DBUS
#ifndef DBUS_API_SUBJECT_TO_CHANGE
#define DBUS_API_SUBJECT_TO_CHANGE
#endif
#include "dbus-server.h"
/* this provides a type check */
#define PURPLE_DBUS_REGISTER_POINTER(ptr, type) { \
type *typed_ptr = ptr; \
purple_dbus_register_pointer(typed_ptr, PURPLE_DBUS_TYPE(type)); \
}
#define PURPLE_DBUS_UNREGISTER_POINTER(ptr) purple_dbus_unregister_pointer(ptr)
#else /* !HAVE_DBUS */
#define PURPLE_DBUS_REGISTER_POINTER(ptr, type) { \
if (ptr) {} \
}
#define PURPLE_DBUS_UNREGISTER_POINTER(ptr)
#define DBUS_EXPORT
#endif /* HAVE_DBUS */
#endif