Skip to content

Commit 533819c

Browse files
committed
Fixing issues with ColorPicker.
1 parent 2824860 commit 533819c

4 files changed

Lines changed: 49 additions & 51 deletions

File tree

meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
project('io.github.phase1geo.annotator', ['vala', 'c'],
2-
version : '2.0.3',
2+
version : '2.1.0',
33
license: 'GPL-2.0-or-later',
44
)
55

src/Application.vala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ public class Annotator : Gtk.Application {
3636
public Annotator () {
3737

3838
Object(
39-
application_id: "com.github.phase1geo.annotator",
39+
application_id: "io.github.phase1geo.annotator",
4040
flags: ApplicationFlags.HANDLES_OPEN,
41-
version: "2.0.3"
41+
version: "2.1.0"
4242
);
4343

4444
Intl.setlocale( LocaleCategory.ALL, "" );

src/ColorPicker.vala

Lines changed: 44 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020-2026 (https://github.com/phase1geo/Annotator)
2+
* Copyright (c) 2020-2026 (https://github.com/phase1geo/Outliner)
33
*
44
* This program is free software; you can redistribute it and/or
55
* modify it under the terms of the GNU General Public
@@ -37,13 +37,16 @@ public enum ColorPickerType {
3737
public void set_image( ToggleButton btn ) {
3838
switch( this ) {
3939
case HCOLOR :
40-
btn.icon_name = "format-text-highlight";
41-
btn.child = null;
40+
var lbl = new Label( "<span size=\"large\">\u25c9</span>" ) {
41+
use_markup = true
42+
};
43+
btn.child = lbl;
4244
break;
4345
case FCOLOR : {
44-
var lbl = new Label( "<span size=\"large\">A</span>" );
45-
lbl.use_markup = true;
46-
btn.child = lbl;
46+
var lbl = new Label( "<span size=\"large\">A</span>" ) {
47+
use_markup = true
48+
};
49+
btn.child = lbl;
4750
break;
4851
}
4952
default : assert_not_reached();
@@ -54,56 +57,59 @@ public enum ColorPickerType {
5457

5558
public class ColorPicker : Box {
5659

57-
private ColorPickerType _type;
58-
private ToggleButton _toggle;
59-
private ColorChooserWidget _chooser;
60-
private MenuButton _select;
61-
private bool _ignore_active;
60+
private ColorPickerType _type;
61+
private ToggleButton _toggle;
62+
private Button _select;
63+
private bool _ignore_active;
64+
private RGBA _color;
6265

6366
public signal void color_changed( RGBA? color );
6467

65-
public ColorPicker( RGBA init_color, ColorPickerType type ) {
68+
public ColorPicker( MainWindow win, RGBA init_color, ColorPickerType type ) {
6669

67-
_type = type;
70+
Object( orientation: Orientation.HORIZONTAL );
71+
72+
_type = type;
73+
_color = init_color.copy();
6874

6975
homogeneous = true;
7076

7177
_toggle = new ToggleButton() {
7278
has_frame = false
7379
};
74-
_toggle.toggled.connect( handle_toggle );
7580
_toggle.add_css_class( type.get_css_class() );
81+
_toggle.toggled.connect( handle_toggle );
7682
type.set_image( _toggle );
7783

78-
_chooser = new ColorChooserWidget();
79-
_chooser.rgba = init_color;
80-
81-
var btn_controller = new GestureClick();
82-
var overlay = new Overlay() {
83-
margin_start = 10,
84-
margin_end = 10,
85-
margin_top = 10,
86-
margin_bottom = 10,
87-
child = _chooser
84+
var chooser = new ColorDialog() {
85+
modal = true,
86+
with_alpha = true
8887
};
89-
overlay.add_controller( btn_controller );
90-
btn_controller.pressed.connect((n_press, x, y) => {
91-
handle_chooser();
92-
});
9388

94-
_select = new MenuButton() {
89+
_select = new Button.from_icon_name( "view-more-symbolic" ) {
9590
has_frame = false
9691
};
97-
_select.add_css_class( "color_chooser" );
98-
99-
_select.popover = new Popover() {
100-
child = overlay
101-
};
92+
_select.clicked.connect(() => {
93+
chooser.choose_rgba.begin( win, _color, null, (obj, res) => {
94+
try {
95+
var rgba = chooser.choose_rgba.end( res );
96+
if( rgba != null ) {
97+
_color.free();
98+
_color = rgba.copy();
99+
update_css( rgba );
100+
set_active( true );
101+
color_changed( rgba );
102+
}
103+
} catch( Error e ) {}
104+
});
105+
});
102106

103107
append( _toggle );
104108
append( _select );
105109

106-
update_css( init_color );
110+
add_css_class( Granite.STYLE_CLASS_LINKED );
111+
112+
update_css( _color );
107113

108114
}
109115

@@ -123,8 +129,8 @@ public class ColorPicker : Box {
123129

124130
private void update_css( RGBA rgba ) {
125131
var provider = new CssProvider();
126-
var color = Utils.color_to_string( rgba );
127-
var css_data = ".%s { background: %s; }".printf( _type.get_css_class(), color );
132+
var fg = Granite.contrasting_foreground_color( rgba );
133+
var css_data = ".%s { background: %s; color: %s; }".printf( _type.get_css_class(), rgba.to_string(), fg.to_string() );
128134
provider.load_from_string( css_data );
129135
StyleContext.add_provider_for_display(
130136
Display.get_default(),
@@ -136,19 +142,11 @@ public class ColorPicker : Box {
136142
private void handle_toggle() {
137143
if( !_ignore_active ) {
138144
if( _toggle.active ) {
139-
color_changed( _chooser.rgba );
145+
color_changed( _color );
140146
} else {
141147
color_changed( null );
142148
}
143149
}
144150
}
145151

146-
private bool handle_chooser() {
147-
update_css( _chooser.rgba );
148-
set_active( true );
149-
color_changed( _chooser.rgba );
150-
_select.popover.popdown();
151-
return( true );
152-
}
153-
154152
}

src/FormatBar.vala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,12 @@ public class FormatBar : Gtk.Popover {
129129
header_menu.append( label, "formatbar.action_header(%d)".printf( i ) );
130130
}
131131

132-
_hilite = new ColorPicker( Utils.color_from_string( _canvas.items.hilite_color ), ColorPickerType.HCOLOR );
132+
_hilite = new ColorPicker( canvas.win, Utils.color_from_string( _canvas.items.hilite_color ), ColorPickerType.HCOLOR );
133133
_hilite.set_toggle_tooltip( _( "Apply Highlight Color" ) );
134134
_hilite.set_select_tooltip( _( "Change Highlight Color" ) );
135135
_hilite.color_changed.connect( handle_hilite );
136136

137-
_color = new ColorPicker( Utils.color_from_string( _canvas.items.font_color ), ColorPickerType.FCOLOR );
137+
_color = new ColorPicker( canvas.win, Utils.color_from_string( _canvas.items.font_color ), ColorPickerType.FCOLOR );
138138
_color.set_toggle_tooltip( _( "Apply Font Color" ) );
139139
_color.set_select_tooltip( _( "Change Font Color" ) );
140140
_color.color_changed.connect( handle_color );

0 commit comments

Comments
 (0)