qulogic/pidgin

c38b26076992
Parents e84a120599f7
Children d4573bd02c98
debugwin: Make filter options into popover when available.
--- a/pidgin/pidgindebug.c Wed Jun 13 17:53:20 2018 -0400
+++ b/pidgin/pidgindebug.c Wed Jun 13 18:16:50 2018 -0400
@@ -64,6 +64,9 @@
gboolean paused;
+#if GTK_CHECK_VERSION(3,12,0)
+ GtkWidget *popover;
+#endif
gboolean invert;
gboolean highlight;
GRegex *regex;
@@ -392,7 +395,11 @@
regex_menu_cb(GtkWidget *item, const gchar *pref) {
gboolean active;
+#if GTK_CHECK_VERSION(3,12,0)
+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(item));
+#else
active = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item));
+#endif
purple_prefs_set_bool(pref, active);
}
@@ -401,6 +408,12 @@
regex_popup_cb(GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event,
PidginDebugWindow *win)
{
+#if GTK_CHECK_VERSION(3,12,0)
+ GdkRectangle rect;
+ gtk_entry_get_icon_area(entry, icon_pos, &rect);
+ gtk_popover_set_pointing_to(GTK_POPOVER(win->popover), &rect);
+ gtk_popover_popup(GTK_POPOVER(win->popover));
+#else
GtkWidget *menu;
menu = gtk_menu_new();
@@ -413,6 +426,7 @@
gtk_menu_popup_at_widget(GTK_MENU(menu), GTK_WIDGET(entry),
GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, event);
+#endif
}
static void
@@ -585,6 +599,11 @@
"background-image: none;"
"background-color: @success_color;"
"}";
+#if GTK_CHECK_VERSION(3,12,0)
+ GtkBuilder *builder;
+ GtkWidget *popover_invert;
+ GtkWidget *popover_highlight;
+#endif
gtk_widget_init_template(GTK_WIDGET(win));
@@ -648,6 +667,33 @@
purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/filterlevel",
filter_level_pref_changed, win);
+
+#if GTK_CHECK_VERSION(3,12,0)
+ builder = gtk_builder_new_from_resource(
+ "/im/pidgin/Pidgin/Debug/filter-popover.ui");
+ win->popover = GTK_WIDGET(gtk_builder_get_object(builder,
+ "popover"));
+ gtk_popover_set_relative_to(GTK_POPOVER(win->popover),
+ win->expression);
+
+ popover_invert = GTK_WIDGET(gtk_builder_get_object(builder,
+ "popover.invert"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(popover_invert),
+ win->invert);
+ g_signal_connect(G_OBJECT(popover_invert), "toggled",
+ G_CALLBACK(regex_menu_cb),
+ PIDGIN_PREFS_ROOT "/debug/invert");
+
+ popover_highlight = GTK_WIDGET(gtk_builder_get_object(builder,
+ "popover.highlight"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(popover_highlight),
+ win->highlight);
+ g_signal_connect(G_OBJECT(popover_highlight), "toggled",
+ G_CALLBACK(regex_menu_cb),
+ PIDGIN_PREFS_ROOT "/debug/highlight");
+
+ g_object_unref(builder);
+#endif
}
/* The *start* and *end* marks bound the beginning and end of an
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/resources/Debug/filter-popover.ui Wed Jun 13 18:16:50 2018 -0400
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.12"/>
+ <object class="GtkPopover" id="popover">
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="popover.invert">
+ <property name="label" translatable="yes">Invert</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="popover.highlight">
+ <property name="label" translatable="yes">Highlight matches</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
--- a/pidgin/resources/pidgin.gresource.xml Wed Jun 13 17:53:20 2018 -0400
+++ b/pidgin/resources/pidgin.gresource.xml Wed Jun 13 18:16:50 2018 -0400
@@ -6,5 +6,6 @@
<file compressed="true">About/about.html</file>
<file compressed="true">About/credits.json</file>
<file compressed="true">Debug/debug.ui</file>
+ <file compressed="true">Debug/filter-popover.ui</file>
</gresource>
</gresources>