Skip to content

Commit bbf3e04

Browse files
committed
fix: update app crashing on statup
fix #149
1 parent b2d7db0 commit bbf3e04

File tree

4 files changed

+53
-37
lines changed

4 files changed

+53
-37
lines changed

src/application.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,4 +537,16 @@ export class Application extends Adw.Application {
537537

538538
window.present();
539539
}
540+
541+
vfunc_startup() {
542+
super.vfunc_startup();
543+
544+
const style_manager = Adw.StyleManager.get_default();
545+
function setColorScheme() {
546+
const color_scheme = settings.get_int("color-scheme");
547+
style_manager.set_color_scheme(color_scheme);
548+
}
549+
setColorScheme();
550+
settings.connect("changed::color-scheme", setColorScheme);
551+
}
540552
}

src/themeselector.ts

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ import Gtk from "gi://Gtk?version=4.0";
33
import Adw from "gi://Adw";
44
import Gdk from "gi://Gdk?version=4.0";
55

6-
export const style_manager = Adw.StyleManager.get_default();
7-
let provider: Gtk.CssProvider | null;
8-
96
export class ThemeSelector extends Gtk.Widget {
107
static {
118
GObject.registerClass(
@@ -34,38 +31,40 @@ export class ThemeSelector extends Gtk.Widget {
3431
theme: string;
3532
_follow!: Gtk.CheckButton;
3633

34+
style_manager!: Adw.StyleManager;
35+
3736
constructor(params = {}) {
3837
super(params);
3938

40-
style_manager.connect(
39+
this.style_manager = Adw.StyleManager.get_default();
40+
41+
this.style_manager.connect(
4142
"notify::system-supports-color-schemes",
4243
this._on_notify_system_supports_color_schemes.bind(this),
4344
);
4445
this._on_notify_system_supports_color_schemes();
4546

46-
const dark = style_manager.get_dark();
47+
const dark = this.style_manager.get_dark();
4748
this.theme = dark ? "dark" : "light";
4849

49-
style_manager.connect("notify::dark", this._on_notify_dark.bind(this));
50+
this.style_manager.connect("notify::dark", this._on_notify_dark.bind(this));
5051
this._on_notify_dark();
5152

52-
if (!provider) {
53-
provider = new Gtk.CssProvider();
54-
provider.load_from_resource("/com/vixalien/sticky/theme-selector.css");
55-
Gtk.StyleContext.add_provider_for_display(
56-
Gdk.Display.get_default()!,
57-
provider,
58-
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION,
59-
);
60-
}
53+
const provider = new Gtk.CssProvider();
54+
provider.load_from_resource("/com/vixalien/sticky/theme-selector.css");
55+
Gtk.StyleContext.add_provider_for_display(
56+
Gdk.Display.get_default()!,
57+
provider,
58+
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION,
59+
);
6160
}
6261

6362
_on_notify_system_supports_color_schemes() {
64-
this._follow.set_visible(style_manager.get_system_supports_color_schemes());
63+
this._follow.set_visible(this.style_manager.get_system_supports_color_schemes());
6564
}
6665

6766
_on_notify_dark() {
68-
if (style_manager.get_dark()) this.add_css_class("dark");
67+
if (this.style_manager.get_dark()) this.add_css_class("dark");
6968
else this.remove_css_class("dark");
7069
}
7170
}

src/util.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,6 @@ const get_settings = () => ({
9595
CONFIRM_DELETE: settings.get_boolean("confirm-delete"),
9696
});
9797

98-
const style_manager = Adw.StyleManager.get_default();
99-
function setColorScheme() {
100-
const color_scheme = settings.get_int("color-scheme");
101-
style_manager.set_color_scheme(color_scheme);
102-
}
103-
setColorScheme();
104-
settings.connect("changed::color-scheme", setColorScheme);
105-
10698
export let SETTINGS = get_settings();
10799

108100
settings.connect("changed", () => {

src/view.ts

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
import GObject from "gi://GObject";
2727
import Gtk from "gi://Gtk?version=4.0";
2828
import Pango from "gi://Pango";
29+
import Adw from "gi://Adw?version=1";
2930

3031
import { find } from "linkifyjs";
3132

3233
import { ITag, Note } from "./util.js";
33-
import { style_manager } from "./themeselector.js";
3434
import { Style } from "./util.js";
3535

3636
class AbstractStickyNote extends Gtk.TextView {
@@ -97,11 +97,15 @@ class AbstractStickyNote extends Gtk.TextView {
9797

9898
remove_listeners() {}
9999

100+
style_manager!: Adw.StyleManager;
101+
100102
constructor(
101103
note?: Note,
102104
) {
103105
super();
104106

107+
this.style_manager = Adw.StyleManager.get_default();
108+
105109
this.register_tags();
106110
if (note) this.note = note;
107111

@@ -159,7 +163,7 @@ class AbstractStickyNote extends Gtk.TextView {
159163
if (!this.note) return;
160164
let color;
161165

162-
if (style_manager.dark) {
166+
if (this.style_manager.dark) {
163167
const accent_color = this.get_style_context().lookup_color(
164168
"accent_fg_color",
165169
);
@@ -190,8 +194,8 @@ class AbstractStickyNote extends Gtk.TextView {
190194

191195
this.link_tag.underline = Pango.Underline.SINGLE;
192196

193-
if (style_manager.system_supports_color_schemes) {
194-
style_manager.connect(
197+
if (this.style_manager.system_supports_color_schemes) {
198+
this.style_manager.connect(
195199
"notify::dark",
196200
this.update_link_tag_color.bind(this),
197201
);
@@ -415,7 +419,7 @@ export class WriteableStickyNote extends AbstractStickyNote {
415419
constructor(note?: Note) {
416420
super(note);
417421

418-
this.buffer.connect_after('insert-text', (buffer, loc, text, length) => {
422+
this.buffer.connect_after("insert-text", (buffer, loc, text, length) => {
419423
this.on_text_inserted(buffer, loc, text, length);
420424
});
421425

@@ -475,8 +479,13 @@ export class WriteableStickyNote extends AbstractStickyNote {
475479
this.change("tags", tags);
476480
}
477481

478-
on_text_inserted(buffer: Gtk.TextBuffer, loc: Gtk.TextIter, text: string, length: number) {
479-
if (text === '\n') {
482+
on_text_inserted(
483+
buffer: Gtk.TextBuffer,
484+
loc: Gtk.TextIter,
485+
text: string,
486+
length: number,
487+
) {
488+
if (text === "\n") {
480489
const start_iter = loc.copy();
481490
start_iter.backward_char();
482491
start_iter.set_line_offset(0);
@@ -494,15 +503,17 @@ export class WriteableStickyNote extends AbstractStickyNote {
494503
start_iter.set_line_offset(0);
495504
buffer.delete(start_iter, loc);
496505
} else {
497-
buffer.insert(loc, bullet + ' ', -1);
506+
buffer.insert(loc, bullet + " ", -1);
498507
}
499-
} else{
508+
} else {
500509
const search_limit = start_iter.copy();
501510
const search_end = start_iter.copy();
502511
search_limit.forward_chars(10);
503512

504-
search_end.forward_find_char((ch) => {return ch === ' '}, search_limit);
505-
search_end.forward_char()
513+
search_end.forward_find_char((ch) => {
514+
return ch === " ";
515+
}, search_limit);
516+
search_end.forward_char();
506517
const chars = buffer.get_text(start_iter, search_end, false);
507518

508519
const ordered_regex_pattern = /^\d+\. $/;
@@ -513,7 +524,9 @@ export class WriteableStickyNote extends AbstractStickyNote {
513524
const line_end = loc.copy();
514525
line_end.backward_char();
515526

516-
if (line_end.get_line_offset() === current_order.toString().length + 2) {
527+
if (
528+
line_end.get_line_offset() === current_order.toString().length + 2
529+
) {
517530
start_iter.set_line_offset(0);
518531
buffer.delete(start_iter, loc);
519532
} else {

0 commit comments

Comments
 (0)