39 Commits
Author SHA1 Message Date
NotAlexNoyle c334cf8312 Update canonical Gitea link 2026-11-03 10:48:47 -05:00
NotAlexNoyle 9e42799b2f Rework for successful build on FreeBSD 2022-05-12 00:12:41 -04:00
RonnyDo 9c9ac86520 Fix travis build problem 2020-05-10 03:18:25 +02:00
RonnyDo a56546d42a Fix build error 2020-05-10 02:51:04 +02:00
RonnyDo 7bc46bd78f add editorconfig 2020-05-03 02:04:56 +02:00
RonnyDo 10bfe6637d Merge branch 'master' of https://github.com/RonnyDo/ColorPicker 2020-05-03 02:03:49 +02:00
RonnyDo 0c069a94b6 update changelog 2020-05-03 02:03:01 +02:00
RonnyDo c169c75744 Update README.md 2020-05-03 01:28:27 +02:00
RonnyDo c1cd137825 Merge pull request #76 from clappingmonkey/master
Add Bulgarian translation.
2020-05-03 01:25:02 +02:00
clappingmonkey 03a97c55cc add file for bulgarian; edit and add bg in LINGUAS. 2020-02-17 12:25:23 +02:00
RonnyDo ed24697961 code refactoring 2020-01-05 00:18:12 +01:00
RonnyDo 6ae6ec8825 correct copy icon 2020-01-04 23:15:52 +01:00
RonnyDo 9853a843d3 Merge pull request #74 from ryonakano/fix-deprecations
Fix deprecations
2020-01-04 22:53:22 +01:00
Ryo Nakano fefbcb7b04 Fix deprecations 2020-01-03 13:21:50 +09:00
RonnyDo c042a00abd add batches 2020-01-02 22:26:58 +01:00
RonnyDo e912b19340 fix minor config issues 2020-01-02 21:43:09 +01:00
RonnyDo 27298a0de5 polish translation file fix 2020-01-02 18:12:41 +01:00
RonnyDo 1c7a98951b fix travis file 2020-01-02 17:57:19 +01:00
RonnyDo 7e97211c24 fix build warning; update build scripts 2020-01-02 17:51:26 +01:00
RonnyDo 31c1dea1de Merge pull request #65 from onderbakirtas/master
Added Turkish translation
2020-01-02 17:04:57 +01:00
RonnyDo 8f64ef46a5 Merge branch 'master' into master 2020-01-02 17:04:44 +01:00
RonnyDo 7dea159fec Merge pull request #71 from michalzkosmosu/patch-2
Update LINGUAS
2020-01-02 17:03:46 +01:00
RonnyDo b8afc8b75f Merge pull request #69 from michalzkosmosu/master
Added Polish translation
2020-01-02 17:03:29 +01:00
RonnyDo c25de0ffda Merge pull request #68 from Vistaus/master
Added Dutch translation
2020-01-02 17:03:09 +01:00
RonnyDo 90413dfa46 Merge pull request #56 from NathanBnm/patch-1
Fixed error
2020-01-02 17:01:23 +01:00
Michał Nowakowski 91a6ab530d Update LINGUAS 2019-12-12 09:24:19 +01:00
Michał Nowakowski b70938d8c2 Update LINGUAS 2019-11-24 13:31:50 +01:00
Michał Nowakowski e7579118c8 Add files via upload 2019-11-18 13:11:56 +01:00
Heimen Stoffels d5c749fd88 Update LINGUAS 2019-11-09 14:17:32 +01:00
Heimen Stoffels c2b0e1f68e Added Dutch translation 2019-11-09 14:17:18 +01:00
Önder Emre 57597a0cdb Updated LINGUAS to include Turkish language 2019-09-17 15:35:52 +03:00
Önder Emre 574eac863e Updated Turkish translation 2019-09-17 15:33:45 +03:00
Önder Emre 3eadb2bb54 Created Turkish translation 2019-09-17 15:31:02 +03:00
Nathan a11b4c2fb3 Fix 2019-01-24 20:28:04 +01:00
RonnyDo 0c82ba4cea Merge pull request #53 from waldyrious/patch-2
README: Add more info about building from source
2019-01-03 20:58:43 +01:00
RonnyDo 3dd765c6b1 Merge pull request #52 from waldyrious/patch-1
Update pt_PT.po
2019-01-03 20:57:17 +01:00
Waldir Pimenta d48422ef68 README: Add more info about building from source 2019-01-03 10:14:54 +00:00
Waldir Pimenta 35f7fa70ec Update pt_PT.po
- Add information to the opening comment
- Remove extraneous blank lines
- Don't use title case (in Portuguese it's only used for actual titles, not for regular labels)
2019-01-03 10:07:24 +00:00
Ronny f192badbf3 fixing issue #51 2019-01-02 21:45:03 +01:00
19 changed files with 330 additions and 131 deletions

No files matched your search

+16
View File
@@ -0,0 +1,16 @@
# EditorConfig <https://EditorConfig.org>
root = true
# elementary defaults
[*]
charset = utf-8
end_of_line = lf
indent_size = tab
indent_style = space
insert_final_newline = true
max_line_length = 80
tab_width = 4
# Markup files
[{*.html,*.xml,*.xml.in,*.yml}]
tab_width = 2
+3
View File
@@ -0,0 +1,3 @@
build
~*
*~
+2 -3
View File
@@ -3,7 +3,7 @@
language: node_js
node_js:
- lts/*
- 10.17.0
sudo: required
@@ -22,8 +22,7 @@ cache:
- /tmp/liftoff
install:
- npm install @elementaryos/houston
- npm i -g @elementaryos/houston
script:
- houston ci
--name-human Color Picker
+25 -7
View File
@@ -1,7 +1,11 @@
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
# Color Picker
One Color Picker to rule them all! No overhelming menus or settings. An easy tool with the features you need.
This fork has been verified to build on FreeBSD 13.1.
Features:
* Pick a color with the zoomable Magnifier
* Choose between multiple Color Formats
@@ -17,15 +21,29 @@ On elementaryOS? Simply install Color Picker from AppCenter:
</a>
</p>
Otherwise you can download and install the [latest .deb file](https://github.com/ronnydo/colorpicker/releases/latest).
For other Debian-based systems, you can download and install the [latest .deb file](https://github.com/ronnydo/colorpicker/releases/latest).
## Dependencies
You'll need the following dependencies to build:
For FreeBSD (and other systems), you will need to compile the package yourself. See the instructions below.
## Build from source
If you like to build ColorPicker yourself, take a look at the [`dev-build.sh`](dev-build.sh) file.
### Dependencies
You'll need the following dependencies to compile ColorPicker:
* granite
* libgtk-3-dev
* meson
* valac
* vala
* ninja
## Build, Install and Run
If you like to build it by your own, have a look into the dev-build.sh file.
### Example
Here's a sample list of commands for building the package from source. These have been tested to work correctly on FreeBSD 13.1.
```bash
sudo pkg install vala granite meson ninja
git clone https://git.trueog.net/NotAlexNoyle/ColorPicker
cd ColorPicker/
chmod +x dev-build.sh
./dev-build.sh
Enter your sudo password when prompted.
```
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2017 Ronny Dobra <ronnydobra at arcor dot de> -->
<component type="desktop">
<id>com.github.ronnydo.colorpicker.desktop</id>
<id>com.github.ronnydo.colorpicker</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0+</project_license>
<name>Color Picker</name>
@@ -22,6 +22,31 @@
<category>Development</category>
</categories>
<releases>
​<release version="1.1.5" date="2020-05-10" urgency="low">
​ <description>
<ul>
<li>Fix travis build problem</li>
</ul>
</description>
​</release>
​<release version="1.1.4" date="2020-05-03" urgency="low">
​ <description>
<ul>
<li>Added Bulgarian translation (kudos to @clappingmonkey)</li>
</ul>
</description>
​</release>
​<release version="1.1.3" date="2020-01-02" urgency="medium">
​ <description>
<ul>
<li>Added Polish translation (kudos to @michalzkosmosu)</li>
<li>Added Dutch translation (kudos to @Vistaus)</li>
<li>Added Turkish translation (kudos to @onderbakirtas )</li>
<li>Fix build integration (kudos to @meisenzahl)</li>
</ul>
</description>
​</release>
​<release version="1.1.2" date="2019-01-02" urgency="medium">
​ <description>
<ul>
+21
View File
@@ -1,3 +1,24 @@
com.github.ronnydo.colorpicker (1.1.5) bionic; urgency=low
* Fix travis build problem
-- Ronny Dobra <ronnydobra@arcor.de> Thu, 10 May 2020 03:31:00 +0100
com.github.ronnydo.colorpicker (1.1.4) bionic; urgency=low
* Added Bulgarian translation (kudos to @clappingmonkey)
-- Ronny Dobra <ronnydobra@arcor.de> Thu, 03 May 2020 00:31:00 +0100
com.github.ronnydo.colorpicker (1.1.3) bionic; urgency=medium
* Added Polish translation (kudos to @michalzkosmosu)
* Added Dutch translation (kudos to @Vistaus)
* Added Turkish translation (kudos to @ibrakap)
* Fix build integration (kudos to @meisenzahl)
-- Ronny Dobra <ronnydobra@arcor.de> Thu, 02 Jan 2020 20:31:00 +0100
com.github.ronnydo.colorpicker (1.1.2) bionic; urgency=medium
* Juno Release!!1! (finally)
+10 -3
View File
@@ -1,9 +1,16 @@
#!/usr/local/bin/bash
sudo rm -r build
meson build
cd build
meson configure -Dprefix=/usr
ninja
sudo cp ../data/com.github.ronnydo.colorpicker.gschema.xml /usr/share/glib-2.0/schemas/
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
./com.github.ronnydo.colorpicker
sudo cp ../data/com.github.ronnydo.colorpicker.gschema.xml /usr/local/share/glib-2.0/schemas/
sudo glib-compile-schemas /usr/local/share/glib-2.0/schemas/
G_MESSAGES_DEBUG=all ./com.github.ronnydo.colorpicker
echo "Enter your sudo password to elevate privilages for the installation..."
sudo meson install
cd ..
+5
View File
@@ -6,6 +6,11 @@ project('com.github.ronnydo.colorpicker', ['vala', 'c'],
gnome = import('gnome')
i18n = import('i18n')
add_project_arguments(
'-DGETTEXT_PACKAGE="@0@"'.format(meson.project_name()),
language: 'c'
)
conf = configuration_data()
conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
configure_file(output: 'config.h', configuration: conf)
+4
View File
@@ -1,5 +1,9 @@
bg
ca
de
es
fr
nl
tr
pl
pt_PT
+33
View File
@@ -0,0 +1,33 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the com.github.danrabbit.nimbus package.
# clappingmonkey <clappingmonkey33@gmail.com>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: com.github.ronnydo.colorpicker\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-21 20:40-0700\n"
"PO-Revision-Date: 2020-02-17 13:00+0300\n"
"Last-Translator: clappingmonkey <clappingmonkey@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Bulgarian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Color Picker"
msgstr "Color Picker"
msgid "Pick Color"
msgstr "Избери Цвят"
msgid "Format"
msgstr "Формат"
msgid "Color History"
msgstr "История"
+4 -4
View File
@@ -1,5 +1,5 @@
# French translations for com.github.ronnydo.colorpicker package.
# Copyright (C) 2017 THE com.github.ronnydo.colorpicker'S COPYRIGHT HOLDER
# Copyright (C) 2019 THE com.github.ronnydo.colorpicker'S COPYRIGHT HOLDER
# This file is distributed under the same license as the com.github.ronnydo.colorpicker package.
# Ronny Dobra <ronnydobra at arcor dot de>, 2017.
#
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: com.github.ronnydo.colorpicker\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-10 21:48-0200\n"
"PO-Revision-Date: 2018-04-10 21:48-0200\n"
"Last-Translator: Arthur Soulié <arthur.soulie@tuta.io>\n"
"PO-Revision-Date: 2019-01-24 20:27+0100\n"
"Last-Translator: NathanBnm\n"
"Language-Team: French\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -22,7 +22,7 @@ msgstr "Color Picker"
msgid "Pick Color"
msgstr "Sélectionnez une Couleur"
msgstr "Sélectionner une Couleur"
msgid "Format"
+31
View File
@@ -0,0 +1,31 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the com.github.danrabbit.nimbus package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: com.github.ronnydo.colorpicker\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-21 20:40-0700\n"
"PO-Revision-Date: 2019-11-09 14:16+0100\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.4\n"
"Last-Translator: Heimen Stoffels <vistausss@outlook.com>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: nl\n"
msgid "Color Picker"
msgstr "Kleurkiezer"
msgid "Pick Color"
msgstr "Kleur kiezen"
msgid "Format"
msgstr "Opmaak"
msgid "Color History"
msgstr "Geschiedenis"
+31
View File
@@ -0,0 +1,31 @@
# Polish translation for Ronny Dobra's Color Picker.
# This file is distributed under the same license as the com.github.danrabbit.nimbus package.
# Michał Nowakowski <nowakowski@offshore.rocks>, 2019.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: com.github.ronnydo.colorpicker\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-21 20:40-0700\n"
"PO-Revision-Date: 2019-11-17 17:27-0700\n"
"Last-Translator: Michał Nowakowski <nowakowski@offshore.rocks>\n"
"Language-Team: none\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Color Picker"
msgstr "Próbnik koloru"
msgid "Pick Color"
msgstr "Wybierz kolor"
msgid "Format"
msgstr "Format"
msgid "Color History"
msgstr "Historia kolorów"
+5 -7
View File
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# Portuguese translation for ColorPicker.
# Copyright (C) 2019 The ColorPicker contributors
# This file is distributed under the same license as the com.github.danrabbit.nimbus package.
# Diogo Oliveira <https://github.com/drom98>, YEAR.
# Diogo Oliveira <https://github.com/drom98>, 2018.
#
#, fuzzy
@@ -21,13 +21,11 @@ msgstr ""
msgid "Color Picker"
msgstr "Color Picker"
msgid "Pick Color"
msgstr "Selecionar Cor"
msgstr "Selecionar cor"
msgid "Format"
msgstr "Formato"
msgid "Color History"
msgstr "Histórico de Cores"
msgstr "Histórico de cores"
+32
View File
@@ -0,0 +1,32 @@
# Turkish translations for com.github.ronnydo.colorpicker package.
# Copyright (C) 2019 THE com.github.ronnydo.colorpicker'S COPYRIGHT HOLDER
# This file is distributed under the same license as the com.github.ronnydo.colorpicker package.
# Önder Bakırtaş <onderbakirtas at gmail dot com>, 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: com.github.ronnydo.colorpicker\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-21 20:40-0700\n"
"PO-Revision-Date: 2019-09-17 20:40-0700\n"
"Last-Translator: Önder Bakırtaş <onderbakirtas at gmail dot com>\n"
"Language-Team: Turkish\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "Color Picker"
msgstr "Renk Seçici"
msgid "Pick Color"
msgstr "Renk Seç"
msgid "Format"
msgstr "Biçim"
msgid "Color History"
msgstr "Renk Geçmişi"
+4 -2
View File
@@ -45,9 +45,11 @@ namespace ColorPicker {
app_window.show_all ();
var quit_action = new SimpleAction ("quit", null);
add_action (quit_action);
add_accelerator ("<Control>q", "app.quit", null);
//add_accelerator ("<Control>q", "app.quit", null);
set_accels_for_action ("app.quit", {"<Control>q"});
quit_action.activate.connect (() => {
if (app_window != null) {
+7 -8
View File
@@ -75,7 +75,7 @@ namespace ColorPicker {
var format_entry = new Gtk.Entry ();
format_entry.placeholder_text = ext_active_color.to_css_rgb_string ();
format_entry.set_editable (false);
format_entry.set_icon_from_icon_name (Gtk.EntryIconPosition.SECONDARY, "edit-copy");
format_entry.set_icon_from_icon_name (Gtk.EntryIconPosition.SECONDARY, "edit-copy-symbolic");
format_entry.margin_end = 6;
var color_format_combobox = new Gtk.ComboBoxText ();
@@ -170,8 +170,8 @@ namespace ColorPicker {
this.present ();
});
var win = mouse_position.get_window ();
//var win = mouse_position.get_window ();
mouse_position.picked.connect ((t, color) => {
ext_active_color = (ExtRGBA) color;
color_area.set_color (ext_active_color);
@@ -203,17 +203,16 @@ namespace ColorPicker {
Gtk.Clipboard.get_default (this.get_display ()).set_text (format_entry.get_text (), -1);
}
});
//color_format_combobox.changed.connect (color_format_changed);
color_format_combobox.changed.connect (() => {
int id = color_format_combobox.get_active ();
update_color_format_combobox_text (format_entry, id);
ColorPicker.settings.color_format_index = id;
});
// handle changed color in color history
color_history.color_clicked.connect ((t, color) => {
ext_active_color = (ExtRGBA) color;
+1 -1
View File
@@ -180,7 +180,7 @@ namespace ColorPicker.Widgets {
ctx.rel_line_to (triangle_width / 2, -1 * triangle_height);
ctx.rel_line_to (triangle_width / 2, triangle_height);
ctx.close_path ();
Gdk.cairo_set_source_rgba (ctx, style_context.get_background_color(Gtk.StateFlags.NORMAL));
Gdk.cairo_set_source_rgba (ctx, style_context.get_color (Gtk.StateFlags.NORMAL));
ctx.fill ();
+70 -95
View File
@@ -29,14 +29,12 @@ namespace ColorPicker.Widgets {
public signal void moved (Gdk.RGBA color);
const string dark_border_color_string = "#333333";
private Gdk.RGBA dark_border_color = Gdk.RGBA();
private Gdk.RGBA dark_border_color = Gdk.RGBA();
const string bright_border_color_string = "#FFFFFF";
private Gdk.RGBA bright_border_color = Gdk.RGBA();
private int mouse_pos_x = 0;
private int mouse_pos_y = 0;
// 1. Snapsize is the amount of pixel going to be magnified by the zoomlevel.
// 2. The snapsize must be odd to have a 1px magnifier center.
// 3. Asure that snapsize*max_zoomlevel+shadow_width*2 is smaller than 2 * get_screen ().get_display ().get_maximal_cursor_size()
@@ -46,16 +44,17 @@ namespace ColorPicker.Widgets {
// and https://github.com/RonnyDo/ColorPicker/issues/19
int snapsize = 31;
int min_zoomlevel = 2;
int max_zoomlevel = 7;
int max_zoomlevel = 14;
//int max_zoomlevel = 7;
int zoomlevel = 3;
int shadow_width = 15;
private Gdk.Cursor magnifier = null;
construct {
type = Gtk.WindowType.POPUP;
}
public Picker () {
stick ();
@@ -63,22 +62,24 @@ namespace ColorPicker.Widgets {
set_deletable (false);
set_skip_taskbar_hint (true);
set_skip_pager_hint (true);
set_keep_above (true);
dark_border_color.parse (dark_border_color_string);
set_keep_above (true);
dark_border_color.parse (dark_border_color_string);
bright_border_color.parse (bright_border_color_string);
// restore zoomlevel
if (settings.zoomlevel >= min_zoomlevel && settings.zoomlevel <= max_zoomlevel) {
zoomlevel = settings.zoomlevel;
}
var screen = get_screen ();
set_default_size (screen.get_width (), screen.get_height ());
}
var display = Gdk.Display.get_default ();
Gdk.Monitor monitor = display.get_primary_monitor ();
Gdk.Rectangle geom = monitor.get_geometry ();
set_default_size (geom.width, geom.height);
}
public override bool button_release_event (Gdk.EventButton e) {
// button_1 is left mouse button
if (e.button == 1) {
@@ -91,24 +92,24 @@ namespace ColorPicker.Widgets {
return true;
}
public override bool draw (Cairo.Context cr) {
public override bool draw (Cairo.Context cr) {
return false;
}
public override bool motion_notify_event (Gdk.EventMotion e) {
Gdk.RGBA color = get_color_at ((int) e.x_root, (int) e.y_root);
moved (color);
set_magnifier_cursor ();
return true;
return true;
}
public override bool scroll_event (Gdk.EventScroll e) {
switch (e.direction) {
case Gdk.ScrollDirection.UP:
@@ -132,25 +133,26 @@ namespace ColorPicker.Widgets {
public void set_magnifier_cursor () {
// draw cursor
var manager = Gdk.Display.get_default ().get_default_seat ();
// get cursor position
int px, py;
get_pointer (out px, out py);
get_window ().get_device_position (manager.get_pointer (), out px, out py, null);
var radius = snapsize * zoomlevel / 2;
// take screenshot
var latest_pb = snap (px - snapsize / 2, py - snapsize / 2, snapsize, snapsize);
// get a small area (snap) meant to be zoomed
var snapped_pixbuf = snap (px - snapsize / 2, py - snapsize / 2, snapsize, snapsize);
// Zoom that screenshot up, and grab a snapsize-sized piece from the middle
var scaled_pb = latest_pb.scale_simple (snapsize * zoomlevel + shadow_width * 2 , snapsize * zoomlevel + shadow_width * 2 , Gdk.InterpType.NEAREST);
var scaled_pb = snapped_pixbuf.scale_simple (snapsize * zoomlevel + shadow_width * 2 , snapsize * zoomlevel + shadow_width * 2 , Gdk.InterpType.NEAREST);
// Create the base surface for our cursor
var base_surface = new Cairo.ImageSurface (Cairo.Format.ARGB32, snapsize * zoomlevel + shadow_width * 2 , snapsize * zoomlevel + shadow_width * 2);
var base_context = new Cairo.Context (base_surface);
// Create the circular path on our base surface
base_context.arc (radius + shadow_width, radius + shadow_width, radius, 0, 2 * Math.PI);
@@ -160,10 +162,10 @@ namespace ColorPicker.Widgets {
// Clip to that circular path, keeping the path around for later, and paint the pasted screenshot
base_context.save ();
base_context.clip_preserve ();
base_context.paint ();
base_context.paint ();
base_context.restore ();
// Draw a shadow as outside magnifier border
double shadow_alpha = 0.6;
base_context.set_line_width (1);
@@ -204,33 +206,21 @@ namespace ColorPicker.Widgets {
base_context.stroke ();
// turn the base surface into a pixbuf and thence a cursor
var drawn_pb = Gdk.pixbuf_get_from_surface(base_surface, 0, 0, base_surface.get_width(), base_surface.get_height());
magnifier = new Gdk.Cursor.from_pixbuf(
magnifier = new Gdk.Cursor.from_surface(
get_screen ().get_display (),
drawn_pb,
drawn_pb.get_width () / 2,
drawn_pb.get_height () / 2);
/*
uint max_cursor_width, max_cursor_height, default_cursor_width, default_cursor_height;;
get_screen ().get_display ().get_maximal_cursor_size (out max_cursor_width, out max_cursor_height);
print ("\n\nCursor size is " + drawn_pb.get_width().to_string () + "x" + drawn_pb.get_height().to_string ());
print ("\nAllowed size is " + max_cursor_width.to_string () + "x" + max_cursor_height.to_string ());
print ("\nDefault size is " + get_screen ().get_display ().get_default_cursor_size ().to_string ());
*/
// Set the cursor
var manager = Gdk.Display.get_default ().get_device_manager ();
manager.get_client_pointer ().grab (
base_surface,
base_surface.get_width () / 2,
base_surface.get_height () / 2);
// Set the cursor
manager.grab (
get_window (),
Gdk.GrabOwnership.APPLICATION,
Gdk.SeatCapabilities.ALL,
true,
Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.SCROLL_MASK,
magnifier,
Gdk.CURRENT_TIME);
new Gdk.Event (Gdk.EventType.BUTTON_PRESS | Gdk.EventType.MOTION_NOTIFY | Gdk.EventType.SCROLL),
null);
}
@@ -243,10 +233,10 @@ namespace ColorPicker.Widgets {
public override bool key_press_event (Gdk.EventKey e) {
var manager = Gdk.Display.get_default ().get_default_seat ();
int px, py;
get_pointer (out px, out py);
var manager = Gdk.Display.get_default ().get_device_manager ();
get_window ().get_device_position (manager.get_pointer (), out px, out py, null);
switch (e.keyval) {
case Gdk.Key.Escape:
cancelled ();
@@ -256,16 +246,16 @@ namespace ColorPicker.Widgets {
picked (color);
break;
case Gdk.Key.Up:
manager.get_client_pointer ().warp (get_screen (), px, py - 1);
manager.get_pointer ().warp (get_screen (), px, py - 1);
break;
case Gdk.Key.Down:
manager.get_client_pointer ().warp (get_screen (), px, py + 1);
manager.get_pointer ().warp (get_screen (), px, py + 1);
break;
case Gdk.Key.Left:
manager.get_client_pointer ().warp (get_screen (), px - 1, py);
manager.get_pointer ().warp (get_screen (), px - 1, py);
break;
case Gdk.Key.Right:
manager.get_client_pointer ().warp (get_screen (), px + 1, py);
manager.get_pointer ().warp (get_screen (), px + 1, py);
break;
}
@@ -299,38 +289,23 @@ namespace ColorPicker.Widgets {
public override void show_all () {
base.show_all ();
var manager = Gdk.Display.get_default ().get_device_manager ();
var pointer = manager.get_client_pointer ();
var keyboard = pointer.get_associated_device ();
var manager = Gdk.Display.get_default ().get_default_seat ();
var window = get_window ();
var status = pointer.grab (window,
Gdk.GrabOwnership.NONE,
var status = manager.grab (window,
Gdk.SeatCapabilities.ALL,
false,
Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.POINTER_MOTION_MASK,
new Gdk.Cursor.for_display (window.get_display (), Gdk.CursorType.CROSSHAIR),
Gtk.get_current_event_time ());
new Gdk.Event (Gdk.EventType.BUTTON_PRESS | Gdk.EventType.BUTTON_RELEASE | Gdk.EventType.MOTION_NOTIFY),
null);
if (status != Gdk.GrabStatus.SUCCESS) {
pointer.ungrab (Gtk.get_current_event_time ());
manager.ungrab ();
}
// show magnifier
set_magnifier_cursor ();
if (keyboard != null) {
status = keyboard.grab (window,
Gdk.GrabOwnership.NONE,
false,
Gdk.EventMask.KEY_PRESS_MASK,
null,
Gtk.get_current_event_time ());
if (status != Gdk.GrabStatus.SUCCESS) {
keyboard.ungrab (Gtk.get_current_event_time ());
}
}
}
public new void close () {