Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion src/MainWindow.vala
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
* with this program. If not, see http://www.gnu.org/licenses/.
*/

[CCode (cheader_filename = "malloc.h")]
extern int malloc_trim (size_t pad);

public class AppCenter.MainWindow : Gtk.ApplicationWindow {
public const string ACTION_PREFIX = "win.";
public const string ACTION_SHOW_PACKAGE = "show-package";
Expand Down Expand Up @@ -156,7 +159,10 @@ public class AppCenter.MainWindow : Gtk.ApplicationWindow {

// We have to wrap in Idle otherwise we crash because libportal hasn't unexported us yet.
((AppCenter.App) application).request_background.begin (() =>
Idle.add_once (() => destroy ())
Idle.add_once (() => {
destroy ();
Idle.add_once (() => malloc_trim (0));
})
);

return true;
Expand Down
16 changes: 11 additions & 5 deletions src/Views/AppInfoView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {
private Gtk.Revealer oars_flowbox_revealer;
private Gtk.Revealer uninstall_button_revealer;

private Gtk.Revealer title_revealer;
private Gtk.Box header;
private Gtk.ScrolledWindow scrolled;
private Gtk.Revealer screenshot_arrow_revealer_p;
private Gtk.Revealer screenshot_arrow_revealer_n;

private bool is_runtime_warning_shown = false;
private bool permissions_shown = false;

Expand Down Expand Up @@ -75,7 +81,7 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {
title_widget.append (title_label);
title_widget.add_css_class (Granite.STYLE_CLASS_TITLE_LABEL);

var title_revealer = new Gtk.Revealer () {
title_revealer = new Gtk.Revealer () {
child = title_widget,
transition_type = CROSSFADE
};
Expand Down Expand Up @@ -192,7 +198,7 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {
maximum_size = MAX_WIDTH
};

var header = new Gtk.Box (HORIZONTAL, 0) {
header = new Gtk.Box (HORIZONTAL, 0) {
hexpand = true
};
header.append (header_clamp);
Expand Down Expand Up @@ -555,14 +561,14 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {
}
});

var screenshot_arrow_revealer_p = new Gtk.Revealer () {
screenshot_arrow_revealer_p = new Gtk.Revealer () {
child = screenshot_previous,
halign = Gtk.Align.START,
valign = Gtk.Align.CENTER,
transition_type = Gtk.RevealerTransitionType.CROSSFADE
};

var screenshot_arrow_revealer_n = new Gtk.Revealer () {
screenshot_arrow_revealer_n = new Gtk.Revealer () {
child = screenshot_next,
halign = Gtk.Align.END,
valign = Gtk.Align.CENTER,
Expand Down Expand Up @@ -673,7 +679,7 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {
box.append (body_clamp);
box.append (new AuthorView (package, MAX_WIDTH));

var scrolled = new Gtk.ScrolledWindow () {
scrolled = new Gtk.ScrolledWindow () {
child = box,
hscrollbar_policy = Gtk.PolicyType.NEVER,
hexpand = true,
Expand Down
15 changes: 10 additions & 5 deletions src/Widgets/Screenshot.vala
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public class AppCenter.Screenshot : Granite.Bin {

private static Gee.HashMap<string, Gtk.CssProvider>? providers;
private Gtk.Picture picture;
private string? accent_color;

class construct {
set_css_name ("screenshot");
Expand All @@ -40,16 +41,20 @@ public class AppCenter.Screenshot : Granite.Bin {
add_css_class (Granite.CssClass.CARD);

bind_property ("caption", label, "label");
}

public void set_branding (AppCenterCore.Package package) {
set_accent_color (package.get_color_primary ());

// Only capture `this` here: capturing a local would make Vala use
// g_signal_connect_data (), which refs us into the process-lifetime
// Granite.Settings singleton and leaks every screenshot ever shown
Granite.Settings.get_default ().notify["prefers-color-scheme"].connect (() => {
set_accent_color (package.get_color_primary ());
set_accent_color (accent_color);
});
}

public void set_branding (AppCenterCore.Package package) {
accent_color = package.get_color_primary ();
set_accent_color (accent_color);
}

private void set_accent_color (string? color) {
if (color == null) {
/* We automatically use the accent color */
Expand Down