Compare commits
100 Commits
fix-cursor
...
4.2.0
Author | SHA1 | Date | |
---|---|---|---|
|
ccbbc2f2ba | ||
|
8bc2ee63eb | ||
|
68d634b31c | ||
|
d1c66f75e3 | ||
|
eba9cd8775 | ||
|
9606945ed8 | ||
|
d50d382032 | ||
|
5da3308572 | ||
|
fb48699ba4 | ||
|
56d37ceed0 | ||
|
b77e05ce37 | ||
|
ba4e66d189 | ||
|
2c33550048 | ||
|
3add99a9a8 | ||
|
d4ea2e848d | ||
|
4c06889243 | ||
|
ef544a8c3b | ||
|
6db9215dd1 | ||
|
8b64f0147c | ||
|
5847f75c57 | ||
|
ce2c3efc91 | ||
|
2599c5aed3 | ||
|
bca39e2605 | ||
|
ca0e1be03e | ||
|
6569a877d8 | ||
|
38fff37dae | ||
|
06be1f8b52 | ||
|
43a1641dd7 | ||
|
b21fba117f | ||
|
37d5f93610 | ||
|
52aea624a6 | ||
|
711acb6aa7 | ||
|
3e94c5afa4 | ||
|
a75c038e09 | ||
|
146069058f | ||
|
2d5dd7b3d7 | ||
|
0904dd29c2 | ||
|
279b9347fd | ||
|
2a2ae16894 | ||
|
3e1a8aa286 | ||
|
db126a19b6 | ||
|
ffa50f4c24 | ||
|
e1866d8fbe | ||
|
d24a0e9606 | ||
|
b8693cc4f4 | ||
|
5d5adf6ee7 | ||
|
dda69bd16d | ||
|
926b855d14 | ||
|
afc3de6e04 | ||
|
45f4090eec | ||
|
4cf69fbc5e | ||
|
0c6da97147 | ||
|
8994635d39 | ||
|
7644605dfc | ||
|
97a9e23b85 | ||
|
478ecf8db4 | ||
|
0e857862ab | ||
|
2bb4859031 | ||
|
7aef77a21a | ||
|
e7f9d56da5 | ||
|
34883b7142 | ||
|
23706a4a6d | ||
|
c52c944e33 | ||
|
8540bea65e | ||
|
8ea4721d1e | ||
|
e8a6b504f3 | ||
|
06ab8f2167 | ||
|
b5558f3e97 | ||
|
bdd281c9ea | ||
|
c9ab7c5750 | ||
|
01f4e5c8cd | ||
|
8a567d7932 | ||
|
dbcd24adf4 | ||
|
f6f07ba238 | ||
|
3ab07203ce | ||
|
6ba414216c | ||
|
775b45ef57 | ||
|
23cb72875d | ||
|
5940de98dd | ||
|
4028bd5bce | ||
|
b5608e93d2 | ||
|
1ea2ea520f | ||
|
922b2683b3 | ||
|
6dcef28e12 | ||
|
08f68cce40 | ||
|
7849590a82 | ||
|
c9b312c860 | ||
|
6110980012 | ||
|
019855a27f | ||
|
cdfdf031b5 | ||
|
f131d68fef | ||
|
3014649455 | ||
|
2496ab0902 | ||
|
50d42093b5 | ||
|
44481d355e | ||
|
6f82408056 | ||
|
cc64dbafbc | ||
|
50b70298c0 | ||
|
bd7df4b816 | ||
|
086e1ed39f |
15
NEWS
@@ -1,13 +1,19 @@
|
||||
Overview of Changes in 4.2.0
|
||||
============================
|
||||
|
||||
* Label: Fix tooltips on links
|
||||
* GtkFileChooser: Make the location entry work again
|
||||
|
||||
* GtlLabel: Fix tooltips on links
|
||||
|
||||
* GtkTextView: Make scrolling work better with renderers
|
||||
|
||||
* X11:
|
||||
- Fix damage handling
|
||||
- Trap errors from the COW
|
||||
|
||||
* Windows: Use a visible scroll cursor
|
||||
* Windows:
|
||||
- Use a visible scroll cursor
|
||||
- Include more icons for icon-theme-less situations
|
||||
|
||||
* Wayland: Fix key event matching with mismatched layouts.
|
||||
This was causing keyboard accelerators to trigger unexpectedly
|
||||
@@ -29,11 +35,16 @@ Overview of Changes in 4.2.0
|
||||
* build:
|
||||
- Fix build with cairo as subproject
|
||||
- Disable g_assert in release builds
|
||||
- Include gi-docgen as subproject
|
||||
- Include generated docs
|
||||
|
||||
* Translation updates:
|
||||
Hebrew
|
||||
Hungarian
|
||||
Italian
|
||||
Polish
|
||||
Portuguese
|
||||
Swedish
|
||||
Ukrainian
|
||||
|
||||
|
||||
|
39
build-aux/meson/dist-data.py
Normal file
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
from pathlib import PurePath
|
||||
|
||||
|
||||
stylesheets = [
|
||||
'gtk/theme/Adwaita/Adwaita.css',
|
||||
'gtk/theme/Adwaita/Adwaita-dark.css',
|
||||
'gtk/theme/HighContrast/HighContrast.css',
|
||||
'gtk/theme/HighContrast/HighContrast-dark.css',
|
||||
]
|
||||
|
||||
references = [
|
||||
'docs/reference/gtk/gtk4',
|
||||
'docs/reference/gsk/gsk4',
|
||||
'docs/reference/gdk/gdk4',
|
||||
'docs/reference/gdk/gdk4-wayland',
|
||||
'docs/reference/gdk/gdk4-x11',
|
||||
]
|
||||
|
||||
sourceroot = os.environ.get('MESON_SOURCE_ROOT')
|
||||
buildroot = os.environ.get('MESON_BUILD_ROOT')
|
||||
distroot = os.environ.get('MESON_DIST_ROOT')
|
||||
|
||||
for stylesheet in stylesheets:
|
||||
stylesheet_path = PurePath(stylesheet)
|
||||
src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss'))
|
||||
dst = PurePath(distroot, stylesheet_path)
|
||||
subprocess.call(['sassc', '-a', '-M', '-t', 'compact', src, dst])
|
||||
|
||||
for reference in references:
|
||||
src_path = os.path.join(buildroot, reference)
|
||||
if os.path.isdir(src_path):
|
||||
dst_path = os.path.join(distroot, reference)
|
||||
shutil.copytree(src_path, dst_path)
|
@@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
from pathlib import PurePath
|
||||
import subprocess
|
||||
|
||||
stylesheets = [ 'gtk/theme/Adwaita/Adwaita.css',
|
||||
'gtk/theme/Adwaita/Adwaita-dark.css',
|
||||
'gtk/theme/HighContrast/HighContrast.css',
|
||||
'gtk/theme/HighContrast/HighContrast-dark.css' ]
|
||||
|
||||
sourceroot = os.environ.get('MESON_SOURCE_ROOT')
|
||||
distroot = os.environ.get('MESON_DIST_ROOT')
|
||||
|
||||
for stylesheet in stylesheets:
|
||||
stylesheet_path = PurePath(stylesheet)
|
||||
src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss'))
|
||||
dst = PurePath(distroot, stylesheet_path)
|
||||
subprocess.call(['sassc', '-a', '-M', '-t', 'compact', src, dst])
|
@@ -128,6 +128,9 @@
|
||||
<file>gtkfishbowl.c</file>
|
||||
<file>gtkfishbowl.h</file>
|
||||
</gresource>
|
||||
<gresource prefix="/frames">
|
||||
<file>frames.ui</file>
|
||||
</gresource>
|
||||
<gresource prefix="/gears">
|
||||
<file>gtkgears.c</file>
|
||||
<file>gtkgears.h</file>
|
||||
@@ -276,6 +279,7 @@
|
||||
<file>fishbowl.c</file>
|
||||
<file>fixed.c</file>
|
||||
<file>flowbox.c</file>
|
||||
<file>frames.c</file>
|
||||
<file>font_features.c</file>
|
||||
<file>fontplane.c</file>
|
||||
<file>fontrendering.c</file>
|
||||
|
165
demos/gtk-demo/frames.c
Normal file
@@ -0,0 +1,165 @@
|
||||
/* Benchmark/Frames
|
||||
*
|
||||
* This demo is intentionally as simple as possible, to see what
|
||||
* framerate the windowing system can deliver on its own.
|
||||
*
|
||||
* It does nothing but change the drawn color, for every frame.
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GtkWidget parent_instance;
|
||||
|
||||
GdkRGBA color1;
|
||||
GdkRGBA color2;
|
||||
guint64 time2;
|
||||
float t;
|
||||
|
||||
guint tick_cb;
|
||||
} ColorWidget;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GtkWidgetClass parent_class;
|
||||
} ColorWidgetClass;
|
||||
|
||||
G_DEFINE_TYPE (ColorWidget, color_widget, GTK_TYPE_WIDGET)
|
||||
|
||||
#define TIME_SPAN (3.0 * G_TIME_SPAN_SECOND)
|
||||
|
||||
static gboolean
|
||||
change_color (GtkWidget *widget,
|
||||
GdkFrameClock *frame_clock,
|
||||
gpointer data)
|
||||
{
|
||||
ColorWidget *color = (ColorWidget *)widget;
|
||||
gint64 time;
|
||||
|
||||
time = gdk_frame_clock_get_frame_time (frame_clock);
|
||||
|
||||
if (time >= color->time2)
|
||||
{
|
||||
color->time2 = time + TIME_SPAN;
|
||||
|
||||
color->color1 = color->color2;
|
||||
color->color2.red = g_random_double_range (0, 1);
|
||||
color->color2.green = g_random_double_range (0, 1);
|
||||
color->color2.blue = g_random_double_range (0, 1);
|
||||
color->color2.alpha = 1;
|
||||
}
|
||||
|
||||
color->t = 1 - (color->time2 - time) / TIME_SPAN;
|
||||
|
||||
gtk_widget_queue_draw (widget);
|
||||
|
||||
return G_SOURCE_CONTINUE;
|
||||
}
|
||||
|
||||
static void
|
||||
color_widget_snapshot (GtkWidget *widget,
|
||||
GtkSnapshot *snapshot)
|
||||
{
|
||||
ColorWidget *color = (ColorWidget *)widget;
|
||||
float w, h;
|
||||
GdkRGBA c;
|
||||
|
||||
w = gtk_widget_get_width (widget);
|
||||
h = gtk_widget_get_height (widget);
|
||||
|
||||
c.red = (1 - color->t) * color->color1.red + color->t * color->color2.red;
|
||||
c.green = (1 - color->t) * color->color1.green + color->t * color->color2.green;
|
||||
c.blue = (1 - color->t) * color->color1.blue + color->t * color->color2.blue;
|
||||
c.alpha = 1;
|
||||
|
||||
gtk_snapshot_append_color (snapshot, &c, &GRAPHENE_RECT_INIT (0, 0, w, h));
|
||||
}
|
||||
|
||||
static void
|
||||
color_widget_init (ColorWidget *color)
|
||||
{
|
||||
gtk_widget_add_tick_callback (GTK_WIDGET (color), change_color, NULL, NULL);
|
||||
gtk_widget_set_hexpand (GTK_WIDGET (color), TRUE);
|
||||
gtk_widget_set_vexpand (GTK_WIDGET (color), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
color_widget_class_init (ColorWidgetClass *class)
|
||||
{
|
||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
|
||||
|
||||
widget_class->snapshot = color_widget_snapshot;
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
color_widget_new (void)
|
||||
{
|
||||
return g_object_new (color_widget_get_type (), NULL);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
update_fps_label (gpointer data)
|
||||
{
|
||||
GtkWidget *label = GTK_WIDGET (data);
|
||||
GdkFrameClock *frame_clock;
|
||||
|
||||
frame_clock = gtk_widget_get_frame_clock (label);
|
||||
|
||||
if (frame_clock)
|
||||
{
|
||||
char *fps;
|
||||
|
||||
fps = g_strdup_printf ("%.2f fps", gdk_frame_clock_get_fps (frame_clock));
|
||||
gtk_label_set_label (GTK_LABEL (label), fps);
|
||||
g_free (fps);
|
||||
}
|
||||
else
|
||||
gtk_label_set_label (GTK_LABEL (label), "");
|
||||
|
||||
return G_SOURCE_CONTINUE;
|
||||
}
|
||||
|
||||
static void
|
||||
remove_id (gpointer data)
|
||||
{
|
||||
guint id = GPOINTER_TO_UINT (data);
|
||||
|
||||
g_source_remove (id);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_frames (GtkWidget *do_widget)
|
||||
{
|
||||
static GtkWidget *window = NULL;
|
||||
|
||||
if (!window)
|
||||
{
|
||||
GtkBuilder *builder;
|
||||
GtkWidget *box;
|
||||
GtkWidget *label;
|
||||
guint id;
|
||||
|
||||
builder = gtk_builder_new_from_resource ("/frames/frames.ui");
|
||||
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
|
||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||
gtk_window_set_display (GTK_WINDOW (window),
|
||||
gtk_widget_get_display (do_widget));
|
||||
|
||||
label = GTK_WIDGET (gtk_builder_get_object (builder, "fps"));
|
||||
box = GTK_WIDGET (gtk_builder_get_object (builder, "box"));
|
||||
|
||||
gtk_box_append (GTK_BOX (box), color_widget_new ());
|
||||
|
||||
id = g_timeout_add (500, update_fps_label, label);
|
||||
g_object_set_data_full (G_OBJECT (label), "tick_cb",
|
||||
GUINT_TO_POINTER (id), remove_id);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
gtk_widget_show (window);
|
||||
else
|
||||
gtk_window_destroy (GTK_WINDOW (window));
|
||||
|
||||
return window;
|
||||
}
|
24
demos/gtk-demo/frames.ui
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<object class="GtkWindow" id="window">
|
||||
<property name="resizable">1</property>
|
||||
<property name="default-width">600</property>
|
||||
<property name="default-height">400</property>
|
||||
<property name="title">Frames</property>
|
||||
<child type="titlebar">
|
||||
<object class="GtkHeaderBar" id="header">
|
||||
<child type="end">
|
||||
<object class="GtkLabel" id="fps">
|
||||
<attributes>
|
||||
<attribute name="font-features" value="tnum=1"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="box">
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
@@ -29,6 +29,7 @@ demos = files([
|
||||
'fishbowl.c',
|
||||
'fixed.c',
|
||||
'fontrendering.c',
|
||||
'frames.c',
|
||||
'gears.c',
|
||||
'gestures.c',
|
||||
'glarea.c',
|
||||
|
@@ -41,11 +41,26 @@ open_clicked_cb (GtkWidget *button,
|
||||
"_Open",
|
||||
"_Cancel");
|
||||
|
||||
filter = gtk_file_filter_new ();
|
||||
gtk_file_filter_add_pattern (filter, "*");
|
||||
gtk_file_filter_set_name (filter, "All Files");
|
||||
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
|
||||
g_object_unref (filter);
|
||||
|
||||
filter = gtk_file_filter_new ();
|
||||
gtk_file_filter_add_mime_type (filter, "image/*");
|
||||
gtk_file_filter_set_name (filter, "Images");
|
||||
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
|
||||
g_object_unref (filter);
|
||||
|
||||
filter = gtk_file_filter_new ();
|
||||
gtk_file_filter_add_mime_type (filter, "video/*");
|
||||
gtk_file_filter_set_name (filter, "Video");
|
||||
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
|
||||
|
||||
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter);
|
||||
g_object_unref (filter);
|
||||
|
||||
gtk_native_dialog_set_modal (GTK_NATIVE_DIALOG (dialog), TRUE);
|
||||
g_signal_connect (dialog, "response", G_CALLBACK (open_dialog_response_cb), video);
|
||||
gtk_native_dialog_show (GTK_NATIVE_DIALOG (dialog));
|
||||
|
After Width: | Height: | Size: 234 B |
After Width: | Height: | Size: 231 B |
After Width: | Height: | Size: 184 B |
After Width: | Height: | Size: 159 B |
After Width: | Height: | Size: 165 B |
After Width: | Height: | Size: 165 B |
After Width: | Height: | Size: 159 B |
After Width: | Height: | Size: 119 B |
After Width: | Height: | Size: 104 B |
After Width: | Height: | Size: 115 B |
After Width: | Height: | Size: 117 B |
After Width: | Height: | Size: 266 B |
After Width: | Height: | Size: 129 B |
After Width: | Height: | Size: 200 B |
After Width: | Height: | Size: 160 B |
After Width: | Height: | Size: 319 B |
After Width: | Height: | Size: 263 B |
After Width: | Height: | Size: 265 B |
After Width: | Height: | Size: 226 B |
After Width: | Height: | Size: 157 B |
After Width: | Height: | Size: 262 B |
After Width: | Height: | Size: 144 B |
After Width: | Height: | Size: 283 B |
After Width: | Height: | Size: 187 B |
After Width: | Height: | Size: 287 B |
After Width: | Height: | Size: 358 B |
After Width: | Height: | Size: 298 B |
After Width: | Height: | Size: 284 B |
After Width: | Height: | Size: 223 B |
After Width: | Height: | Size: 296 B |
After Width: | Height: | Size: 306 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M10.994 2c-.554 0-1 .446-1 1v3c0 .554.446 1 1 1h.711a6.972 6.972 0 01-4.71 4.71V11c0-.554-.447-1-1-1h-3c-.555 0-1 .446-1 1v1.5a2.5 2.5 0 002.5 2.5h.5c5.504 0 10-4.495 10-10v-.5a2.5 2.5 0 00-2.5-2.5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436"/></svg>
|
After Width: | Height: | Size: 788 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16.006" height="16"><path d="M14.242 11.715a.979.979 0 01-1.387 0l-1.04-1.04-1.041-1.04a.979.979 0 010-1.388l.493-.493a6.838 6.838 0 00-6.534 0l.493.493a.979.979 0 010 1.387l-1.04 1.04-1.04 1.04a.979.979 0 01-1.388 0l-1.04-1.04a2.452 2.452 0 010-3.467l.347-.347c3.818-3.818 10.052-3.818 13.87 0l.347.347c.957.958.957 2.51 0 3.468z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436"/></svg>
|
After Width: | Height: | Size: 895 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" font-weight="400" font-family="sans-serif" fill="#2e3436"><path d="M9 12v2h6v-2h-5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" overflow="visible"/><path d="M3 1a1 1 0 00-1 1v13a1 1 0 001 1h5v-2H4V3h5.586L12 5.414V9h2V5a1 1 0 00-.293-.707l-3-3A1 1 0 0010 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" overflow="visible" fill-rule="evenodd"/><path d="M11 10v6h2v-6z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M8 3h5v2H8zm0 4h6v2H8zm-6 4h7v2H2z" style="marker:none" overflow="visible"/><path d="M2 3v1c0 .257.13.528.312.719L3.594 6 2.312 7.281C2.13 7.471 2 7.743 2 8v1h1c.31 0 .552-.09.75-.281L6.406 6 3.75 3.281C3.552 3.091 3.31 3 3 3z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 583 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M7 3H2v2h5zm1 4H2v2h6zm6 4H7v2h7z" style="marker:none" overflow="visible"/><path d="M14 3v1c0 .257-.13.528-.312.719L12.406 6l1.282 1.281c.182.19.312.462.312.719v1h-1c-.31 0-.552-.09-.75-.281L9.594 6l2.656-2.719c.198-.19.44-.281.75-.281z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 593 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M7 3H2v2h5zm1 4H2v2h6zm6 4H7v2h7z" style="marker:none" overflow="visible"/><path d="M14 3v1c0 .257-.13.528-.312.719L12.406 6l1.282 1.281c.182.19.312.462.312.719v1h-1c-.31 0-.552-.09-.75-.281L9.594 6l2.656-2.719c.198-.19.44-.281.75-.281z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 593 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M8 3h5v2H8zm0 4h6v2H8zm-6 4h7v2H2z" style="marker:none" overflow="visible"/><path d="M2 3v1c0 .257.13.528.312.719L3.594 6 2.312 7.281C2.13 7.471 2 7.743 2 8v1h1c.31 0 .552-.09.75-.281L6.406 6 3.75 3.281C3.552 3.091 3.31 3 3 3z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 583 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M4 3h8v2H4zM3 7h10v2H3zm3 4h4v2H6z" style="marker:none" overflow="visible" color="#bebebe" fill="#474747"/></svg>
|
After Width: | Height: | Size: 185 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M3 3h10v2H3zm0 4h10v2H3zm0 4h10v2H3z" style="marker:none" overflow="visible" color="#bebebe" fill="#474747"/></svg>
|
After Width: | Height: | Size: 187 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M3 3h8v2H3zm0 4h10v2H3zm0 4h4v2H3z" style="marker:none" overflow="visible" color="#bebebe" fill="#474747"/></svg>
|
After Width: | Height: | Size: 185 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M5 3h8v2H5zM3 7h10v2H3zm6 4h4v2H9z" style="marker:none" overflow="visible" color="#bebebe" fill="#474747"/></svg>
|
After Width: | Height: | Size: 185 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="15.982"><g font-weight="400" fill="#474747"><path d="M11.001 11.986h-1a1.21 1.21 0 00-.719.261l-1.281 1.07-1.281-1.07a1.202 1.202 0 00-.72-.26H5v.835c0 .258.09.461.282.626l2.741 2.534 2.697-2.534a.78.78 0 00.281-.626v-.836z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-family="Bitstream Vera Sans" overflow="visible"/><path d="M9.804 4.04a.936 1.01 0 00.185 1.997h4.937a.936 1.01 0 100-1.997H9.989a.936 1.01 0 00-.185 0zm-8.991 0c-.45.102-.789.599-.743 1.088.046.49.47.904.93.91h4.916c.535.085 1.084-.42 1.084-1 0-.578-.549-1.084-1.084-.998H1a.834.834 0 00-.187 0zM6.059.964a2.492 2.492 0 00-1.907 1.468 2.686 2.686 0 00-.156.532H12c-.026-.126-.054-.263-.094-.375A2.467 2.467 0 009.563.964h-3.13c-.126 0-.252-.019-.374 0zm-2.063 6c.236 1.132 1.24 2 2.438 2h3.129c1.197 0 2.202-.868 2.437-2z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-family="Sans" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M9.625 11h-3.25a.374.374 0 00-.375.375v1.25c0 .208.167.375.375.375h3.25a.374.374 0 00.375-.375v-1.25A.374.374 0 009.625 11zm0-11h-3.25A.374.374 0 006 .375v1.25c0 .208.167.375.375.375h3.25A.374.374 0 0010 1.625V.375A.374.374 0 009.625 0zm0 14h-3.25a.374.374 0 00-.375.375v1.25c0 .208.167.375.375.375h3.25a.374.374 0 00.375-.375v-1.25A.374.374 0 009.625 14zm0-11h-3.25A.374.374 0 006 3.375v1.25c0 .208.167.375.375.375h3.25A.374.374 0 0010 4.625v-1.25A.374.374 0 009.625 3z" style="marker:none" overflow="visible" opacity=".35"/><path d="M14 7H2v2h12z" style="marker:none" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 706 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M0 1v13h6c.176 0 .535.14.822.332.288.192.467.371.467.371l.719.727.711-.735S9.615 14 10 14h6V1h-6c-.901 0-1.572.353-2.043.701-.025-.017-.018-.018-.045-.035C7.452 1.362 6.828 1 6 1zm2 2h4c.138 0 .515.138.813.334.297.196.492.385.492.385l.717.693.695-.715S9.619 3 10 3h4v9h-4c-.89 0-1.562.348-2.033.693-.018-.012-.013-.013-.031-.025C7.476 12.36 6.836 12 6 12H2z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M5.625 5h-2.25A.374.374 0 003 5.375v1.25c0 .207.167.375.375.375h2.25A.374.374 0 006 6.625v-1.25A.374.374 0 005.625 5zm0 3h-2.25A.374.374 0 003 8.375v1.25c0 .208.167.375.375.375h2.25A.374.374 0 006 9.625v-1.25A.374.374 0 005.625 8zm7-3h-2.25a.374.374 0 00-.375.375v1.25c0 .208.167.375.375.375h2.25A.374.374 0 0013 6.625v-1.25A.374.374 0 0012.625 5zm0 3h-2.25a.374.374 0 00-.375.375v1.25c0 .208.167.375.375.375h2.25A.374.374 0 0013 9.625v-1.25A.374.374 0 0012.625 8z" style="marker:none" overflow="visible" opacity=".35"/></g></svg>
|
After Width: | Height: | Size: 1.5 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#474747"><path d="M1.984 8.986A1 1 0 001 10v4a1 1 0 001 1h4a1 1 0 100-2H3v-3a1 1 0 00-1.016-1.014z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M6.48 8.49a1 1 0 00-.687.303l-4.5 4.5a1 1 0 101.414 1.414l4.5-4.5A1 1 0 006.48 8.49z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M1 14h1v1H1z" style="marker:none" overflow="visible"/><path d="M10 1a1 1 0 100 2h3v3a1 1 0 102 0V2a1 1 0 00-1-1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M14 1h1v1h-1z" style="marker:none" overflow="visible"/><path d="M13.984.99a1 1 0 00-.69.301l-4.5 4.469a1 1 0 101.411 1.418l4.5-4.469a1 1 0 00-.72-1.719z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M1 9h1v1H1zm5 5h1v1H6zm8-8h1v1h-1zM9 1h1v1H9z" style="marker:none" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M3.384 3h3.231c.213 0 .385.224.385.502v2.996C7 6.776 6.828 7 6.615 7h-3.23C3.17 7 3 6.776 3 6.498V3.502C3 3.224 3.17 3 3.384 3zm6 0h3.231c.213 0 .385.224.385.502v2.996c0 .278-.172.502-.385.502h-3.23C9.17 7 9 6.776 9 6.498V3.502C9 3.224 9.17 3 9.384 3zm-6 6h3.231c.213 0 .385.224.385.502v2.996c0 .278-.172.502-.385.502h-3.23C3.17 13 3 12.776 3 12.498V9.502C3 9.224 3.17 9 3.384 9zm6 0h3.231c.213 0 .385.224.385.502v2.996c0 .278-.172.502-.385.502h-3.23C9.17 13 9 12.776 9 12.498V9.502C9 9.224 9.17 9 9.384 9z" style="marker:none" overflow="visible" color="#000" fill="#474747"/></svg>
|
After Width: | Height: | Size: 654 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M1 0v13h12V0zm2 2h8v9H3z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M14 3v11H4v2h12V3z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-weight="400" font-family="Sans" overflow="visible"/><path d="M8.625 4h-3.25A.374.374 0 005 4.375v1.25c0 .208.167.375.375.375h3.25A.374.374 0 009 5.625v-1.25A.374.374 0 008.625 4zm0 3h-3.25A.374.374 0 005 7.375v1.25c0 .208.167.375.375.375h3.25A.374.374 0 009 8.625v-1.25A.374.374 0 008.625 7z" style="marker:none" overflow="visible" opacity=".35"/></g></svg>
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M3.988 9.106c.948-.277 1.953.294 2.253 1.282l.675 2.226c.3.988-.224 2.006-1.172 2.283-.949.278-1.954-.294-2.253-1.282l-.675-2.226c-.3-.987.223-2.006 1.172-2.283z"/><path d="M7.969 1C4.663 1 1.945 4.008 2 6.719c.048 2.365.809 4.695 1 5.281h1.526c-1.162-2.292-1.05-5.156-1.05-5.156 0-2.373 2.007-4.313 4.493-4.313 2.485 0 4.5 1.827 4.492 4.282-.024 1.674-.172 2.658-1.006 5.187h1.571c.225-.645.974-3.19.974-5.281C14 3.889 11.274 1 7.969 1z"/><path d="M12.012 9.139c-.948-.278-1.953.294-2.253 1.282l-.675 2.226c-.3.987.224 2.006 1.172 2.283.949.277 1.954-.294 2.253-1.282l.675-2.226c.3-.988-.223-2.006-1.172-2.283z"/></g></svg>
|
After Width: | Height: | Size: 714 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
|
||||
<path d="m 40,328 c -1.662,0 -3,1.338 -3,3 v 5 c 0,1.662 1.338,3 3,3 1.662,0 3,-1.338 3,-3 v -5 c 0,-1.662 -1.338,-3 -3,-3 z m -6,6 v 2.00977 c 0,2.96574 2.165383,5.4238 5,5.90039 V 344 h 2 v -2.08984 c 2.834617,-0.47659 5,-2.93465 5,-5.90039 V 334 h -1.5 v 2.00977 c 0,2.50009 -1.993312,4.49023 -4.5,4.49023 -2.506688,0 -4.5,-1.99014 -4.5,-4.49023 V 334 Z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436" transform="translate(-32 -328)"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1016 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16.063"><g fill="#2e3436"><path d="M1 5.063h2.484l2.97-3L7 2.078v12l-.475.001-3.04-3.016H1z" style="marker:none" color="#bebebe" overflow="visible"/><path d="M8 5.063V3.64L11.367.282c.404-.41 1.063-.346 1.412.023.332.351.375.988-.03 1.392L9.392 5.063zM8 11v1.422l3.367 3.358c.404.412 1.063.347 1.412-.022a1.016 1.016 0 00-.03-1.392L9.392 11zm0-3.937v2h6c.75 0 .999-.501 1-1.002 0-.5-.25-.998-1-.998z"/></g></svg>
|
After Width: | Height: | Size: 471 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M6 2c-.55 0-1 .45-1 1v1H2c-.552 0-1 .45-1 1v8c0 .55.448 1 1 1h12c.552 0 1-.45 1-1V5c0-.55-.448-1-1-1h-3V3c0-.55-.45-1-1-1zm2 3a4 4 0 110 8 4 4 0 010-8zm0 2a2 2 0 100 4 2 2 0 000-4z" style="marker:none" color="#bebebe" overflow="visible" fill="#474747"/></svg>
|
After Width: | Height: | Size: 331 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M6 4h8c.554 0 1 .446 1 1v7c0 .554-.446 1-1 1H6c-.554 0-1-.446-1-1V5c0-.554.446-1 1-1zM5 8.47L1.53 5H1v7h.5z" style="marker:none" overflow="visible" color="#bebebe" fill="#474747"/></svg>
|
After Width: | Height: | Size: 258 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M2.5 1A2.495 2.495 0 000 3.5v8C0 12.885 1.115 14 2.5 14v-2a.499.499 0 01-.5-.5V10h12v1.5c0 .277-.223.5-.5.5v2c1.385 0 2.5-1.115 2.5-2.5v-8C16 2.115 14.885 1 13.5 1z"/><path d="M2.875 11.039c0 2.69 2.299 4.904 5.116 4.904 2.817 0 5.134-2.213 5.134-4.904h-2.017c0 1.652-1.387 2.977-3.117 2.977s-3.099-1.325-3.099-2.977z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Sans" overflow="visible"/><path d="M6 11c0 1.099.902 2 2 2 1.099 0 2-.901 2-2H9c0 .558-.442 1-1 1s-1-.442-1-1z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Sans" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 951 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M0 11h5v4.938H0zm10 0h5v5h-5z" style="marker:none" color="#bebebe" overflow="visible"/><path d="M2.03 8v3.531h1V9H12v2.531h1V8z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M7 5v3.5h1V5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M5 1h5v5H5z" style="marker:none" color="#bebebe" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><defs><clipPath id="a"><path style="marker:none" color="#bebebe" overflow="visible" fill="#bebebe" stroke-width="2" d="M26.85 220.75h3.825v6.375H26.85z"/></clipPath><clipPath id="b"><path style="marker:none" color="#bebebe" overflow="visible" fill="#bebebe" stroke-width="2" d="M26.966 221.282h2.898v5.313h-2.898z"/></clipPath><clipPath id="c"><path style="marker:none" color="#bebebe" overflow="visible" fill="#bebebe" stroke-width="2" d="M26.999 221.502h1.876v4.878h-1.876z"/></clipPath></defs><g fill="#474747"><path transform="matrix(0 -.78431 .94118 0 -202.765 31.059)" clip-path="url(#a)" d="M27.18 220.508a1.164 1.164 0 00-.81 1.998c.379.38.59.894.59 1.432 0 .537-.211 1.051-.59 1.431a1.164 1.164 0 101.644 1.645 4.352 4.352 0 001.275-3.077c0-1.153-.46-2.26-1.275-3.076a1.164 1.164 0 00-.834-.353z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path transform="matrix(0 -1.72549 1.88219 0 -413.493 54.529)" clip-path="url(#b)" d="M27.186 221.123a.555.555 0 00-.387.953 2.632 2.632 0 010 3.723.555.555 0 10.785.785 3.743 3.743 0 000-5.293.555.555 0 00-.398-.168z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path transform="matrix(0 -2.66667 2.86852 0 -634.374 78)" clip-path="url(#c)" d="M27.188 221.318a.362.362 0 00-.252.621 2.825 2.825 0 010 3.997.362.362 0 10.511.511 3.55 3.55 0 000-5.02.362.362 0 00-.26-.109z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M10 13a2 2 0 01-2 2 2 2 0 01-2-2 2 2 0 012-2 2 2 0 012 2z"/></g></svg>
|
After Width: | Height: | Size: 2.8 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M4 0C2.993.005 3 1 3 1v13c0 2 2.003 2 2.003 2h7c2 0 2-2 2-2V4s0-2-2-2h-6.75c-.25 0-.25-.25-.25-.25L5 1S4.99.006 4 0zm1.003 4.25c0-.25.25-.25.25-.25h6.5s.25 0 .25.25v9.5c0 .25-.25.25-.25.25h-6.5c-.25 0-.252-.277-.252-.277z" style="marker:none" overflow="visible"/><path d="M6.003 5.25c0-.25.25-.25.25-.25h4.5s.25 0 .25.25v2.5c0 .25-.25.25-.25.25h-4.5C6.003 8 6 7.723 6 7.723zM6.253 9h1.5a.25.25 0 01.25.25v.5a.25.25 0 01-.25.25h-1.5a.25.25 0 01-.25-.25v-.5a.25.25 0 01.25-.25zm3 0h1.5a.25.25 0 01.25.25v.5a.25.25 0 01-.25.25h-1.5a.25.25 0 01-.25-.25v-.5a.25.25 0 01.25-.25zm-3 2h1.5a.25.25 0 01.25.25v.5a.25.25 0 01-.25.25h-1.5a.25.25 0 01-.25-.25v-.5a.25.25 0 01.25-.25zm3 0h1.5a.25.25 0 01.25.25v.5a.25.25 0 01-.25.25h-1.5a.25.25 0 01-.25-.25v-.5a.25.25 0 01.25-.25z" style="marker:none" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 922 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" font-weight="400" font-family="Sans" fill="#474747"><path d="M6.815 1.107C3.519 1.672.992 4.548.992 8c0 3.854 3.148 7 7.002 7a6.96 6.96 0 004.58-1.723C8.8 12.295 5.992 8.86 5.992 4.785a8.69 8.69 0 01.823-3.678z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible"/><path d="M7.994 1c-.402 0-.795.042-1.18.107a8.69 8.69 0 00-.822 3.678c0 4.075 2.807 7.51 6.582 8.492A6.983 6.983 0 0014.994 8c0-3.854-3.146-7-7-7z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible" opacity=".35"/></g></svg>
|
After Width: | Height: | Size: 806 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M9.5 10A2.5 2.5 0 007 12.5c0 .218.041.423.094.625A1.549 1.549 0 006.5 13a1.5 1.5 0 100 3h8a1.5 1.5 0 100-3 2 2 0 00-2-2c-.316 0-.61.088-.875.219A2.47 2.47 0 009.5 10z" style="marker:none" color="#000" overflow="visible"/><path d="M6.82 1.107C3.526 1.672.999 4.548.999 8c0 2.33 1.155 4.394 2.916 5.668.311-.813 1.064-1.394 1.942-1.639A3.806 3.806 0 017.37 9.475a8.69 8.69 0 01-1.373-4.69c0-1.314.3-2.556.823-3.678z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Sans" overflow="visible"/><path d="M8 1c-.402 0-.795.042-1.18.107a8.69 8.69 0 00-.822 3.678 8.69 8.69 0 001.373 4.69 3.567 3.567 0 012.13-.715c.997 0 1.82.484 2.486 1.125.18-.035.315-.125.513-.125.775 0 1.474.288 2.02.756.305-.782.48-1.628.48-2.516 0-3.854-3.146-7-7-7z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Sans" overflow="visible" opacity=".35"/></g></svg>
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16.014" height="16"><path d="M3.33.994c-.623 0-1 .33-1.273.594-.273.265-.482.543-.676.793a6.48 6.48 0 01-.484.582c-.114.11-.122.031.115.031a.997.997 0 10-.002 1.994c.624 0 1.003-.329 1.276-.593.272-.265.48-.543.673-.793a7.56 7.56 0 01.372-.444c.108.121.223.253.37.444.194.25.402.53.674.794.273.265.652.594 1.276.594.623 0 1-.329 1.273-.594.273-.264.483-.542.676-.792a7.64 7.64 0 01.37-.444c.107.121.223.253.37.444.194.25.401.53.674.794.273.265.652.594 1.276.594.623 0 1-.329 1.273-.594.273-.264.482-.543.676-.793.147-.19.26-.324.369-.445.108.121.223.254.371.445.193.25.401.53.674.795s.652.594 1.275.594a.997.997 0 100-1.994c.237 0 .23.08.115-.031a6.55 6.55 0 01-.486-.582c-.193-.25-.401-.53-.674-.795-.272-.265-.65-.594-1.273-.594-.624 0-1.003.33-1.276.594-.272.264-.48.543-.673.793a8.56 8.56 0 01-.371.443 7.546 7.546 0 01-.372-.443c-.193-.25-.4-.53-.673-.795S8.595.996 7.97.996c-.623 0-1.002.33-1.275.594-.273.265-.48.543-.674.793a7.56 7.56 0 01-.371.443 7.55 7.55 0 01-.371-.443c-.194-.25-.401-.53-.674-.795S3.954.994 3.331.994zm0 5.002c-.623 0-1 .33-1.273.594-.273.265-.482.543-.676.793a6.48 6.48 0 01-.484.582c-.114.11-.122.031.115.031A.997.997 0 101.01 9.99c.624 0 1.003-.329 1.276-.594.272-.264.48-.542.673-.792.148-.191.264-.323.372-.444.108.121.223.253.37.444.194.25.402.53.674.794.273.265.652.594 1.276.594.623 0 1-.329 1.273-.594.273-.264.483-.543.676-.793a7.64 7.64 0 01.37-.443c.107.121.223.253.37.443.194.25.401.53.674.795s.652.594 1.276.594c.623 0 1-.329 1.273-.594.273-.264.482-.543.676-.793.147-.19.26-.324.369-.445.108.121.223.254.371.445.193.25.401.53.674.795s.652.594 1.275.594a.997.997 0 100-1.994c.237 0 .23.08.115-.031a6.55 6.55 0 01-.486-.582c-.193-.25-.401-.53-.674-.795-.272-.265-.65-.594-1.273-.594-.624 0-1.003.33-1.276.594-.272.264-.48.543-.673.793a8.56 8.56 0 01-.371.443 7.546 7.546 0 01-.372-.443c-.193-.25-.4-.53-.673-.795s-.65-.594-1.274-.594c-.623 0-1.002.33-1.275.594-.273.264-.48.543-.674.793a7.56 7.56 0 01-.371.443 7.55 7.55 0 01-.371-.443c-.194-.25-.401-.53-.674-.795s-.652-.594-1.275-.594zm0 5.002c-.623 0-1 .33-1.273.594-.273.264-.482.543-.676.793-.193.25-.37.471-.484.582-.114.11-.122.03.115.031a.997.997 0 10-.002 1.994c.624 0 1.003-.329 1.276-.594.272-.264.48-.543.673-.793.148-.19.264-.322.372-.443.108.121.223.253.37.443.194.25.402.53.674.795.273.265.652.594 1.276.594.623 0 1-.329 1.273-.594.273-.264.483-.543.676-.793a7.3 7.3 0 01.37-.443c.107.12.223.253.37.443.194.25.401.53.674.795s.652.594 1.276.594c.623 0 1-.33 1.273-.594.273-.264.482-.543.676-.793.147-.19.26-.324.369-.445.108.121.223.254.371.445.193.25.401.53.674.795s.652.594 1.275.594a.997.997 0 100-1.994c.237 0 .23.08.115-.031a6.55 6.55 0 01-.486-.582c-.193-.25-.401-.529-.674-.793-.272-.265-.65-.596-1.273-.596-.624 0-1.003.329-1.276.594-.272.264-.48.543-.673.793a8.56 8.56 0 01-.371.443 7.545 7.545 0 01-.372-.443c-.193-.25-.4-.53-.673-.795S8.595 11 7.97 11c-.623 0-1.002.33-1.275.594-.273.264-.48.543-.674.793-.147.19-.263.322-.371.443a7.549 7.549 0 01-.371-.443c-.194-.25-.401-.53-.674-.795s-.652-.594-1.275-.594z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" overflow="visible" opacity=".5" color="#000" font-weight="400" font-family="sans-serif" fill="#474747"/></svg>
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M8.5 9A2.5 2.5 0 006 11.5c0 .218.041.423.094.625A1.549 1.549 0 005.5 12a1.5 1.5 0 100 3h8a1.5 1.5 0 100-3 2 2 0 00-2-2c-.316 0-.61.088-.875.219A2.47 2.47 0 008.5 9z" style="marker:none" overflow="visible"/><path d="M9.5 2a2.49 2.49 0 00-2.469 2.219C6.705 4.097 6.37 4 6.001 4a3 3 0 00-3 3c0 .098.021.185.03.281A2.013 2.013 0 002.001 7a2 2 0 100 4H5.1c.25-1.68 1.655-3 3.4-3 .98 0 1.786.49 2.416 1.143.199-.047.361-.143.584-.143 1.262 0 2.19.874 2.604 2h.396a1.5 1.5 0 100-3c-.207 0-.414.05-.594.125A2.44 2.44 0 0014 7.5c0-1.23-.893-2.228-2.062-2.437A2.5 2.5 0 009.5 2zm-1 8c-.663 0-1.207.414-1.41 1h2.838l-.16-.266C9.498 10.285 9.052 10 8.5 10z" style="marker:none" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 799 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M9.5 2a2.49 2.49 0 00-2.469 2.219C6.704 4.097 6.37 4 6 4a3 3 0 00-3 3c0 .098.022.185.031.281A2.014 2.014 0 002 7a2 2 0 100 4h5V8.875C7 7.865 7.865 7 8.875 7h5.062a2.499 2.499 0 00-2-1.938A2.5 2.5 0 009.5 2z" style="marker:none" color="#000" overflow="visible" fill="#2e3436"/><path class="warning" d="M8.875 8A.863.863 0 008 8.875v6.25c0 .492.383.875.875.875h6.25a.863.863 0 00.875-.875v-6.25A.863.863 0 0015.125 8zM11 9h2v2.5s0 .5-.5.5h-1c-.5 0-.5-.5-.5-.5zm.5 4h1c.277 0 .5.223.5.5v1c0 .277-.223.5-.5.5h-1a.499.499 0 01-.5-.5v-1c0-.277.223-.5.5-.5z" style="marker:none" color="#bebebe" overflow="visible" fill="#f57900"/></svg>
|
After Width: | Height: | Size: 701 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#474747"><path d="M9.465 0C8.192 0 7.158.973 7.017 2.219 6.693 2.097 6.361 2 5.994 2 4.351 2 3.02 3.343 3.02 5c0 .098.022.185.031.281A1.983 1.983 0 002.028 5 1.992 1.992 0 00.044 7c0 1.105.888 2 1.984 2h12.396c.821 0 1.487-.672 1.487-1.5S15.245 6 14.424 6c-.206 0-.411.05-.589.125.052-.202.093-.407.093-.625 0-1.23-.886-2.228-2.045-2.438.041-.18.062-.368.062-.562 0-1.38-1.11-2.5-2.48-2.5z" style="marker:none" overflow="visible"/><path d="M2.49 9.992a.496.496 0 00-.48.404l-1 4.92a.496.496 0 10.973.198l1-4.918a.496.496 0 00-.493-.604zm2.004.004a.496.496 0 00-.48.404l-1.002 4.916a.496.496 0 10.973.198L4.987 10.6a.496.496 0 00-.493-.604zm2-.004a.496.496 0 00-.48.404l-1.002 4.92a.496.496 0 10.973.198l1.002-4.918a.496.496 0 00-.493-.604zm2.002 0a.496.496 0 00-.48.404l-1.002 4.92a.496.496 0 10.973.198l1-4.918a.496.496 0 00-.49-.604zm2 0a.496.496 0 00-.48.404l-1 4.92a.496.496 0 10.972.198l1-4.918a.496.496 0 00-.492-.604zm2.002 0a.496.496 0 00-.48.404l-1 4.92a.496.496 0 10.97.198l1.002-4.918a.496.496 0 00-.492-.604z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" font-weight="400" font-family="sans-serif" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 1.5 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><g transform="translate(-332 -88)"><path id="a" d="M339.492 88.492A.5.5 0 00339 89v1.533l-1.252-.717a.5.5 0 10-.496.868l1.748 1v8.683l-1.746.987a.5.5 0 10.492.87l1.254-.708V103a.5.5 0 101 0v-1.484l1.254.709a.5.5 0 10.492-.871l-1.746-.987v-8.683l1.748-1a.5.5 0 10-.496-.868l-1.252.717V89a.5.5 0 00-.508-.508z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436" stroke-linecap="round"/><use height="100%" xlink:href="#a" transform="rotate(-60 339.5 96)" width="100%"/><use height="100%" xlink:href="#a" transform="rotate(-120 339.5 96)" width="100%"/></g></svg>
|
After Width: | Height: | Size: 1.1 KiB |
@@ -10,30 +10,107 @@
|
||||
<file preprocess="xml-stripblanks">help-overlay.ui</file>
|
||||
</gresource>
|
||||
<gresource prefix="/org/gtk/WidgetFactory4">
|
||||
<file>icons/16x16/actions/call-start-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/call-stop-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/document-new-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/document-new.png</file>
|
||||
<file>icons/16x16/actions/document-save.png</file>
|
||||
<file>icons/16x16/actions/edit-find.png</file>
|
||||
<file>icons/16x16/actions/insert-image.png</file>
|
||||
<file>icons/16x16/actions/send-to-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/view-fullscreen-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/document-send-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/edit-find.png</file>
|
||||
<file>icons/16x16/actions/format-indent-less-symbolic-rtl.symbolic.png</file>
|
||||
<file>icons/16x16/actions/format-indent-less-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/format-indent-more-symbolic-rtl.symbolic.png</file>
|
||||
<file>icons/16x16/actions/format-indent-more-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/format-justify-center-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/format-justify-fill-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/format-justify-left-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/format-justify-right-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/insert-image.png</file>
|
||||
<file>icons/16x16/actions/insert-link-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/send-to-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/star-new-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/view-continuous-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/view-dual-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/view-fullscreen-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/view-grid-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/zoom-in.png</file>
|
||||
<file>icons/16x16/actions/view-paged-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/zoom-in-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/zoom-original.png</file>
|
||||
<file>icons/16x16/actions/zoom-in.png</file>
|
||||
<file>icons/16x16/actions/zoom-original-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/zoom-out.png</file>
|
||||
<file>icons/16x16/actions/zoom-original.png</file>
|
||||
<file>icons/16x16/actions/zoom-out-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/actions/zoom-out.png</file>
|
||||
|
||||
<file>icons/16x16/apps/preferences-desktop-locale-symbolic.symbolic.png</file>
|
||||
|
||||
<file>icons/16x16/devices/audio-headphones-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/devices/audio-input-microphone-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/devices/audio-speakers-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/devices/camera-photo-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/devices/camera-web-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/devices/drive-optical-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/devices/network-wired-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/devices/network-wireless-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/devices/phone-symbolic.symbolic.png</file>
|
||||
|
||||
<file>icons/16x16/emblems/emblem-default-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/emblems/emblem-shared-symbolic.symbolic.png</file>
|
||||
|
||||
<file>icons/16x16/emotes/face-monkey-symbolic.symbolic.png</file>
|
||||
|
||||
<file>icons/16x16/status/appointment-soon-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/microphone-sensitivity-muted-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/microphone-sensitivity-high-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/microphone-sensitivity-low-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/microphone-sensitivity-medium-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/microphone-sensitivity-high-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/microphone-sensitivity-muted-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/weather-clear-night-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/emotes/face-monkey-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/apps/preferences-desktop-locale-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/weather-few-clouds-night-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/weather-fog-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/weather-overcast-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/weather-severe-alert-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/weather-showers-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/weather-snow-symbolic.symbolic.png</file>
|
||||
|
||||
<file>icons/scalable/actions/call-start-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/call-stop-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/document-new-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/format-indent-less-symbolic-rtl.svg</file>
|
||||
<file>icons/scalable/actions/format-indent-less-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/format-indent-more-symbolic-rtl.svg</file>
|
||||
<file>icons/scalable/actions/format-indent-more-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/format-justify-center-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/format-justify-fill-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/format-justify-left-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/format-justify-right-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/insert-link-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/star-new-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/view-continuous-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/view-dual-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/view-paged-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/view-fullscreen-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/view-grid-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/zoom-in-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/zoom-original-symbolic.svg</file>
|
||||
<file>icons/scalable/actions/zoom-out-symbolic.svg</file>
|
||||
|
||||
<file>icons/scalable/devices/audio-headphones-symbolic.svg</file>
|
||||
<file>icons/scalable/devices/audio-speakers-symbolic.svg</file>
|
||||
<file>icons/scalable/devices/audio-input-microphone-symbolic.svg</file>
|
||||
<file>icons/scalable/devices/camera-photo-symbolic.svg</file>
|
||||
<file>icons/scalable/devices/camera-web-symbolic.svg</file>
|
||||
<file>icons/scalable/devices/drive-optical-symbolic.svg</file>
|
||||
<file>icons/scalable/devices/network-wired-symbolic.svg</file>
|
||||
<file>icons/scalable/devices/network-wireless-symbolic.svg</file>
|
||||
<file>icons/scalable/devices/phone-symbolic.svg</file>
|
||||
|
||||
<file>icons/scalable/status/weather-clear-night-symbolic.svg</file>
|
||||
<file>icons/scalable/status/weather-few-clouds-night-symbolic.svg</file>
|
||||
<file>icons/scalable/status/weather-fog-symbolic.svg</file>
|
||||
<file>icons/scalable/status/weather-overcast-symbolic.svg</file>
|
||||
<file>icons/scalable/status/weather-severe-alert-symbolic.svg</file>
|
||||
<file>icons/scalable/status/weather-showers-symbolic.svg</file>
|
||||
<file>icons/scalable/status/weather-snow-symbolic.svg</file>
|
||||
|
||||
</gresource>
|
||||
<gresource prefix="/org/gtk/WidgetFactory4">
|
||||
<file>gtk-logo.webm</file>
|
||||
|
@@ -311,9 +311,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
|
||||
<row>
|
||||
<col id="0">camera-photo-symbolic</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">camera-video-symbolic</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">camera-web-symbolic</col>
|
||||
</row>
|
||||
@@ -329,9 +326,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
|
||||
<row>
|
||||
<col id="0">drive-harddisk-symbolic</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">drive-multidisk-symbolic</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">drive-optical-symbolic</col>
|
||||
</row>
|
||||
|
@@ -349,7 +349,7 @@ gdk_content_provider_union_get_value (GdkContentProvider *provider,
|
||||
g_clear_error (&provider_error);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return GDK_CONTENT_PROVIDER_CLASS (gdk_content_provider_union_parent_class)->get_value (provider, value, error);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -965,6 +965,7 @@ init (void)
|
||||
string_serializer,
|
||||
(gpointer) charset,
|
||||
NULL);
|
||||
g_free (mime);
|
||||
}
|
||||
gdk_content_register_serializer (G_TYPE_STRING,
|
||||
"text/plain",
|
||||
|
@@ -1381,3 +1381,33 @@ gdk_device_has_bidi_layouts (GdkDevice *device)
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_device_set_timestamp (GdkDevice *device,
|
||||
guint32 timestamp)
|
||||
{
|
||||
device->timestamp = timestamp;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_device_get_timestamp:
|
||||
* @device: a `GdkDevice`
|
||||
*
|
||||
* Returns the timestamp of the last activity for this device.
|
||||
*
|
||||
* In practice, this means the timestamp of the last event that was
|
||||
* received from the OS for this device. (GTK may occasionally produce
|
||||
* events for a device that are not received from the OS, and will not
|
||||
* update the timestamp).
|
||||
*
|
||||
* Returns: the timestamp of the last activity for this device
|
||||
*
|
||||
* Since: 4.2
|
||||
*/
|
||||
guint32
|
||||
gdk_device_get_timestamp (GdkDevice *device)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_CURRENT_TIME);
|
||||
|
||||
return device->timestamp;
|
||||
}
|
||||
|
@@ -117,6 +117,9 @@ GDK_AVAILABLE_IN_ALL
|
||||
GdkSurface * gdk_device_get_surface_at_position (GdkDevice *device,
|
||||
double *win_x,
|
||||
double *win_y);
|
||||
|
||||
GDK_AVAILABLE_IN_4_2
|
||||
guint32 gdk_device_get_timestamp (GdkDevice *device);
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GDK_DEVICE_H__ */
|
||||
|
@@ -89,6 +89,8 @@ struct _GdkDevice
|
||||
|
||||
GdkSeat *seat;
|
||||
GdkDeviceTool *last_tool;
|
||||
|
||||
guint32 timestamp;
|
||||
};
|
||||
|
||||
struct _GdkDeviceClass
|
||||
@@ -189,6 +191,9 @@ gboolean gdk_device_get_axis (GdkDevice *device,
|
||||
GdkAxisUse gdk_device_get_axis_use (GdkDevice *device,
|
||||
guint index_);
|
||||
|
||||
void gdk_device_set_timestamp (GdkDevice *device,
|
||||
guint32 timestamp);
|
||||
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -414,6 +414,9 @@ gdk_event_alloc (GdkEventType event_type,
|
||||
event->device = device != NULL ? g_object_ref (device) : NULL;
|
||||
event->time = time_;
|
||||
|
||||
if (device != NULL && time_ != GDK_CURRENT_TIME)
|
||||
gdk_device_set_timestamp (device, time_);
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
@@ -2894,31 +2897,6 @@ gdk_motion_event_new (GdkSurface *surface,
|
||||
return (GdkEvent *) self;
|
||||
}
|
||||
|
||||
GdkEvent *
|
||||
gdk_synthetic_motion_event_new (GdkSurface *surface,
|
||||
GdkDevice *device,
|
||||
GdkDeviceTool *tool,
|
||||
guint32 time,
|
||||
GdkModifierType state,
|
||||
double x,
|
||||
double y,
|
||||
double *axes)
|
||||
{
|
||||
GdkEvent *event;
|
||||
|
||||
event = gdk_motion_event_new (surface, device, tool, time, state, x, y, axes);
|
||||
|
||||
event->flags |= GDK_EVENT_SYNTHETIC;
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gdk_motion_event_is_synthetic (GdkEvent *event)
|
||||
{
|
||||
return (event->flags & GDK_EVENT_SYNTHETIC) != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_event_get_history:
|
||||
* @event: a motion or scroll event
|
||||
|
@@ -446,15 +446,6 @@ GdkEvent * gdk_motion_event_new (GdkSurface *surface,
|
||||
double y,
|
||||
double *axes);
|
||||
|
||||
GdkEvent * gdk_synthetic_motion_event_new (GdkSurface *surface,
|
||||
GdkDevice *device,
|
||||
GdkDeviceTool *tool,
|
||||
guint32 time,
|
||||
GdkModifierType state,
|
||||
double x,
|
||||
double y,
|
||||
double *axes);
|
||||
|
||||
GdkEvent * gdk_crossing_event_new (GdkEventType type,
|
||||
GdkSurface *surface,
|
||||
GdkDevice *device,
|
||||
@@ -585,8 +576,6 @@ GdkEvent * gdk_grab_broken_event_new (GdkSurface *surface,
|
||||
GdkTranslatedKey * gdk_key_event_get_translated_key (GdkEvent *event,
|
||||
gboolean no_lock);
|
||||
|
||||
gboolean gdk_motion_event_is_synthetic (GdkEvent *event);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
/* Following flag is set for events on the event queue during
|
||||
@@ -598,10 +587,7 @@ typedef enum
|
||||
* mark all events in the queue with this flag, and deliver
|
||||
* only those events until we finish the frame.
|
||||
*/
|
||||
GDK_EVENT_FLUSHED = 1 << 1,
|
||||
|
||||
/* Used for synthetic motion events. */
|
||||
GDK_EVENT_SYNTHETIC = 1 << 2,
|
||||
GDK_EVENT_FLUSHED = 1 << 2
|
||||
} GdkEventFlags;
|
||||
|
||||
GdkEvent* _gdk_event_unqueue (GdkDisplay *display);
|
||||
|
@@ -2248,13 +2248,18 @@ _gdk_windowing_got_event (GdkDisplay *display,
|
||||
GdkPointerSurfaceInfo *pointer_info = NULL;
|
||||
GdkDevice *device;
|
||||
GdkEventType type;
|
||||
guint32 timestamp;
|
||||
|
||||
_gdk_display_update_last_event (display, event);
|
||||
|
||||
device = gdk_event_get_device (event);
|
||||
timestamp = gdk_event_get_time (event);
|
||||
|
||||
if (device)
|
||||
{
|
||||
if (timestamp != GDK_CURRENT_TIME)
|
||||
gdk_device_set_timestamp (device, timestamp);
|
||||
|
||||
if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD &&
|
||||
gdk_device_get_source (device) != GDK_SOURCE_TABLET_PAD)
|
||||
{
|
||||
@@ -2455,13 +2460,13 @@ gdk_surface_ensure_motion (GdkSurface *surface)
|
||||
if (!gdk_surface_get_device_position (surface, device, &x, &y, &state))
|
||||
return;
|
||||
|
||||
event = gdk_synthetic_motion_event_new (surface,
|
||||
device,
|
||||
NULL,
|
||||
GDK_CURRENT_TIME,
|
||||
state,
|
||||
x, y,
|
||||
NULL);
|
||||
event = gdk_motion_event_new (surface,
|
||||
device,
|
||||
NULL,
|
||||
GDK_CURRENT_TIME,
|
||||
state,
|
||||
x, y,
|
||||
NULL);
|
||||
|
||||
gdk_surface_handle_event (event);
|
||||
gdk_event_unref (event);
|
||||
|
@@ -488,26 +488,19 @@ gdk_registry_handle_global (void *data,
|
||||
}
|
||||
else if (strcmp (interface, "wl_seat") == 0)
|
||||
{
|
||||
SeatAddedClosure *closure;
|
||||
static const char *required_device_manager_globals[] = {
|
||||
"wl_compositor",
|
||||
"wl_data_device_manager",
|
||||
NULL
|
||||
};
|
||||
|
||||
if (has_required_globals (display_wayland,
|
||||
required_device_manager_globals))
|
||||
_gdk_wayland_display_add_seat (display_wayland, id, version);
|
||||
else
|
||||
{
|
||||
SeatAddedClosure *closure;
|
||||
|
||||
closure = g_new0 (SeatAddedClosure, 1);
|
||||
closure->base.handler = seat_added_closure_run;
|
||||
closure->base.required_globals = required_device_manager_globals;
|
||||
closure->id = id;
|
||||
closure->version = version;
|
||||
postpone_on_globals_closure (display_wayland, &closure->base);
|
||||
}
|
||||
closure = g_new0 (SeatAddedClosure, 1);
|
||||
closure->base.handler = seat_added_closure_run;
|
||||
closure->base.required_globals = required_device_manager_globals;
|
||||
closure->id = id;
|
||||
closure->version = version;
|
||||
postpone_on_globals_closure (display_wayland, &closure->base);
|
||||
}
|
||||
else if (strcmp (interface, "wl_data_device_manager") == 0)
|
||||
{
|
||||
@@ -586,8 +579,6 @@ gdk_registry_handle_global (void *data,
|
||||
|
||||
g_hash_table_insert (display_wayland->known_globals,
|
||||
GUINT_TO_POINTER (id), g_strdup (interface));
|
||||
|
||||
process_on_globals_closures (display_wayland);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -679,8 +670,13 @@ _gdk_wayland_display_open (const char *display_name)
|
||||
|
||||
display_wayland->wl_registry = wl_display_get_registry (display_wayland->wl_display);
|
||||
wl_registry_add_listener (display_wayland->wl_registry, ®istry_listener, display_wayland);
|
||||
if (wl_display_roundtrip (display_wayland->wl_display) < 0)
|
||||
{
|
||||
g_object_unref (display);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
_gdk_wayland_display_async_roundtrip (display_wayland);
|
||||
process_on_globals_closures (display_wayland);
|
||||
|
||||
/* Wait for initializing to complete. This means waiting for all
|
||||
* asynchronous roundtrips that were triggered during initial roundtrip. */
|
||||
|
@@ -372,7 +372,7 @@ compare (gconstpointer *elem1,
|
||||
if (settings->compare_func (elem1[lim1 - 1], elem2[lim2 - 1], data) != 0)
|
||||
break;
|
||||
|
||||
settings-> keep_func (elem1[lim1 - 1], elem2[lim2 - 1], data);
|
||||
settings->keep_func (elem1[lim1 - 1], elem2[lim2 - 1], data);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -209,7 +209,7 @@ typedef enum {
|
||||
*
|
||||
* Also keep in mind that rounding errors may cause matrices to not
|
||||
* conform to their categories. Otherwise, matrix operations done via
|
||||
* mutliplication will not worsen categories. So for the matrix
|
||||
* multiplication will not worsen categories. So for the matrix
|
||||
* multiplication `C = A * B`, `category(C) = MIN (category(A), category(B))`.
|
||||
*/
|
||||
typedef enum
|
||||
|
@@ -489,10 +489,14 @@ gsk_render_node_can_diff (const GskRenderNode *node1,
|
||||
if (node1 == node2)
|
||||
return TRUE;
|
||||
|
||||
if (_gsk_render_node_get_node_type (node1) != _gsk_render_node_get_node_type (node2))
|
||||
return FALSE;
|
||||
if (_gsk_render_node_get_node_type (node1) == _gsk_render_node_get_node_type (node2))
|
||||
return GSK_RENDER_NODE_GET_CLASS (node1)->can_diff (node1, node2);
|
||||
|
||||
return GSK_RENDER_NODE_GET_CLASS (node1)->can_diff (node1, node2);
|
||||
if (_gsk_render_node_get_node_type (node1) == GSK_CONTAINER_NODE ||
|
||||
_gsk_render_node_get_node_type (node2) == GSK_CONTAINER_NODE)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -544,10 +548,15 @@ gsk_render_node_diff (GskRenderNode *node1,
|
||||
if (node1 == node2)
|
||||
return;
|
||||
|
||||
if (_gsk_render_node_get_node_type (node1) != _gsk_render_node_get_node_type (node2))
|
||||
return gsk_render_node_diff_impossible (node1, node2, region);
|
||||
if (_gsk_render_node_get_node_type (node1) == _gsk_render_node_get_node_type (node2))
|
||||
return GSK_RENDER_NODE_GET_CLASS (node1)->diff (node1, node2, region);
|
||||
|
||||
return GSK_RENDER_NODE_GET_CLASS (node1)->diff (node1, node2, region);
|
||||
if (_gsk_render_node_get_node_type (node1) == GSK_CONTAINER_NODE)
|
||||
return gsk_container_node_diff_with (node1, node2, region);
|
||||
if (_gsk_render_node_get_node_type (node2) == GSK_CONTAINER_NODE)
|
||||
return gsk_container_node_diff_with (node2, node1, region);
|
||||
|
||||
return gsk_render_node_diff_impossible (node1, node2, region);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -2641,6 +2641,36 @@ gsk_container_node_get_diff_settings (void)
|
||||
return settings;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gsk_render_node_diff_multiple (GskRenderNode **nodes1,
|
||||
gsize n_nodes1,
|
||||
GskRenderNode **nodes2,
|
||||
gsize n_nodes2,
|
||||
cairo_region_t *region)
|
||||
{
|
||||
return gsk_diff ((gconstpointer *) nodes1, n_nodes1,
|
||||
(gconstpointer *) nodes2, n_nodes2,
|
||||
gsk_container_node_get_diff_settings (),
|
||||
region) == GSK_DIFF_OK;
|
||||
}
|
||||
|
||||
void
|
||||
gsk_container_node_diff_with (GskRenderNode *container,
|
||||
GskRenderNode *other,
|
||||
cairo_region_t *region)
|
||||
{
|
||||
GskContainerNode *self = (GskContainerNode *) container;
|
||||
|
||||
if (gsk_render_node_diff_multiple (self->children,
|
||||
self->n_children,
|
||||
&other,
|
||||
1,
|
||||
region))
|
||||
return;
|
||||
|
||||
gsk_render_node_diff_impossible (container, other, region);
|
||||
}
|
||||
|
||||
static void
|
||||
gsk_container_node_diff (GskRenderNode *node1,
|
||||
GskRenderNode *node2,
|
||||
@@ -2649,12 +2679,11 @@ gsk_container_node_diff (GskRenderNode *node1,
|
||||
GskContainerNode *self1 = (GskContainerNode *) node1;
|
||||
GskContainerNode *self2 = (GskContainerNode *) node2;
|
||||
|
||||
if (gsk_diff ((gconstpointer *) self1->children,
|
||||
self1->n_children,
|
||||
(gconstpointer *) self2->children,
|
||||
self2->n_children,
|
||||
gsk_container_node_get_diff_settings (),
|
||||
region) == GSK_DIFF_OK)
|
||||
if (gsk_render_node_diff_multiple (self1->children,
|
||||
self1->n_children,
|
||||
self2->children,
|
||||
self2->n_children,
|
||||
region))
|
||||
return;
|
||||
|
||||
gsk_render_node_diff_impossible (node1, node2, region);
|
||||
@@ -2849,19 +2878,18 @@ gsk_transform_node_diff (GskRenderNode *node1,
|
||||
{
|
||||
cairo_region_t *sub;
|
||||
float dx, dy;
|
||||
|
||||
gsk_transform_to_translate (self1->transform, &dx, &dy);
|
||||
sub = cairo_region_create ();
|
||||
gsk_render_node_diff (self1->child, self2->child, sub);
|
||||
cairo_region_translate (sub, floor (dx), floor (dy));
|
||||
if (floor (dx) != dx)
|
||||
cairo_region_translate (sub, floorf (dx), floorf (dy));
|
||||
if (floorf (dx) != dx)
|
||||
{
|
||||
cairo_region_t *tmp = cairo_region_copy (sub);
|
||||
cairo_region_translate (tmp, 1, 0);
|
||||
cairo_region_union (sub, tmp);
|
||||
cairo_region_destroy (tmp);
|
||||
}
|
||||
if (floor (dy) != dy)
|
||||
if (floorf (dy) != dy)
|
||||
{
|
||||
cairo_region_t *tmp = cairo_region_copy (sub);
|
||||
cairo_region_translate (tmp, 0, 1);
|
||||
@@ -4407,9 +4435,15 @@ gsk_text_node_new (PangoFont *font,
|
||||
self->has_color_glyphs = font_has_color_glyphs (font);
|
||||
self->color = *color;
|
||||
self->offset = *offset;
|
||||
self->num_glyphs = glyphs->num_glyphs;
|
||||
self->glyphs = g_malloc_n (glyphs->num_glyphs, sizeof (PangoGlyphInfo));
|
||||
memcpy (self->glyphs, glyphs->glyphs, glyphs->num_glyphs * sizeof (PangoGlyphInfo));
|
||||
|
||||
/* skip empty glyphs */
|
||||
self->num_glyphs = 0;
|
||||
for (int i = 0; i < glyphs->num_glyphs; i++)
|
||||
{
|
||||
if (glyphs->glyphs[i].glyph != PANGO_GLYPH_EMPTY)
|
||||
self->glyphs[self->num_glyphs++] = glyphs->glyphs[i];
|
||||
}
|
||||
|
||||
graphene_rect_init (&node->bounds,
|
||||
offset->x + ink_rect.x - 1,
|
||||
|
@@ -93,6 +93,9 @@ void gsk_render_node_diff (GskRenderNode
|
||||
void gsk_render_node_diff_impossible (GskRenderNode *node1,
|
||||
GskRenderNode *node2,
|
||||
cairo_region_t *region);
|
||||
void gsk_container_node_diff_with (GskRenderNode *container,
|
||||
GskRenderNode *other,
|
||||
cairo_region_t *region);
|
||||
|
||||
bool gsk_border_node_get_uniform (const GskRenderNode *self);
|
||||
bool gsk_border_node_get_uniform_color (const GskRenderNode *self);
|
||||
|
@@ -33,9 +33,9 @@ typedef struct _GskNglGlyphKey
|
||||
{
|
||||
PangoFont *font;
|
||||
PangoGlyph glyph;
|
||||
guint xshift : 3;
|
||||
guint yshift : 3;
|
||||
guint scale : 26; /* times 1024 */
|
||||
guint xshift : 2;
|
||||
guint yshift : 2;
|
||||
guint scale : 28; /* times 1024 */
|
||||
} GskNglGlyphKey;
|
||||
|
||||
typedef struct _GskNglGlyphValue
|
||||
@@ -68,24 +68,7 @@ gboolean gsk_ngl_glyph_library_add (GskNglGlyphLibrary *self,
|
||||
GskNglGlyphKey *key,
|
||||
const GskNglGlyphValue **out_value);
|
||||
|
||||
static inline int
|
||||
gsk_ngl_glyph_key_phase (float value)
|
||||
{
|
||||
return floorf (4 * (value + 0.125)) - 4 * floorf (value + 0.125);
|
||||
}
|
||||
|
||||
static inline void
|
||||
gsk_ngl_glyph_key_set_glyph_and_shift (GskNglGlyphKey *key,
|
||||
PangoGlyph glyph,
|
||||
float x,
|
||||
float y)
|
||||
{
|
||||
key->glyph = glyph;
|
||||
key->xshift = gsk_ngl_glyph_key_phase (x);
|
||||
key->yshift = gsk_ngl_glyph_key_phase (y);
|
||||
}
|
||||
|
||||
static inline gboolean
|
||||
static inline guint
|
||||
gsk_ngl_glyph_library_lookup_or_add (GskNglGlyphLibrary *self,
|
||||
const GskNglGlyphKey *key,
|
||||
const GskNglGlyphValue **out_value)
|
||||
@@ -112,7 +95,7 @@ gsk_ngl_glyph_library_lookup_or_add (GskNglGlyphLibrary *self,
|
||||
self->front[front_index].value = *out_value;
|
||||
}
|
||||
|
||||
return GSK_NGL_TEXTURE_ATLAS_ENTRY_TEXTURE (*out_value) != 0;
|
||||
return GSK_NGL_TEXTURE_ATLAS_ENTRY_TEXTURE (*out_value);
|
||||
}
|
||||
|
||||
G_END_DECLS
|
||||
|
@@ -399,7 +399,6 @@ static void
|
||||
extract_matrix_metadata (GskNglRenderModelview *modelview)
|
||||
{
|
||||
float dummy;
|
||||
graphene_matrix_t m;
|
||||
|
||||
gsk_transform_to_matrix (modelview->transform, &modelview->matrix);
|
||||
|
||||
@@ -428,14 +427,14 @@ extract_matrix_metadata (GskNglRenderModelview *modelview)
|
||||
/* TODO: 90% sure this is incorrect. But we should never hit this code
|
||||
* path anyway. */
|
||||
graphene_vec3_init (&col1,
|
||||
graphene_matrix_get_value (&m, 0, 0),
|
||||
graphene_matrix_get_value (&m, 1, 0),
|
||||
graphene_matrix_get_value (&m, 2, 0));
|
||||
graphene_matrix_get_value (&modelview->matrix, 0, 0),
|
||||
graphene_matrix_get_value (&modelview->matrix, 1, 0),
|
||||
graphene_matrix_get_value (&modelview->matrix, 2, 0));
|
||||
|
||||
graphene_vec3_init (&col2,
|
||||
graphene_matrix_get_value (&m, 0, 1),
|
||||
graphene_matrix_get_value (&m, 1, 1),
|
||||
graphene_matrix_get_value (&m, 2, 1));
|
||||
graphene_matrix_get_value (&modelview->matrix, 0, 1),
|
||||
graphene_matrix_get_value (&modelview->matrix, 1, 1),
|
||||
graphene_matrix_get_value (&modelview->matrix, 2, 1));
|
||||
|
||||
modelview->scale_x = graphene_vec3_length (&col1);
|
||||
modelview->scale_y = graphene_vec3_length (&col2);
|
||||
@@ -728,7 +727,7 @@ gsk_ngl_render_job_transform_bounds (GskNglRenderJob *job,
|
||||
out_rect->size.width = rect->size.width * scale_x;
|
||||
out_rect->size.height = rect->size.height * scale_y;
|
||||
|
||||
/* Normaize in place */
|
||||
/* Normalize in place */
|
||||
if (out_rect->size.width < 0.f)
|
||||
{
|
||||
float size = fabsf (out_rect->size.width);
|
||||
@@ -2640,6 +2639,30 @@ gsk_ngl_render_job_visit_opacity_node (GskNglRenderJob *job,
|
||||
}
|
||||
}
|
||||
|
||||
static inline int
|
||||
compute_phase_and_pos (float value, float *pos)
|
||||
{
|
||||
float v;
|
||||
|
||||
*pos = floorf (value);
|
||||
|
||||
v = value - *pos;
|
||||
|
||||
if (v < 0.125)
|
||||
return 0;
|
||||
else if (v < 0.375)
|
||||
return 1;
|
||||
else if (v < 0.625)
|
||||
return 2;
|
||||
else if (v < 0.875)
|
||||
return 3;
|
||||
else
|
||||
{
|
||||
*pos += 1;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void
|
||||
gsk_ngl_render_job_visit_text_node (GskNglRenderJob *job,
|
||||
const GskRenderNode *node,
|
||||
@@ -2661,6 +2684,10 @@ gsk_ngl_render_job_visit_text_node (GskNglRenderJob *job,
|
||||
GskNglDrawVertex *vertices;
|
||||
guint used = 0;
|
||||
GdkRGBA c;
|
||||
const PangoGlyphInfo *gi;
|
||||
guint i;
|
||||
int yshift;
|
||||
float ypos;
|
||||
|
||||
if (num_glyphs == 0)
|
||||
return;
|
||||
@@ -2676,40 +2703,47 @@ gsk_ngl_render_job_visit_text_node (GskNglRenderJob *job,
|
||||
lookup.font = (PangoFont *)font;
|
||||
lookup.scale = (guint) (text_scale * 1024);
|
||||
|
||||
yshift = compute_phase_and_pos (y, &ypos);
|
||||
|
||||
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, coloring));
|
||||
|
||||
batch = gsk_ngl_command_queue_get_batch (job->command_queue);
|
||||
vertices = gsk_ngl_command_queue_add_n_vertices (job->command_queue, num_glyphs);
|
||||
|
||||
/* We use one quad per character */
|
||||
for (guint i = 0; i < num_glyphs; i++)
|
||||
for (i = 0, gi = glyphs; i < num_glyphs; i++, gi++)
|
||||
{
|
||||
const PangoGlyphInfo *gi = &glyphs[i];
|
||||
const GskNglGlyphValue *glyph;
|
||||
guint base = used * GSK_NGL_N_VERTICES;
|
||||
float glyph_x, glyph_y, glyph_x2, glyph_y2;
|
||||
float tx, ty, tx2, ty2;
|
||||
float cx;
|
||||
float cy;
|
||||
guint texture_id;
|
||||
|
||||
if (gi->glyph == PANGO_GLYPH_EMPTY)
|
||||
continue;
|
||||
lookup.glyph = gi->glyph;
|
||||
|
||||
cx = (float)(x_position + gi->geometry.x_offset) / PANGO_SCALE;
|
||||
cy = (float)(gi->geometry.y_offset) / PANGO_SCALE;
|
||||
lookup.xshift = compute_phase_and_pos (x + cx, &cx);
|
||||
|
||||
gsk_ngl_glyph_key_set_glyph_and_shift (&lookup, gi->glyph, x + cx, y + cy);
|
||||
if G_UNLIKELY (gi->geometry.y_offset != 0)
|
||||
{
|
||||
cy = (float)(gi->geometry.y_offset) / PANGO_SCALE;
|
||||
lookup.yshift = compute_phase_and_pos (y + cy, &cy);
|
||||
}
|
||||
else
|
||||
{
|
||||
lookup.yshift = yshift;
|
||||
cy = ypos;
|
||||
}
|
||||
|
||||
if (!gsk_ngl_glyph_library_lookup_or_add (library, &lookup, &glyph))
|
||||
goto next;
|
||||
x_position += gi->geometry.width;
|
||||
|
||||
texture_id = GSK_NGL_TEXTURE_ATLAS_ENTRY_TEXTURE (glyph);
|
||||
texture_id = gsk_ngl_glyph_library_lookup_or_add (library, &lookup, &glyph);
|
||||
if G_UNLIKELY (texture_id == 0)
|
||||
continue;
|
||||
|
||||
if G_UNLIKELY (last_texture != texture_id)
|
||||
{
|
||||
g_assert (texture_id > 0);
|
||||
|
||||
if G_LIKELY (last_texture != 0)
|
||||
{
|
||||
guint vbo_offset = batch->draw.vbo_offset + batch->draw.vbo_count;
|
||||
@@ -2737,24 +2771,21 @@ gsk_ngl_render_job_visit_text_node (GskNglRenderJob *job,
|
||||
tx2 = glyph->entry.area.x2;
|
||||
ty2 = glyph->entry.area.y2;
|
||||
|
||||
glyph_x = floorf (x + cx + 0.125) + glyph->ink_rect.x;
|
||||
glyph_y = floorf (y + cy + 0.125) + glyph->ink_rect.y;
|
||||
glyph_x = cx + glyph->ink_rect.x;
|
||||
glyph_y = cy + glyph->ink_rect.y;
|
||||
glyph_x2 = glyph_x + glyph->ink_rect.width;
|
||||
glyph_y2 = glyph_y + glyph->ink_rect.height;
|
||||
|
||||
vertices[base+0] = (GskNglDrawVertex) { { glyph_x, glyph_y }, { tx, ty }, { c.red, c.green, c.blue, c.alpha } };
|
||||
vertices[base+1] = (GskNglDrawVertex) { { glyph_x, glyph_y2 }, { tx, ty2 }, { c.red, c.green, c.blue, c.alpha } };
|
||||
vertices[base+2] = (GskNglDrawVertex) { { glyph_x2, glyph_y }, { tx2, ty }, { c.red, c.green, c.blue, c.alpha } };
|
||||
*(vertices++) = (GskNglDrawVertex) { { glyph_x, glyph_y }, { tx, ty }, { c.red, c.green, c.blue, c.alpha } };
|
||||
*(vertices++) = (GskNglDrawVertex) { { glyph_x, glyph_y2 }, { tx, ty2 }, { c.red, c.green, c.blue, c.alpha } };
|
||||
*(vertices++) = (GskNglDrawVertex) { { glyph_x2, glyph_y }, { tx2, ty }, { c.red, c.green, c.blue, c.alpha } };
|
||||
|
||||
vertices[base+3] = (GskNglDrawVertex) { { glyph_x2, glyph_y2 }, { tx2, ty2 }, { c.red, c.green, c.blue, c.alpha } };
|
||||
vertices[base+4] = (GskNglDrawVertex) { { glyph_x, glyph_y2 }, { tx, ty2 }, { c.red, c.green, c.blue, c.alpha } };
|
||||
vertices[base+5] = (GskNglDrawVertex) { { glyph_x2, glyph_y }, { tx2, ty }, { c.red, c.green, c.blue, c.alpha } };
|
||||
*(vertices++) = (GskNglDrawVertex) { { glyph_x2, glyph_y2 }, { tx2, ty2 }, { c.red, c.green, c.blue, c.alpha } };
|
||||
*(vertices++) = (GskNglDrawVertex) { { glyph_x, glyph_y2 }, { tx, ty2 }, { c.red, c.green, c.blue, c.alpha } };
|
||||
*(vertices++) = (GskNglDrawVertex) { { glyph_x2, glyph_y }, { tx2, ty }, { c.red, c.green, c.blue, c.alpha } };
|
||||
|
||||
batch->draw.vbo_count += GSK_NGL_N_VERTICES;
|
||||
used++;
|
||||
|
||||
next:
|
||||
x_position += gi->geometry.width;
|
||||
}
|
||||
|
||||
if (used != num_glyphs)
|
||||
|
@@ -204,7 +204,7 @@ gsk_ngl_texture_library_pack_one (GskNglTextureLibrary *self,
|
||||
if (width > self->driver->command_queue->max_texture_size ||
|
||||
height > self->driver->command_queue->max_texture_size)
|
||||
{
|
||||
g_warning ("Texture bigger (%ux%u) than the aximum allowable size %u.",
|
||||
g_warning ("Clipping requested texture of size %ux%u to maximum allowable size %u.",
|
||||
width, height, self->driver->command_queue->max_texture_size);
|
||||
width = MIN (width, self->driver->command_queue->max_texture_size);
|
||||
height = MIN (height, self->driver->command_queue->max_texture_size);
|
||||
|
@@ -58,13 +58,13 @@ struct _GskNglTexture
|
||||
/* Backpointer to texture (can be cleared asynchronously) */
|
||||
GdkTexture *user;
|
||||
|
||||
/* Only used by nine-slice textures */
|
||||
GskNglTextureNineSlice *nine_slice;
|
||||
|
||||
/* Only used by sliced textures */
|
||||
GskNglTextureSlice *slices;
|
||||
guint n_slices;
|
||||
|
||||
/* Only used by nine-slice textures */
|
||||
GskNglTextureNineSlice *nine_slice;
|
||||
|
||||
/* The actual GL texture identifier in some shared context */
|
||||
guint texture_id;
|
||||
|
||||
|
@@ -32,7 +32,10 @@ uniform float u_color_stops[MAX_COLOR_STOPS * 5];
|
||||
_NOPERSPECTIVE_ _IN_ vec2 coord;
|
||||
|
||||
float get_offset(int index) {
|
||||
return u_color_stops[5 * index];
|
||||
// u_color_stops[5 * index] makes Intel Windows driver crash.
|
||||
// See https://gitlab.gnome.org/GNOME/gtk/-/issues/3783
|
||||
int base = 5 * index;
|
||||
return u_color_stops[base];
|
||||
}
|
||||
|
||||
vec4 get_color(int index) {
|
||||
|
@@ -56,7 +56,10 @@ uniform bool u_repeat;
|
||||
_NOPERSPECTIVE_ _IN_ vec4 info;
|
||||
|
||||
float get_offset(int index) {
|
||||
return u_color_stops[5 * index];
|
||||
// u_color_stops[5 * index] makes Intel Windows driver crash.
|
||||
// See https://gitlab.gnome.org/GNOME/gtk/-/issues/3783
|
||||
int base = 5 * index;
|
||||
return u_color_stops[base];
|
||||
}
|
||||
|
||||
vec4 get_color(int index) {
|
||||
|
@@ -35,7 +35,10 @@ uniform float u_color_stops[MAX_COLOR_STOPS * 5];
|
||||
_NOPERSPECTIVE_ _IN_ vec2 coord;
|
||||
|
||||
float get_offset(int index) {
|
||||
return u_color_stops[5 * index];
|
||||
// u_color_stops[5 * index] makes Intel Windows driver crash.
|
||||
// See https://gitlab.gnome.org/GNOME/gtk/-/issues/3783
|
||||
int base = 5 * index;
|
||||
return u_color_stops[base];
|
||||
}
|
||||
|
||||
vec4 get_color(int index) {
|
||||
|
8
gtk.supp
@@ -285,3 +285,11 @@
|
||||
...
|
||||
fun:g_intern_static_string
|
||||
}
|
||||
|
||||
# Threads
|
||||
{
|
||||
pthread
|
||||
Memcheck:Leak
|
||||
fun:calloc
|
||||
fun:_dl_allocate_tls
|
||||
}
|
||||
|
@@ -287,8 +287,15 @@ got_file_info (GObject *source,
|
||||
GtkBookmarkList *self = user_data;
|
||||
GFile *file = G_FILE (source);
|
||||
GFileInfo *info;
|
||||
GError *error = NULL;
|
||||
|
||||
info = g_file_query_info_finish (file, res, &error);
|
||||
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||
{
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
info = g_file_query_info_finish (file, res, NULL);
|
||||
if (info)
|
||||
{
|
||||
char *uri;
|
||||
|
@@ -1145,6 +1145,8 @@ gtk_builder_create_bindings (GtkBuilder *builder,
|
||||
|
||||
free_binding_expression_info (info);
|
||||
}
|
||||
else
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
g_slist_free (priv->bindings);
|
||||
|
@@ -2007,6 +2007,7 @@ end_element (GtkBuildableParseContext *context,
|
||||
PropertyInfo *prop_info = (PropertyInfo *) parent_info;
|
||||
|
||||
prop_info->value = expression_info_construct (data->builder, expression_info, error);
|
||||
free_expression_info (expression_info);
|
||||
}
|
||||
else if (parent_info->tag_type == TAG_EXPRESSION)
|
||||
{
|
||||
|
@@ -1190,6 +1190,12 @@ gtk_check_algorithmically (const guint16 *compose_buffer,
|
||||
|
||||
for (i = 0; i < n_compose && IS_DEAD_KEY (compose_buffer[i]); i++)
|
||||
;
|
||||
|
||||
/* Allow at most 2 dead keys */
|
||||
if (i > 2)
|
||||
return FALSE;
|
||||
|
||||
/* Can't combine if there's no base character */
|
||||
if (i == n_compose)
|
||||
return TRUE;
|
||||
|
||||
|