Hello community, here is the log from the commit of package gnome-software for openSUSE:Factory checked in at 2016-12-07 11:11:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gnome-software (Old) and /work/SRC/openSUSE:Factory/.gnome-software.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-software" Changes: -------- --- /work/SRC/openSUSE:Factory/gnome-software/gnome-software.changes 2016-11-10 13:11:47.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.gnome-software.new/gnome-software.changes 2016-12-07 11:11:45.000000000 +0100 @@ -1,0 +2,17 @@ +Thu Dec 1 16:18:05 UTC 2016 - [email protected] + +- Update to version 3.22.3: + + Misc. fixes to the search results page. + + Misc. flatpak bug and crasher fixes. + + Correctly raise the codec search window under the Wayland + session. + + Improve spinner state handling on the updates page. + + Make it possible to upgrade two Fedora versions at a time. + + Fix a memory leak with every search request. + + Don't show screenshot placeholder for add-ons that can't have + screenshots. + + Show an error if the screenshot download fails. + + Get the screenshot metadata from the GNOME Shell Extension JSON + data. + +------------------------------------------------------------------- Old: ---- gnome-software-3.22.2.tar.xz New: ---- gnome-software-3.22.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gnome-software.spec ++++++ --- /var/tmp/diff_new_pack.5TiR4k/_old 2016-12-07 11:11:46.000000000 +0100 +++ /var/tmp/diff_new_pack.5TiR4k/_new 2016-12-07 11:11:46.000000000 +0100 @@ -17,7 +17,7 @@ Name: gnome-software -Version: 3.22.2 +Version: 3.22.3 Release: 0 %define gs_plugin_api 11 Summary: GNOME Software Store ++++++ gnome-software-3.22.2.tar.xz -> gnome-software-3.22.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/NEWS new/gnome-software-3.22.3/NEWS --- old/gnome-software-3.22.2/NEWS 2016-11-07 20:45:14.000000000 +0100 +++ new/gnome-software-3.22.3/NEWS 2016-12-01 16:53:35.000000000 +0100 @@ -1,3 +1,18 @@ +Version 3.22.3 +~~~~~~~~~~~~~~ +Released: 2016-12-01 + +This stable release fixes the following bugs: + * Misc. fixes to the search results page + * Misc. flatpak bug and crasher fixes + * Correctly raise the codec search window under the Wayland session + * Improve spinner state handling on the updates page + * Make it possible to upgrade two Fedora versions at a time + * Fix a memory leak with every search request + * Don't show screenshot placeholder for add-ons that can't have screenshots + * Show an error if the screenshot download fails + * Get the screenshot metadata from the GNOME Shell Extension JSON data + Version 3.22.2 ~~~~~~~~~~~~~~ Released: 2016-11-07 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/config.h new/gnome-software-3.22.3/config.h --- old/gnome-software-3.22.2/config.h 2016-11-07 20:44:18.000000000 +0100 +++ new/gnome-software-3.22.3/config.h 2016-12-01 16:52:14.000000000 +0100 @@ -110,7 +110,7 @@ #define PACKAGE_NAME "gnome-software" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "gnome-software 3.22.2" +#define PACKAGE_STRING "gnome-software 3.22.3" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "gnome-software" @@ -119,10 +119,10 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "3.22.2" +#define PACKAGE_VERSION "3.22.3" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Version number of package */ -#define VERSION "3.22.2" +#define VERSION "3.22.3" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/configure new/gnome-software-3.22.3/configure --- old/gnome-software-3.22.2/configure 2016-11-07 20:44:13.000000000 +0100 +++ new/gnome-software-3.22.3/configure 2016-12-01 16:52:08.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for gnome-software 3.22.2. +# Generated by GNU Autoconf 2.69 for gnome-software 3.22.3. # # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-software>. # @@ -591,8 +591,8 @@ # Identity of this package. PACKAGE_NAME='gnome-software' PACKAGE_TARNAME='gnome-software' -PACKAGE_VERSION='3.22.2' -PACKAGE_STRING='gnome-software 3.22.2' +PACKAGE_VERSION='3.22.3' +PACKAGE_STRING='gnome-software 3.22.3' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-software' PACKAGE_URL='' @@ -1556,7 +1556,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures gnome-software 3.22.2 to adapt to many kinds of systems. +\`configure' configures gnome-software 3.22.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1626,7 +1626,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gnome-software 3.22.2:";; + short | recursive ) echo "Configuration of gnome-software 3.22.3:";; esac cat <<\_ACEOF @@ -1844,7 +1844,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gnome-software configure 3.22.2 +gnome-software configure 3.22.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2213,7 +2213,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gnome-software $as_me 3.22.2, which was +It was created by gnome-software $as_me 3.22.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3077,7 +3077,7 @@ # Define the identity of the package. PACKAGE='gnome-software' - VERSION='3.22.2' + VERSION='3.22.3' cat >>confdefs.h <<_ACEOF @@ -18021,7 +18021,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gnome-software $as_me 3.22.2, which was +This file was extended by gnome-software $as_me 3.22.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18087,7 +18087,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -gnome-software config.status 3.22.2 +gnome-software config.status 3.22.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/configure.ac new/gnome-software-3.22.3/configure.ac --- old/gnome-software-3.22.2/configure.ac 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/configure.ac 2016-12-01 14:52:56.000000000 +0100 @@ -1,7 +1,7 @@ # Copyright (C) 2010-2015 Richard Hughes <[email protected]> AC_PREREQ(2.63) -AC_INIT([gnome-software],[3.22.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-software]) +AC_INIT([gnome-software],[3.22.3],[http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-software]) AC_CONFIG_SRCDIR(src) AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar serial-tests foreign]) AC_CONFIG_HEADERS([config.h]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/data/appdata/org.gnome.Software.appdata.xml.in new/gnome-software-3.22.3/data/appdata/org.gnome.Software.appdata.xml.in --- old/gnome-software-3.22.2/data/appdata/org.gnome.Software.appdata.xml.in 2016-11-07 20:43:12.000000000 +0100 +++ new/gnome-software-3.22.3/data/appdata/org.gnome.Software.appdata.xml.in 2016-12-01 16:49:17.000000000 +0100 @@ -46,6 +46,22 @@ Validate with `appstream-util validate *.appdata.xml` --> <releases> + <release date="2016-12-01" version="3.22.3"> + <description> + <p>This stable release fixes the following bugs:</p> + <ul> + <li>Misc. fixes to the search results page</li> + <li>Misc. flatpak bug and crasher fixes</li> + <li>Correctly raise the codec search window under the Wayland session</li> + <li>Improve spinner state handling on the updates page</li> + <li>Make it possible to upgrade two Fedora versions at a time</li> + <li>Fix a memory leak with every search request</li> + <li>Don't show screenshot placeholder for add-ons that can't have screenshots</li> + <li>Show an error if the screenshot download fails</li> + <li>Get the screenshot metadata from the GNOME Shell Extension JSON data</li> + </ul> + </description> + </release> <release date="2016-11-07" version="3.22.2"> <description> <p>This stable release fixes the following bugs:</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/doc/api/gnome-software-sections.txt new/gnome-software-3.22.3/doc/api/gnome-software-sections.txt --- old/gnome-software-3.22.2/doc/api/gnome-software-sections.txt 2016-11-07 20:45:21.000000000 +0100 +++ new/gnome-software-3.22.3/doc/api/gnome-software-sections.txt 2016-12-01 16:53:44.000000000 +0100 @@ -337,7 +337,6 @@ gs_utils_show_error_dialog gs_utils_build_unique_id_kind gs_utils_list_has_app_fuzzy -gs_search_button_new </SECTION> <SECTION> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gnome-software.ui new/gnome-software-3.22.3/src/gnome-software.ui --- old/gnome-software-3.22.2/src/gnome-software.ui 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gnome-software.ui 2016-12-01 14:52:56.000000000 +0100 @@ -241,6 +241,32 @@ </child> </object> </child> + <child> + <object class="GtkToggleButton" id="search_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <child internal-child="accessible"> + <object class="AtkObject" id="search_button_accessible"> + <property name="accessible-name" translatable="yes">Search</property> + </object> + </child> + <style> + <class name="image-button"/> + </style> + <child> + <object class="GtkImage" id="search_image"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="icon_name">edit-find-symbolic</property> + <property name="icon_size">1</property> + </object> + </child> + </object> + <packing> + <property name="pack-type">end</property> + </packing> + </child> </object> <packing> <property name="expand">False</property> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-app-row.c new/gnome-software-3.22.3/src/gs-app-row.c --- old/gnome-software-3.22.2/src/gs-app-row.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gs-app-row.c 2016-12-01 14:52:56.000000000 +0100 @@ -49,12 +49,9 @@ GtkWidget *label_warning; GtkWidget *label_origin; GtkWidget *label_installed; - GtkWidget *box_sandboxed; - GtkWidget *image_sandboxed; gboolean colorful; gboolean show_folders; gboolean show_buttons; - gboolean show_sandbox; gboolean show_source; gboolean show_codec; gboolean show_update; @@ -344,25 +341,6 @@ gtk_widget_set_visible (priv->label_origin, FALSE); } - /* sandboxed */ - if (priv->show_sandbox) { - if (gs_app_get_kudos (priv->app) & GS_APP_KUDO_SANDBOXED_SECURE) { - gtk_widget_set_visible (priv->box_sandboxed, TRUE); - gtk_image_set_from_icon_name (GTK_IMAGE (priv->image_sandboxed), - "security-high-symbolic", - GTK_ICON_SIZE_SMALL_TOOLBAR); - } else if (gs_app_get_kudos (priv->app) & GS_APP_KUDO_SANDBOXED) { - gtk_widget_set_visible (priv->box_sandboxed, TRUE); - gtk_image_set_from_icon_name (GTK_IMAGE (priv->image_sandboxed), - "security-medium-symbolic", - GTK_ICON_SIZE_SMALL_TOOLBAR); - } else { - gtk_widget_set_visible (priv->box_sandboxed, FALSE); - } - } else { - gtk_widget_set_visible (priv->box_sandboxed, FALSE); - } - /* installed tag */ if (!priv->show_buttons) { switch (gs_app_get_state (priv->app)) { @@ -678,8 +656,6 @@ gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, label_warning); gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, label_origin); gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, label_installed); - gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, box_sandboxed); - gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, image_sandboxed); } static void @@ -753,15 +729,6 @@ gs_app_row_refresh (app_row); } -void -gs_app_row_set_show_sandbox (GsAppRow *app_row, gboolean show_sandbox) -{ - GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row); - - priv->show_sandbox = show_sandbox; - gs_app_row_refresh (app_row); -} - void gs_app_row_set_show_source (GsAppRow *app_row, gboolean show_source) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-app-row.ui new/gnome-software-3.22.3/src/gs-app-row.ui --- old/gnome-software-3.22.2/src/gs-app-row.ui 2016-10-12 10:07:40.000000000 +0200 +++ new/gnome-software-3.22.3/src/gs-app-row.ui 2016-12-01 14:52:56.000000000 +0100 @@ -127,54 +127,6 @@ <property name="fill">False</property> </packing> </child> - <child> - <object class="GtkBox" id="box_sandboxed"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="orientation">horizontal</property> - <property name="margin_top">6</property> - <property name="spacing">3</property> - <property name="halign">start</property> - <property name="valign">start</property> - <child> - <object class="GtkImage" id="image_sandboxed"> - <property name="visible">True</property> - <property name="pixel_size">16</property> - <property name="valign">center</property> - <property name="halign">start</property> - <style> - <class name="dim-label"/> - </style> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label_sandboxed"> - <property name="label" translatable="yes" comments="security sandbox">Sandboxed</property> - <property name="visible">True</property> - <property name="xalign">0.0</property> - <property name="yalign">0.5</property> - <property name="halign">start</property> - <property name="ellipsize">end</property> - <style> - <class name="app-row-origin-text"/> - <class name="dim-label"/> - </style> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </object> - <packing> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> </object> <packing> <property name="fill">True</property> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-app.c new/gnome-software-3.22.3/src/gs-app.c --- old/gnome-software-3.22.2/src/gs-app.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gs-app.c 2016-12-01 14:52:56.000000000 +0100 @@ -770,7 +770,7 @@ /* this state change was unexpected */ if (!state_change_ok) { g_warning ("State change on %s from %s to %s is not OK", - app->id, + gs_app_get_unique_id (app), as_app_state_to_string (app->state), as_app_state_to_string (state)); return FALSE; @@ -792,7 +792,8 @@ default: if (app->state_recover != state) { g_debug ("%s non-transient state now %s", - app->id, as_app_state_to_string (state)); + gs_app_get_unique_id (app), + as_app_state_to_string (state)); app->state_recover = state; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-application.c new/gnome-software-3.22.3/src/gs-application.c --- old/gnome-software-3.22.2/src/gs-application.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gs-application.c 2016-12-01 14:52:56.000000000 +0100 @@ -32,7 +32,12 @@ #include <libsoup/soup.h> #ifdef GDK_WINDOWING_X11 -#include <gtk/gtkx.h> +#include <gdk/gdkx.h> +#endif +#ifdef GDK_WINDOWING_WAYLAND +#if GTK_CHECK_VERSION(3,22,4) +#include <gdk/gdkwayland.h> +#endif #endif #ifdef HAVE_PACKAGEKIT @@ -320,10 +325,13 @@ gs_shell_setup (app->shell, app->plugin_loader, app->cancellable); gtk_application_add_window (GTK_APPLICATION (app), gs_shell_get_window (app->shell)); + + /* monitor the network as the many UI operations need the network */ + gs_application_monitor_network (app); } static void -initialize_ui_and_present_window (GsApplication *app) +initialize_ui_and_present_window (GsApplication *app, const gchar *startup_id) { GList *windows; GtkWindow *window; @@ -332,6 +340,9 @@ windows = gtk_application_get_windows (GTK_APPLICATION (app)); if (windows) { window = windows->data; + + if (startup_id != NULL) + gtk_window_set_startup_id (window, startup_id); gtk_window_present (window); } } @@ -541,7 +552,7 @@ GsApplication *app = GS_APPLICATION (data); const gchar *mode; - initialize_ui_and_present_window (app); + initialize_ui_and_present_window (app, NULL); mode = g_variant_get_string (parameter, NULL); if (g_strcmp0 (mode, "updates") == 0) { @@ -568,7 +579,7 @@ GsApplication *app = GS_APPLICATION (data); const gchar *search; - initialize_ui_and_present_window (app); + initialize_ui_and_present_window (app, NULL); search = g_variant_get_string (parameter, NULL); gs_shell_show_search (app->shell, search); @@ -583,7 +594,7 @@ const gchar *id; const gchar *search; - initialize_ui_and_present_window (app); + initialize_ui_and_present_window (app, NULL); g_variant_get (parameter, "(&s&s)", &id, &search); if (search != NULL && search[0] != '\0') @@ -608,7 +619,7 @@ GsApplication *app = GS_APPLICATION (data); g_autoptr (GsApp) a = NULL; - initialize_ui_and_present_window (app); + initialize_ui_and_present_window (app, NULL); a = gs_app_new (NULL); gs_app_add_source (a, g_variant_get_string (parameter, NULL)); @@ -624,7 +635,6 @@ const gchar *filename; gs_application_initialize_ui (app); - gs_application_monitor_network (GS_APPLICATION (app)); g_variant_get (parameter, "(&s)", &filename); gs_shell_show_filename (app->shell, filename); @@ -662,7 +672,7 @@ { GsApplication *app = GS_APPLICATION (data); - initialize_ui_and_present_window (app); + initialize_ui_and_present_window (app, NULL); gs_shell_set_mode (app->shell, GS_SHELL_MODE_UPDATES); gs_update_monitor_show_error (app->update_monitor, app->shell); @@ -674,26 +684,32 @@ gpointer data) { GsApplication *app = GS_APPLICATION (data); -#ifdef GDK_WINDOWING_X11 GdkDisplay *display; -#endif const gchar *mode; const gchar *startup_id; g_autofree gchar **resources = NULL; g_variant_get (parameter, "(&s^a&s&s)", &mode, &resources, &startup_id); -#ifdef GDK_WINDOWING_X11 display = gdk_display_get_default (); - +#ifdef GDK_WINDOWING_X11 if (GDK_IS_X11_DISPLAY (display)) { if (startup_id != NULL && startup_id[0] != '\0') gdk_x11_display_set_startup_notification_id (display, startup_id); } #endif +#ifdef GDK_WINDOWING_WAYLAND +#if GTK_CHECK_VERSION(3,22,4) + if (GDK_IS_WAYLAND_DISPLAY (display)) { + if (startup_id != NULL && startup_id[0] != '\0') + gdk_wayland_display_set_startup_notification_id (display, + startup_id); + } +#endif +#endif - initialize_ui_and_present_window (app); + initialize_ui_and_present_window (app, startup_id); gs_shell_show_extras_search (app->shell, mode, resources); } @@ -777,7 +793,6 @@ GsApplication *app = GS_APPLICATION (application); gs_application_initialize_ui (GS_APPLICATION (application)); - gs_application_monitor_network (GS_APPLICATION (application)); /* start metadata loading screen */ if (gs_shell_get_mode (app->shell) == GS_SHELL_MODE_UNKNOWN) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-common.c new/gnome-software-3.22.3/src/gs-common.c --- old/gnome-software-3.22.2/src/gs-common.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gs-common.c 2016-12-01 14:52:56.000000000 +0100 @@ -850,53 +850,6 @@ gtk_widget_show (dialog); } -static void -gs_search_button_cb (GtkToggleButton *toggle_button, GtkSearchBar *search_bar) -{ - gtk_search_bar_set_search_mode (search_bar, - gtk_toggle_button_get_active (toggle_button)); -} - -static void -gs_search_mode_enabled_cb (GtkSearchBar *search_bar, - GParamSpec *pspec, - GtkToggleButton *toggle_button) -{ - gtk_toggle_button_set_active (toggle_button, - gtk_search_bar_get_search_mode (search_bar)); -} - -/** - * gs_search_button_new: - * - * Creates a new search toggle button. - */ -GtkWidget * -gs_search_button_new (GtkSearchBar *search_bar) -{ - GtkWidget *widget; - GtkWidget *im; - - widget = gtk_toggle_button_new (); - im = gtk_image_new_from_icon_name ("edit-find-symbolic", GTK_ICON_SIZE_BUTTON); - gtk_widget_set_visible (im, TRUE); - gtk_container_add (GTK_CONTAINER (widget), im); - gtk_widget_set_visible (widget, TRUE); - - if (search_bar != NULL) { - /* show the search bar when clicked */ - g_signal_connect (widget, "clicked", - G_CALLBACK (gs_search_button_cb), - search_bar); - /* set the button enabled when search appears */ - g_signal_connect (search_bar, "notify::search-mode-enabled", - G_CALLBACK (gs_search_mode_enabled_cb), - widget); - } - - return widget; -} - /** * gs_utils_get_error_value: * @error: A GError diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-common.h new/gnome-software-3.22.3/src/gs-common.h --- old/gnome-software-3.22.2/src/gs-common.h 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gs-common.h 2016-12-01 14:52:56.000000000 +0100 @@ -70,7 +70,6 @@ const gchar *id); gboolean gs_utils_list_has_app_fuzzy (GsAppList *list, GsApp *app); -GtkWidget *gs_search_button_new (GtkSearchBar *search_bar); G_END_DECLS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-page.c new/gnome-software-3.22.3/src/gs-page.c --- old/gnome-software-3.22.2/src/gs-page.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gs-page.c 2016-12-01 14:52:56.000000000 +0100 @@ -196,8 +196,10 @@ !gs_shell_is_active (priv->shell)) gs_app_notify_installed (helper->app); - if (GS_PAGE_GET_CLASS (page)->app_installed != NULL) + if (gs_app_is_installed (helper->app) && + GS_PAGE_GET_CLASS (page)->app_installed != NULL) { GS_PAGE_GET_CLASS (page)->app_installed (page, helper->app); + } } static void @@ -265,8 +267,10 @@ return; } - if (GS_PAGE_GET_CLASS (page)->app_removed != NULL) + if (!gs_app_is_installed (helper->app) && + GS_PAGE_GET_CLASS (page)->app_removed != NULL) { GS_PAGE_GET_CLASS (page)->app_removed (page, helper->app); + } } GtkWidget * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-screenshot-image.c new/gnome-software-3.22.3/src/gs-screenshot-image.c --- old/gnome-software-3.22.2/src/gs-screenshot-image.c 2016-10-12 10:07:40.000000000 +0200 +++ new/gnome-software-3.22.3/src/gs-screenshot-image.c 2016-12-01 14:52:56.000000000 +0100 @@ -215,10 +215,12 @@ return; if (msg->status_code != SOUP_STATUS_OK) { + g_warning ("Result of screenshot downloading attempt with " + "status code '%u': %s", msg->status_code, + msg->reason_phrase); /* TRANSLATORS: this is when we try to download a screenshot and * we get back 404 */ gs_screenshot_image_set_error (ssimg, _("Screenshot not found")); - gtk_widget_hide (GTK_WIDGET (ssimg)); return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-shell-details.c new/gnome-software-3.22.3/src/gs-shell-details.c --- old/gnome-software-3.22.2/src/gs-shell-details.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gs-shell-details.c 2016-12-01 14:52:56.000000000 +0100 @@ -569,6 +569,8 @@ case AS_APP_KIND_SOURCE: case AS_APP_KIND_FIRMWARE: case AS_APP_KIND_DRIVER: + case AS_APP_KIND_INPUT_METHOD: + case AS_APP_KIND_LOCALIZATION: gtk_widget_set_visible (self->box_details_screenshot_fallback, FALSE); break; default: @@ -1445,6 +1447,16 @@ gs_plugin_loader_file_to_app_async (self->plugin_loader, file, GS_PLUGIN_REFINE_FLAGS_REQUIRE_ICON | + GS_PLUGIN_REFINE_FLAGS_REQUIRE_LICENSE | + GS_PLUGIN_REFINE_FLAGS_REQUIRE_SIZE | + GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION | + GS_PLUGIN_REFINE_FLAGS_REQUIRE_HISTORY | + GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN_UI | + GS_PLUGIN_REFINE_FLAGS_REQUIRE_MENU_PATH | + GS_PLUGIN_REFINE_FLAGS_REQUIRE_URL | + GS_PLUGIN_REFINE_FLAGS_REQUIRE_SETUP_ACTION | + GS_PLUGIN_REFINE_FLAGS_REQUIRE_PROVENANCE | + GS_PLUGIN_REFINE_FLAGS_REQUIRE_RELATED | GS_PLUGIN_REFINE_FLAGS_REQUIRE_PERMISSIONS, self->cancellable, gs_shell_details_file_to_app_cb, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-shell-overview.c new/gnome-software-3.22.3/src/gs-shell-overview.c --- old/gnome-software-3.22.2/src/gs-shell-overview.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gs-shell-overview.c 2016-12-01 14:52:56.000000000 +0100 @@ -51,7 +51,6 @@ gboolean loading_categories; gboolean empty; gchar *category_of_day; - GtkWidget *search_button; GHashTable *category_hash; /* id : GsCategory */ GSettings *settings; @@ -574,7 +573,8 @@ } /* we hid the search bar */ - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->search_button), FALSE); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "search_button")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "buttonbox_main")); gtk_widget_show (widget); @@ -737,7 +737,6 @@ GCancellable *cancellable) { GsShellOverviewPrivate *priv = gs_shell_overview_get_instance_private (self); - GtkSearchBar *search_bar; GtkAdjustment *adj; GtkWidget *tile; gint i; @@ -776,12 +775,6 @@ g_signal_connect (priv->categories_expander_button, "clicked", G_CALLBACK (gs_shell_overview_categories_expander_cb), self); - /* search button */ - search_bar = GTK_SEARCH_BAR (gtk_builder_get_object (priv->builder, - "search_bar")); - priv->search_button = gs_search_button_new (search_bar); - gs_page_set_header_end_widget (GS_PAGE (self), priv->search_button); - /* chain up */ gs_page_setup (GS_PAGE (self), shell, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-shell-search.c new/gnome-software-3.22.3/src/gs-shell-search.c --- old/gnome-software-3.22.2/src/gs-shell-search.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gs-shell-search.c 2016-12-01 14:52:56.000000000 +0100 @@ -44,7 +44,6 @@ gchar *appid_to_show; gchar *value; guint waiting_id; - GtkWidget *search_button; GtkWidget *list_box_search; GtkWidget *scrolledwindow_search; @@ -134,7 +133,6 @@ for (i = 0; i < gs_app_list_length (list); i++) { app = gs_app_list_index (list, i); app_row = gs_app_row_new (app); - gs_app_row_set_show_sandbox (GS_APP_ROW (app_row), TRUE); if (!gs_app_has_quirk (app, AS_APP_QUIRK_PROVENANCE) || gs_utils_list_has_app_fuzzy (list, app)) gs_app_row_set_show_source (GS_APP_ROW (app_row), TRUE); @@ -254,7 +252,8 @@ gtk_widget_show (widget); /* hardcode */ - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->search_button), TRUE); + widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "search_button")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); if (scroll_up) { GtkAdjustment *adj; @@ -381,14 +380,6 @@ gs_shell_search_reload (page); } -static void -gs_shell_search_search_button_cb (GtkButton *button, GsShellSearch *self) -{ - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button))) - return; - gs_shell_change_mode (self->shell, GS_SHELL_MODE_OVERVIEW, NULL, TRUE); -} - void gs_shell_search_setup (GsShellSearch *self, GsShell *shell, @@ -418,12 +409,6 @@ gs_shell_search_sort_func, self, NULL); - /* search button */ - self->search_button = gs_search_button_new (NULL); - gs_page_set_header_end_widget (GS_PAGE (self), self->search_button); - g_signal_connect (self->search_button, "clicked", - G_CALLBACK (gs_shell_search_search_button_cb), self); - /* chain up */ gs_page_setup (GS_PAGE (self), shell, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-shell-updates.c new/gnome-software-3.22.3/src/gs-shell-updates.c --- old/gnome-software-3.22.2/src/gs-shell-updates.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gs-shell-updates.c 2016-12-01 14:52:56.000000000 +0100 @@ -302,11 +302,11 @@ /* headerbar refresh icon */ switch (self->state) { case GS_SHELL_UPDATES_STATE_ACTION_REFRESH: + case GS_SHELL_UPDATES_STATE_ACTION_GET_UPDATES: gtk_image_set_from_icon_name (GTK_IMAGE (gtk_button_get_image (GTK_BUTTON (self->button_refresh))), "media-playback-stop-symbolic", GTK_ICON_SIZE_MENU); gtk_widget_show (self->button_refresh); break; - case GS_SHELL_UPDATES_STATE_ACTION_GET_UPDATES: case GS_SHELL_UPDATES_STATE_STARTUP: case GS_SHELL_UPDATES_STATE_MANAGED: gtk_widget_hide (self->button_refresh); @@ -338,8 +338,11 @@ case GS_SHELL_UPDATES_STATE_FAILED: gtk_stack_set_visible_child_name (GTK_STACK (self->stack_updates), "failed"); break; - case GS_SHELL_UPDATES_STATE_ACTION_REFRESH: case GS_SHELL_UPDATES_STATE_ACTION_GET_UPDATES: + gtk_stack_set_visible_child_name (GTK_STACK (self->stack_updates), + "spinner"); + break; + case GS_SHELL_UPDATES_STATE_ACTION_REFRESH: if (self->result_flags != GS_SHELL_UPDATES_FLAG_NONE) { gtk_stack_set_visible_child_name (GTK_STACK (self->stack_updates), "view"); } else { @@ -554,6 +557,7 @@ } } else if (gs_app_list_length (list) == 0) { g_debug ("updates-shell: no upgrades to show"); + gs_shell_updates_clear_flag (self, GS_SHELL_UPDATES_FLAG_HAS_UPGRADES); } else { GsApp *app = gs_app_list_index (list, 0); g_debug ("got upgrade %s", gs_app_get_id (app)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-shell.c new/gnome-software-3.22.3/src/gs-shell.c --- old/gnome-software-3.22.2/src/gs-shell.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/gs-shell.c 2016-12-01 14:52:56.000000000 +0100 @@ -83,6 +83,7 @@ GQueue *back_entry_stack; GPtrArray *modal_dialogs; gulong search_changed_id; + gboolean in_mode_change; } GsShellPrivate; G_DEFINE_TYPE_WITH_PRIVATE (GsShell, gs_shell, G_TYPE_OBJECT) @@ -254,10 +255,16 @@ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "header_selection_menu_button")); gtk_widget_hide (widget); + priv->in_mode_change = TRUE; + /* only show the search button in overview and search pages */ + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "search_button")); + gtk_widget_set_visible (widget, mode == GS_SHELL_MODE_OVERVIEW || + mode == GS_SHELL_MODE_SEARCH); /* hide unless we're going to search */ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "search_bar")); gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (widget), mode == GS_SHELL_MODE_SEARCH); + priv->in_mode_change = FALSE; context = gtk_widget_get_style_context (GTK_WIDGET (gtk_builder_get_object (priv->builder, "header"))); gtk_style_context_remove_class (context, "selection-mode"); @@ -333,9 +340,13 @@ /* show the back button if needed */ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "button_back")); - gtk_widget_set_visible (widget, !g_queue_is_empty (priv->back_entry_stack)); + gtk_widget_set_visible (widget, + mode != GS_SHELL_MODE_SEARCH && + !g_queue_is_empty (priv->back_entry_stack)); + priv->in_mode_change = TRUE; gs_page_switch_to (new_page, scroll_up); + priv->in_mode_change = FALSE; /* update header bar widgets */ widget = gs_page_get_header_start_widget (new_page); @@ -528,6 +539,35 @@ } } +static void +search_button_clicked_cb (GtkToggleButton *toggle_button, GsShell *shell) +{ + GsShellPrivate *priv = gs_shell_get_instance_private (shell); + GtkWidget *search_bar; + + search_bar = GTK_WIDGET (gtk_builder_get_object (priv->builder, "search_bar")); + gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (search_bar), + gtk_toggle_button_get_active (toggle_button)); + + if (priv->in_mode_change) + return; + + /* switch back to overview */ + if (!gtk_toggle_button_get_active (toggle_button)) + gs_shell_change_mode (shell, GS_SHELL_MODE_OVERVIEW, NULL, TRUE); +} + +static void +search_mode_enabled_cb (GtkSearchBar *search_bar, GParamSpec *pspec, GsShell *shell) +{ + GsShellPrivate *priv = gs_shell_get_instance_private (shell); + GtkWidget *search_button; + + search_button = GTK_WIDGET (gtk_builder_get_object (priv->builder, "search_button")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (search_button), + gtk_search_bar_get_search_mode (search_bar)); +} + static gboolean window_key_press_event (GtkWidget *win, GdkEventKey *event, GsShell *shell) { @@ -680,6 +720,17 @@ g_signal_connect_after (priv->main_window, "button_press_event", G_CALLBACK (window_button_press_event), shell); + /* show the search bar when clicking on the search button */ + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "search_button")); + g_signal_connect (widget, "clicked", + G_CALLBACK (search_button_clicked_cb), + shell); + /* set the search button enabled when search bar appears */ + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "search_bar")); + g_signal_connect (widget, "notify::search-mode-enabled", + G_CALLBACK (search_mode_enabled_cb), + shell); + /* setup buttons */ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "button_back")); g_signal_connect (widget, "clicked", @@ -853,6 +904,8 @@ void gs_shell_show_extras_search (GsShell *shell, const gchar *mode, gchar **resources) { GsShellPrivate *priv = gs_shell_get_instance_private (shell); + + save_back_entry (shell); gs_shell_extras_search (priv->shell_extras, mode, resources); gs_shell_change_mode (shell, GS_SHELL_MODE_EXTRAS, NULL, TRUE); gs_shell_activate (shell); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/gs-update-list.c new/gnome-software-3.22.3/src/gs-update-list.c --- old/gnome-software-3.22.2/src/gs-update-list.c 2016-10-12 10:07:40.000000000 +0200 +++ new/gnome-software-3.22.3/src/gs-update-list.c 2016-11-27 16:36:29.000000000 +0100 @@ -45,8 +45,6 @@ G_DEFINE_TYPE_WITH_PRIVATE (GsUpdateList, gs_update_list, GTK_TYPE_LIST_BOX) -#define GET_PRIV(o) gs_update_list_get_instance_private(o) - static void gs_update_list_button_clicked_cb (GsAppRow *app_row, GsUpdateList *update_list) @@ -59,7 +57,7 @@ gs_update_list_add_app (GsUpdateList *update_list, GsApp *app) { - GsUpdateListPrivate *priv = GET_PRIV (update_list); + GsUpdateListPrivate *priv = gs_update_list_get_instance_private (update_list); GtkWidget *app_row; app_row = gs_app_row_new (app); @@ -194,7 +192,7 @@ gs_update_list_dispose (GObject *object) { GsUpdateList *update_list = GS_UPDATE_LIST (object); - GsUpdateListPrivate *priv = GET_PRIV (update_list); + GsUpdateListPrivate *priv = gs_update_list_get_instance_private (update_list); g_clear_object (&priv->sizegroup_image); g_clear_object (&priv->sizegroup_name); @@ -205,7 +203,7 @@ static void gs_update_list_init (GsUpdateList *update_list) { - GsUpdateListPrivate *priv = GET_PRIV (update_list); + GsUpdateListPrivate *priv = gs_update_list_get_instance_private (update_list); priv->sizegroup_image = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); priv->sizegroup_name = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/plugins/gs-appstream.c new/gnome-software-3.22.3/src/plugins/gs-appstream.c --- old/gnome-software-3.22.2/src/plugins/gs-appstream.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/plugins/gs-appstream.c 2016-12-01 14:52:56.000000000 +0100 @@ -120,30 +120,44 @@ gs_app_add_icon (app, icon); } -static void -gs_appstream_refine_add_addons (GsPlugin *plugin, GsApp *app, AsApp *item) +static gboolean +gs_appstream_refine_add_addons (GsPlugin *plugin, + GsApp *app, + AsApp *item, + GError **error) { GPtrArray *addons; guint i; + g_autoptr(AsProfileTask) ptask = NULL; + + /* we only care about addons to desktop apps */ + if (gs_app_get_kind (app) != AS_APP_KIND_DESKTOP) + return TRUE; + + /* search categories for the search term */ + ptask = as_profile_start (gs_plugin_get_profile (plugin), + "appstream::refine-addons{%s}", + gs_app_get_unique_id (app)); + g_assert (ptask != NULL); addons = as_app_get_addons (item); if (addons == NULL) - return; + return TRUE; for (i = 0; i < addons->len; i++) { AsApp *as_addon = g_ptr_array_index (addons, i); - g_autoptr(GError) error = NULL; g_autoptr(GsApp) addon = NULL; - addon = gs_app_new (as_app_get_id (as_addon)); + addon = gs_appstream_create_app (plugin, as_addon, error); + if (addon == NULL) + return FALSE; /* add all the data we can */ - if (!gs_appstream_refine_app (plugin, addon, as_addon, &error)) { - g_warning ("failed to refine addon: %s", error->message); - continue; - } + if (!gs_appstream_refine_app (plugin, addon, as_addon, error)) + return FALSE; gs_app_add_addon (app, addon); } + return TRUE; } static void @@ -506,6 +520,13 @@ GPtrArray *kudos; const gchar *tmp; guint i; + g_autoptr(AsProfileTask) ptask = NULL; + + /* search categories for the search term */ + ptask = as_profile_start (gs_plugin_get_profile (plugin), + "appstream::refine-app{%s}", + gs_app_get_unique_id (app)); + g_assert (ptask != NULL); /* set the kind to be more precise */ if (gs_app_get_kind (app) == AS_APP_KIND_UNKNOWN || @@ -657,7 +678,8 @@ gs_app_set_sources (app, pkgnames); /* set addons */ - gs_appstream_refine_add_addons (plugin, app, item); + if (!gs_appstream_refine_add_addons (plugin, app, item, error)) + return FALSE; /* set screenshots */ gs_appstream_refine_add_screenshots (app, item); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/plugins/gs-flatpak.c new/gnome-software-3.22.3/src/plugins/gs-flatpak.c --- old/gnome-software-3.22.2/src/plugins/gs-flatpak.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/plugins/gs-flatpak.c 2016-12-01 14:52:56.000000000 +0100 @@ -113,6 +113,10 @@ g_autoptr(GError) error = NULL; g_autoptr(GError) error_md = NULL; + /* don't refresh when it's us ourselves doing the change */ + if (gs_plugin_has_flags (self->plugin, GS_PLUGIN_FLAGS_RUNNING_SELF)) + return; + /* manually drop the cache */ if (!flatpak_installation_drop_caches (self->installation, NULL, &error)) { @@ -1025,6 +1029,10 @@ if (gs_app_get_origin_hostname (app) != NULL) return TRUE; + /* no origin */ + if (gs_app_get_origin (app) == NULL) + return TRUE; + /* get the remote */ xremote = flatpak_installation_get_remote_by_name (self->installation, gs_app_get_origin (app), @@ -1470,6 +1478,16 @@ } else { g_autoptr(FlatpakRef) xref = NULL; + /* no origin */ + if (gs_app_get_origin (app) == NULL) { + g_set_error (error, + GS_PLUGIN_ERROR, + GS_PLUGIN_ERROR_NOT_SUPPORTED, + "no origin set for %s", + gs_app_get_unique_id (app)); + return FALSE; + } + /* fetch from the server */ xref = gs_flatpak_create_fake_ref (app, error); if (xref == NULL) @@ -1584,6 +1602,16 @@ } else { g_autoptr(FlatpakRef) xref = NULL; g_autoptr(GError) error_local = NULL; + + /* no origin */ + if (gs_app_get_origin (app) == NULL) { + g_set_error (error, + GS_PLUGIN_ERROR, + GS_PLUGIN_ERROR_NOT_SUPPORTED, + "no origin set for %s", + gs_app_get_unique_id (app)); + return FALSE; + } xref = gs_flatpak_create_fake_ref (app, error); if (xref == NULL) return FALSE; @@ -1952,6 +1980,15 @@ app, cancellable, error); } else { + /* no origin */ + if (gs_app_get_origin (app) == NULL) { + g_set_error (error, + GS_PLUGIN_ERROR, + GS_PLUGIN_ERROR_NOT_SUPPORTED, + "no origin set for %s", + gs_app_get_unique_id (app)); + return FALSE; + } g_debug ("installing %s", gs_app_get_id (app)); xref = flatpak_installation_install (self->installation, gs_app_get_origin (app), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/plugins/gs-plugin-appstream.c new/gnome-software-3.22.3/src/plugins/gs-plugin-appstream.c --- old/gnome-software-3.22.2/src/plugins/gs-plugin-appstream.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/plugins/gs-plugin-appstream.c 2016-12-01 14:52:56.000000000 +0100 @@ -345,6 +345,13 @@ GsPluginData *priv = gs_plugin_get_data (plugin); const gchar *unique_id; AsApp *item; + g_autoptr(AsProfileTask) ptask = NULL; + + /* search categories for the search term */ + ptask = as_profile_start (gs_plugin_get_profile (plugin), + "appstream::refine-from-id{%s}", + gs_app_get_unique_id (app)); + g_assert (ptask != NULL); /* unfound */ *found = FALSE; @@ -391,6 +398,12 @@ GPtrArray *sources; const gchar *pkgname; guint i; + g_autoptr(AsProfileTask) ptask = NULL; + + /* search categories for the search term */ + ptask = as_profile_start_literal (gs_plugin_get_profile (plugin), + "appstream::refine-from-pkgname"); + g_assert (ptask != NULL); /* find anything that matches the ID */ sources = gs_app_get_sources (app); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/plugins/gs-plugin-fedora-distro-upgrades.c new/gnome-software-3.22.3/src/plugins/gs-plugin-fedora-distro-upgrades.c --- old/gnome-software-3.22.2/src/plugins/gs-plugin-fedora-distro-upgrades.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/plugins/gs-plugin-fedora-distro-upgrades.c 2016-12-01 14:52:56.000000000 +0100 @@ -299,6 +299,19 @@ return g_strdup_printf ("#151E65"); } +static gint +sort_distros_cb (gconstpointer a, gconstpointer b) +{ + DistroInfo *distro_a = *((DistroInfo **) a); + DistroInfo *distro_b = *((DistroInfo **) b); + + if (distro_a->version > distro_b->version) + return 1; + if (distro_a->version < distro_b->version) + return -1; + return 0; +} + gboolean gs_plugin_add_distro_upgrades (GsPlugin *plugin, GsAppList *list, @@ -328,6 +341,7 @@ distros = parse_pkgdb_collections_data (data, (gssize) len, error); if (distros == NULL) return FALSE; + g_ptr_array_sort (distros, sort_distros_cb); for (i = 0; i < distros->len; i++) { DistroInfo *distro_info = g_ptr_array_index (distros, i); g_autofree gchar *app_id = NULL; @@ -343,13 +357,14 @@ if (g_strcmp0 (distro_info->name, priv->os_name) != 0) continue; - /* only interested in newer versions */ - if (distro_info->version <= priv->os_version) + /* only interested in newer versions, but not more than N+2 */ + if (distro_info->version <= priv->os_version || + distro_info->version > priv->os_version + 2) continue; /* only interested in non-devel distros */ if (!g_settings_get_boolean (settings, "show-upgrade-prerelease")) { - if (distro_info->status != DISTRO_STATUS_ACTIVE) + if (distro_info->status == DISTRO_STATUS_DEVEL) continue; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/plugins/gs-plugin-flatpak-system.c new/gnome-software-3.22.3/src/plugins/gs-plugin-flatpak-system.c --- old/gnome-software-3.22.2/src/plugins/gs-plugin-flatpak-system.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/plugins/gs-plugin-flatpak-system.c 2016-12-01 14:52:56.000000000 +0100 @@ -36,15 +36,15 @@ struct GsPluginData { GsFlatpak *flatpak; - GSettings *settings; }; void gs_plugin_initialize (GsPlugin *plugin) { GsPluginData *priv = gs_plugin_alloc_data (plugin, sizeof(GsPluginData)); + g_autoptr(GSettings) settings = g_settings_new ("org.gnome.software"); + priv->flatpak = gs_flatpak_new (plugin, AS_APP_SCOPE_SYSTEM); - priv->settings = g_settings_new ("org.gnome.software"); /* set plugin flags */ gs_plugin_add_flags (plugin, GS_PLUGIN_FLAGS_GLOBAL_CACHE); @@ -54,6 +54,10 @@ /* prioritize over packages */ gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_BETTER_THAN, "packagekit"); + + /* prefer system-wide handling of local files */ + if (g_settings_get_boolean (settings, "install-bundles-system-wide")) + gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_BEFORE, "flatpak-user"); } void @@ -61,7 +65,6 @@ { GsPluginData *priv = gs_plugin_get_data (plugin); g_clear_object (&priv->flatpak); - g_clear_object (&priv->settings); } void @@ -214,10 +217,9 @@ { GsPluginData *priv = gs_plugin_get_data (plugin); - /* only handle when installing bundles system-wide */ - if (!g_settings_get_boolean (priv->settings, - "install-bundles-system-wide")) { - g_debug ("not handling bundle as per-user specified"); + /* only handle when nothing yet has added this */ + if (gs_app_list_length (list) > 0) { + g_debug ("not handling bundle as already added"); return TRUE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/plugins/gs-plugin-flatpak-user.c new/gnome-software-3.22.3/src/plugins/gs-plugin-flatpak-user.c --- old/gnome-software-3.22.2/src/plugins/gs-plugin-flatpak-user.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/plugins/gs-plugin-flatpak-user.c 2016-12-01 14:52:56.000000000 +0100 @@ -36,15 +36,15 @@ struct GsPluginData { GsFlatpak *flatpak; - GSettings *settings; }; void gs_plugin_initialize (GsPlugin *plugin) { GsPluginData *priv = gs_plugin_alloc_data (plugin, sizeof(GsPluginData)); + g_autoptr(GSettings) settings = g_settings_new ("org.gnome.software"); + priv->flatpak = gs_flatpak_new (plugin, AS_APP_SCOPE_USER); - priv->settings = g_settings_new ("org.gnome.software"); /* set plugin flags */ gs_plugin_add_flags (plugin, GS_PLUGIN_FLAGS_GLOBAL_CACHE); @@ -54,14 +54,18 @@ /* prioritize over packages */ gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_BETTER_THAN, "packagekit"); + + /* prefer user-specific handling of local files */ + if (!g_settings_get_boolean (settings, "install-bundles-system-wide")) + gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_BEFORE, "flatpak-system"); } + void gs_plugin_destroy (GsPlugin *plugin) { GsPluginData *priv = gs_plugin_get_data (plugin); g_clear_object (&priv->flatpak); - g_clear_object (&priv->settings); } void @@ -197,11 +201,9 @@ { GsPluginData *priv = gs_plugin_get_data (plugin); - /* only handle when installing bundles user-wide */ - if (g_getenv ("GS_SELF_TEST_FLATPACK_DATADIR") == NULL && - g_settings_get_boolean (priv->settings, - "install-bundles-system-wide")) { - g_debug ("not handling bundle as per-system specified"); + /* only handle when nothing yet has added this */ + if (gs_app_list_length (list) > 0) { + g_debug ("not handling bundle as already added"); return TRUE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/plugins/gs-plugin-fwupd.c new/gnome-software-3.22.3/src/plugins/gs-plugin-fwupd.c --- old/gnome-software-3.22.2/src/plugins/gs-plugin-fwupd.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/plugins/gs-plugin-fwupd.c 2016-12-01 14:52:56.000000000 +0100 @@ -495,6 +495,10 @@ gs_app_set_local_file (app, file); gs_app_list_add (list, app); + /* schedule for download */ + if (!g_file_test (filename_cache, G_FILE_TEST_EXISTS)) + gs_plugin_fwupd_add_required_location (plugin, update_uri); + return TRUE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/plugins/gs-plugin-packagekit-refine.c new/gnome-software-3.22.3/src/plugins/gs-plugin-packagekit-refine.c --- old/gnome-software-3.22.2/src/plugins/gs-plugin-packagekit-refine.c 2016-11-07 14:35:25.000000000 +0100 +++ new/gnome-software-3.22.3/src/plugins/gs-plugin-packagekit-refine.c 2016-12-01 13:35:47.000000000 +0100 @@ -485,7 +485,7 @@ } /* the size is the size of all sources */ - if (gs_app_get_state (app) == AS_APP_STATE_INSTALLED) { + if (gs_app_is_installed (app)) { gs_app_set_size_download (app, GS_APP_SIZE_UNKNOWABLE); if (size > 0 && gs_app_get_size_installed (app) == 0) gs_app_set_size_installed (app, size); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-3.22.2/src/plugins/gs-plugin-shell-extensions.c new/gnome-software-3.22.3/src/plugins/gs-plugin-shell-extensions.c --- old/gnome-software-3.22.2/src/plugins/gs-plugin-shell-extensions.c 2016-11-07 20:42:06.000000000 +0100 +++ new/gnome-software-3.22.3/src/plugins/gs-plugin-shell-extensions.c 2016-12-01 14:52:56.000000000 +0100 @@ -31,7 +31,6 @@ /* * Things we want from the API: * - * - Screenshots * - Size on disk/download * - Existing review data for each extension? * - A local icon for an installed shell extension @@ -432,7 +431,6 @@ AsApp *app; JsonObject *json_ver_map; const gchar *tmp; - gint64 pk; app = as_app_new (); as_app_set_kind (app, AS_APP_KIND_SHELL_EXTENSION); @@ -446,6 +444,20 @@ return NULL; as_app_set_description (app, NULL, desc); } + tmp = json_object_get_string_member (json_app, "screenshot"); + if (tmp != NULL) { + g_autoptr(AsScreenshot) ss = NULL; + g_autoptr(AsImage) im = NULL; + g_autofree gchar *uri = NULL; + uri = g_build_path ("/", SHELL_EXTENSIONS_API_URI, tmp, NULL); + im = as_image_new (); + as_image_set_kind (im, AS_IMAGE_KIND_SOURCE); + as_image_set_url (im, uri); + ss = as_screenshot_new (); + as_screenshot_set_kind (ss, AS_SCREENSHOT_KIND_DEFAULT); + as_screenshot_add_image (ss, im); + as_app_add_screenshot (app, ss); + } tmp = json_object_get_string_member (json_app, "name"); if (tmp != NULL) as_app_set_name (app, NULL, tmp); @@ -483,25 +495,6 @@ return NULL; } - /* add a screenshot, which curiously isn't in the json */ - pk = json_object_get_int_member (json_app, "pk"); - if (1) { - g_autoptr(AsScreenshot) ss = NULL; - g_autoptr(AsImage) im = NULL; - g_autofree gchar *uri = NULL; - uri = g_strdup_printf ("%s/static/extension-data/" - "screenshots/" - "screenshot_%" G_GINT64_FORMAT ".png", - SHELL_EXTENSIONS_API_URI, pk); - im = as_image_new (); - as_image_set_kind (im, AS_IMAGE_KIND_SOURCE); - as_image_set_url (im, uri); - ss = as_screenshot_new (); - as_screenshot_set_kind (ss, AS_SCREENSHOT_KIND_DEFAULT); - as_screenshot_add_image (ss, im); - as_app_add_screenshot (app, ss); - } - /* required to match categories in gnome-software */ as_app_add_category (app, "Addons"); as_app_add_category (app, "ShellExtensions");
