# HG changeset patch # User Elliott Sales de Andrade # Date 1528928210 14400 # Node ID c38b26076992c68a107366e7c6b7134ccd83d032 # Parent e84a120599f7cd8111bd20154b2478cbee658eac debugwin: Make filter options into popover when available. diff -r e84a120599f7 -r c38b26076992 pidgin/pidgindebug.c --- 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 diff -r e84a120599f7 -r c38b26076992 pidgin/resources/Debug/filter-popover.ui --- /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 @@ + + + + + + False + + + True + False + vertical + + + Invert + True + True + False + True + + + False + True + 0 + + + + + Highlight matches + True + True + False + True + + + False + True + 1 + + + + + + diff -r e84a120599f7 -r c38b26076992 pidgin/resources/pidgin.gresource.xml --- 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 @@ About/about.html About/credits.json Debug/debug.ui + Debug/filter-popover.ui