1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-05 22:02:01 -07:00

Fix PGTK scrollbars

* src/gtkutil.c (free_gc_handle_callback): New.
(xg_finish_scroll_bar_creation): Use it instead of free_glib_gc_handle.
* src/pgtkterm.c (xg_scroll_callback, xg_end_scroll_callback): Adapt to
gc_handles.
This commit is contained in:
Helmut Eller 2025-11-02 17:00:30 +01:00
parent 45d0c389ec
commit e4f2d89487
2 changed files with 17 additions and 25 deletions

View file

@ -154,6 +154,13 @@ free_glib_gc_handle (gpointer data, GClosure *closure)
free_gc_handle (data);
}
static void
free_gc_handle_callback (GtkWidget *widget, gpointer user_data)
{
gc_handle gch = user_data;
free_gc_handle (gch);
}
#ifdef HAVE_GTK3
static void
emacs_menu_bar_init (EmacsMenuBar *menu_bar)
@ -4597,19 +4604,12 @@ xg_finish_scroll_bar_creation (struct frame *f,
#endif
gc_handle bar_gch = gc_handle_for_pvec (&bar->header);
g_signal_connect (G_OBJECT (wscroll),
"change-value",
scroll_callback,
bar_gch);
g_signal_connect (G_OBJECT (wscroll),
"button-release-event",
end_callback,
bar_gch);
g_signal_connect (G_OBJECT (wscroll),
"destroy",
G_CALLBACK (free_glib_gc_handle),
(gpointer) bar_gch);
g_signal_connect (G_OBJECT (wscroll), "change-value",
scroll_callback, bar_gch);
g_signal_connect (G_OBJECT (wscroll), "button-release-event",
end_callback, bar_gch);
g_signal_connect (G_OBJECT (wscroll), "destroy",
G_CALLBACK (free_gc_handle_callback), bar_gch);
/* The scroll bar widget does not draw on a window of its own. Instead
it draws on the parent window, in this case the edit widget. So

View file

@ -3992,12 +3992,8 @@ xg_scroll_callback (GtkRange * range,
GtkScrollType scroll, gdouble value, gpointer user_data)
{
int whole = 0, portion = 0;
#ifdef HAVE_MPS
struct scroll_bar **bar_cell = user_data;
struct scroll_bar *bar = *bar_cell;
#else
struct scroll_bar *bar = user_data;
#endif
gc_handle bar_gch = user_data;
struct scroll_bar *bar = XSCROLL_BAR (gc_handle_value (bar_gch));
enum scroll_bar_part part = scroll_bar_nowhere;
GtkAdjustment *adj = GTK_ADJUSTMENT (gtk_range_get_adjustment (range));
@ -4063,12 +4059,8 @@ static gboolean
xg_end_scroll_callback (GtkWidget *widget,
GdkEventButton *event, gpointer user_data)
{
#ifdef HAVE_MPS
struct scroll_bar **bar_cell = user_data;
struct scroll_bar *bar = *bar_cell;
#else
struct scroll_bar *bar = user_data;
#endif
gc_handle bar_gch = user_data;
struct scroll_bar *bar = XSCROLL_BAR (gc_handle_value (bar_gch));
bar->dragging = -1;
if (WINDOWP (window_being_scrolled))
{