Wed, 13 Jun 2018 18:16:50 -0400
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>