--- a/pidgin/pidgindebug.c Mon Sep 05 20:14:00 2022 -0500
+++ b/pidgin/pidgindebug.c Mon Sep 05 20:22:34 2022 -0500
@@ -42,7 +42,6 @@
struct _PidginDebugWindow {
@@ -236,8 +235,9 @@
GtkTextIter match_start, match_end;
initial_position = gtk_text_iter_get_offset(start);
@@ -320,8 +320,9 @@
PidginDebugWindow *win = (PidginDebugWindow *)data;
gboolean active = GPOINTER_TO_INT(val), current;
current = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(win->filter));
@@ -374,8 +375,7 @@
- g_regex_unref(win->regex);
+ g_clear_pointer(&win->regex, g_regex_unref); win->regex = g_regex_new(text, G_REGEX_CASELESS|G_REGEX_JAVASCRIPT_COMPAT, 0, NULL);
@@ -453,8 +453,9 @@
- if (level != gtk_combo_box_get_active(GTK_COMBO_BOX(win->filterlevel)))
- gtk_combo_box_set_active(GTK_COMBO_BOX(win->filterlevel), level);
+ if (level != gtk_drop_down_get_selected(GTK_DROP_DOWN(win->filterlevel))) { + gtk_drop_down_set_selected(GTK_DROP_DOWN(win->filterlevel), level); scroll = view_near_bottom(win);
for (i = 0; i <= PURPLE_DEBUG_FATAL; i++) {
@@ -478,10 +479,12 @@
-filter_level_changed_cb(GtkWidget *combo, gpointer null)
+filter_level_changed_cb(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec) + GtkDropDown *dropdown = GTK_DROP_DOWN(obj); purple_prefs_set_int(PIDGIN_PREFS_ROOT "/debug/filterlevel",
- gtk_combo_box_get_active(GTK_COMBO_BOX(combo)));
+ gtk_drop_down_get_selected(dropdown)); @@ -523,8 +526,6 @@
gtk_widget_class_bind_template_child(
- widget_class, PidginDebugWindow, toolbar);
- gtk_widget_class_bind_template_child(
widget_class, PidginDebugWindow, textview);
gtk_widget_class_bind_template_child(
widget_class, PidginDebugWindow, buffer);
@@ -603,43 +604,40 @@
handle = pidgin_debug_get_handle();
- /* Setup our top button bar thingie. */
- if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/toolbar")) {
- /* we purposely disable the toggle button here in case
- * /purple/gtk/debug/expression has an empty string. If it does not have
- * an empty string, the change signal will get called and make the
- * toggle button sensitive.
- gtk_widget_set_sensitive(win->filter, FALSE);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(win->filter),
- purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/filter"));
- purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/filter",
- regex_pref_filter_cb, win);
+ /* we purposely disable the toggle button here in case + * /purple/gtk/debug/expression has an empty string. If it does not have + * an empty string, the change signal will get called and make the + * toggle button sensitive. + gtk_widget_set_sensitive(win->filter, FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(win->filter), + purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/filter")); + purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/filter", + regex_pref_filter_cb, win);
- gtk_editable_set_text(GTK_EDITABLE(win->expression),
- purple_prefs_get_string(PIDGIN_PREFS_ROOT "/debug/regex"));
+ gtk_editable_set_text(GTK_EDITABLE(win->expression), + purple_prefs_get_string(PIDGIN_PREFS_ROOT "/debug/regex")); - /* connect the rest of our pref callbacks */
- win->invert = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/invert");
- purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/invert",
- regex_pref_invert_cb, win);
+ /* connect the rest of our pref callbacks */ + win->invert = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/invert"); + purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/invert", + regex_pref_invert_cb, win); - win->highlight = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/highlight");
- purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/highlight",
- regex_pref_highlight_cb, win);
+ win->highlight = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/highlight"); + purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/highlight", + regex_pref_highlight_cb, win); - gtk_combo_box_set_active(GTK_COMBO_BOX(win->filterlevel),
- purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/filterlevel"));
- purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/filterlevel",
- filter_level_pref_changed, win);
+ gtk_drop_down_set_selected(GTK_DROP_DOWN(win->filterlevel), + purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/filterlevel")); - gtk_check_button_set_active(GTK_CHECK_BUTTON(win->popover_invert),
- gtk_check_button_set_active(GTK_CHECK_BUTTON(win->popover_highlight),
+ purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/filterlevel", + filter_level_pref_changed, win); + gtk_check_button_set_active(GTK_CHECK_BUTTON(win->popover_invert), + gtk_check_button_set_active(GTK_CHECK_BUTTON(win->popover_highlight), /* The *start* and *end* marks bound the beginning and end of an
insertion, used for filtering. The *end* mark is also used for
@@ -887,7 +885,6 @@
purple_prefs_add_int(PIDGIN_PREFS_ROOT "/debug/filterlevel",
- purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/debug/toolbar", TRUE);
purple_prefs_add_int(PIDGIN_PREFS_ROOT "/debug/width", 450);
purple_prefs_add_int(PIDGIN_PREFS_ROOT "/debug/height", 250);
--- a/pidgin/resources/Debug/debug.ui Mon Sep 05 20:14:00 2022 -0500
+++ b/pidgin/resources/Debug/debug.ui Mon Sep 05 20:22:34 2022 -0500
@@ -66,68 +66,69 @@
<!-- interface-name Pidgin -->
<!-- interface-description Internet Messenger -->
<!-- interface-copyright Pidgin Developers <devel@pidgin.im> -->
- <object class="GtkTextTagTable" id="message-format">
- <object class="GtkTextTag" id="tags.level[0]">
- <property name="foreground">rgb(0,0,0)</property>
- <object class="GtkTextTag" id="tags.level[1]">
- <property name="foreground">rgb(102,102,102)</property>
- <object class="GtkTextTag" id="tags.level[2]">
- <property name="foreground">rgb(0,0,0)</property>
- <object class="GtkTextTag" id="tags.level[3]">
- <property name="foreground">rgb(102,0,0)</property>
- <object class="GtkTextTag" id="tags.level[4]">
- <property name="foreground">rgb(255,0,0)</property>
- <object class="GtkTextTag" id="tags.level[5]">
- <property name="foreground">rgb(255,0,0)</property>
- <property name="weight">700</property>
+ <object class="GtkTextBuffer" id="buffer"> + <property name="tag-table"> + <object class="GtkTextTagTable"> + <object class="GtkTextTag" id="tags.level[0]"> + <property name="foreground">rgb(0,0,0)</property> + <object class="GtkTextTag" id="tags.level[1]"> + <property name="foreground">rgb(102,102,102)</property> + <object class="GtkTextTag" id="tags.level[2]"> + <property name="foreground">rgb(0,0,0)</property> + <object class="GtkTextTag" id="tags.level[3]"> + <property name="foreground">rgb(102,0,0)</property> + <object class="GtkTextTag" id="tags.level[4]"> + <property name="foreground">rgb(255,0,0)</property> + <object class="GtkTextTag" id="tags.level[5]"> + <property name="foreground">rgb(255,0,0)</property> + <property name="weight">700</property> + <object class="GtkTextTag" id="tags.category"> + <property name="weight">700</property> + <object class="GtkTextTag" id="tags.filtered_invisible"> + <property name="invisible">1</property> + <object class="GtkTextTag" id="tags.filtered_visible"> + <property name="invisible">0</property> + <property name="invisible-set">1</property> + <object class="GtkTextTag" id="tags.match"> + <property name="background">rgb(255,175,175)</property> + <property name="weight">700</property> + <object class="GtkTextTag" id="tags.paused"> + <property name="invisible">1</property>
- <object class="GtkTextTag" id="tags.category">
- <property name="weight">700</property>
- <object class="GtkTextTag" id="tags.filtered_invisible">
- <property name="invisible">1</property>
- <object class="GtkTextTag" id="tags.filtered_visible">
- <property name="invisible">0</property>
- <property name="invisible-set">1</property>
- <object class="GtkTextTag" id="tags.match">
- <property name="background">rgb(255,175,175)</property>
- <property name="weight">700</property>
- <object class="GtkTextTag" id="tags.paused">
- <property name="invisible">1</property>
- <object class="GtkTextBuffer" id="buffer">
- <property name="tag-table">message-format</property>
<template class="PidginDebugWindow" parent="GtkWindow">
<property name="title" translatable="1">Debug Window</property>
@@ -137,12 +138,10 @@
<property name="orientation">vertical</property>
- <object class="GtkBox" id="toolbar">
- <class name="toolbar"/>
+ <object class="GtkBox"> + <property name="css-classes">toolbar</property> - <object class="GtkButton" id="save">
+ <object class="GtkButton"> <property name="tooltip-text" translatable="1">Save</property>
<property name="label" translatable="1">_Save...</property>
<property name="use-underline">1</property>
@@ -151,7 +150,7 @@
- <object class="GtkButton" id="clear">
+ <object class="GtkButton"> <property name="tooltip-text" translatable="1">Clear</property>
<property name="label" translatable="1">_Clear</property>
<property name="use-underline">1</property>
@@ -165,7 +164,7 @@
- <object class="GtkToggleButton" id="pause">
+ <object class="GtkToggleButton"> <property name="tooltip-text" translatable="1">Pause</property>
<property name="label" translatable="1">_Pause</property>
<property name="use-underline">1</property>
@@ -215,18 +214,22 @@
- <object class="GtkComboBoxText" id="filterlevel">
+ <object class="GtkDropDown" id="filterlevel"> <property name="tooltip-text" translatable="1">Select the debug filter level.</property>
- <property name="active">0</property>
- <item translatable="yes">All</item>
- <item translatable="yes">Misc</item>
- <item translatable="yes">Info</item>
- <item translatable="yes">Warning</item>
- <item translatable="yes">Error</item>
- <item translatable="yes">Fatal Error</item>
- <signal name="changed" handler="filter_level_changed_cb" object="PidginDebugWindow" swapped="no"/>
+ <property name="selected">0</property> + <property name="model"> + <object class="GtkStringList"> + <item translatable="yes">All</item> + <item translatable="yes">Misc</item> + <item translatable="yes">Info</item> + <item translatable="yes">Warning</item> + <item translatable="yes">Error</item> + <item translatable="yes">Fatal Error</item> + <signal name="notify::selected" handler="filter_level_changed_cb" object="PidginDebugWindow" swapped="no"/> <relation name="labelled-by">filterlevel-label</relation>