[gtk-web/new-website: 144/191] added gitlab api responses
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-web/new-website: 144/191] added gitlab api responses
- Date: Thu, 21 Nov 2019 12:30:35 +0000 (UTC)
commit 60765d246931ebe14c92893f12d0bf69155e16a9
Author: ravgeetdhillon <ravgeetdhillon gmail com>
Date: Sun Aug 11 16:09:40 2019 +0530
added gitlab api responses
_data/api_fetch/gtk-blog-feed.json | 168 +++
_data/api_fetch/issues-opened.json | 1104 -----------------
_data/api_fetch/issues_opened.json | 1 +
.../{issues-stats.json => issues_stats.json} | 0
_data/api_fetch/labels.json | 1302 ++++++++++++++++++++
.../{members-all.json => members_all.json} | 0
_data/api_fetch/tags.json | 1 +
7 files changed, 1472 insertions(+), 1104 deletions(-)
---
diff --git a/_data/api_fetch/gtk-blog-feed.json b/_data/api_fetch/gtk-blog-feed.json
new file mode 100644
index 0000000..33be06d
--- /dev/null
+++ b/_data/api_fetch/gtk-blog-feed.json
@@ -0,0 +1,168 @@
+{
+ "status": "ok",
+ "feed": {
+ "url": "https://blog.gtk.org/feed/",
+ "title": "GTK Development Blog",
+ "link": "https://blog.gtk.org/",
+ "author": "",
+ "description": "All things GTK",
+ "image": ""
+ },
+ "items": [
+ {
+ "title": "Constraint layouts",
+ "pubDate": "2019-07-02 19:51:06",
+ "link": "https://blog.gtk.org/2019/07/02/constraint-layouts/",
+ "guid": "http://blog.gtk.org/?p=1154",
+ "author": "Emmanuele Bassi",
+ "thumbnail": "https://blog.gtk.org/files/2019/07/constraint-example.png",
+ "description": "What are constraints At its most basic, a constraint is a relation between two values.
The relation can be described as a linear equation: target.attribute = source.attribute × multiplier +
constant For instance, this: Can be described as: blue.start = red.end × 1.0 + 8.0 Or: the attribute,
“start”, of the target, “blue”, which is … <a href=\"https://blog.gtk.org/2019/07/02/constraint-layouts/\"
class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> \"Constraint layouts\"</span></a>\n",
+ "content": "\n<h3>What are constraints</h3>\n<p>At its most basic, a constraint is a relation between
two values. The relation<br>\ncan be described as a linear equation:</p>\n<pre>target.attribute =
source.attribute × multiplier + constant\r\n</pre>\n<p>For instance, this:</p>\n<p><a
href=\"https://blog.gtk.org/files/2019/07/constraint-example.png\"><img class=\"aligncenter size-full
wp-image-1160\" src=\"https://blog.gtk.org/files/2019/07/constraint-example.png\" alt=\"\" width=\"475\"
height=\"186\" srcset=\"https://blog.gtk.org/files/2019/07/constraint-example.png 475w,
https://blog.gtk.org/files/2019/07/constraint-example-300x117.png 300w\" sizes=\"(max-width: 475px) 85vw,
475px\"></a></p>\n<p>Can be described as:</p>\n<pre>blue.start = red.end × 1.0 +
8.0\r\n</pre>\n<p>Or:</p>\n<ul>\n<li>the <strong>attribute</strong>, “start”, of the <strong>target</strong>,
“blue”, which is going to be set by the constraint; this is the left hand side of the equation<
/li>\n<l
i>the <strong>relation</strong> between the left and right hand sides of the equation, in this case
equality; relations can also be <em>greater than or equal to</em>,<br>\nand <em>less than or equal
to</em>\n</li>\n<li>the <strong>attribute</strong>, “end”, of the <strong>source</strong>, “red”, which is
going to be read by the constraint; this is the right hand side of the equation</li>\n<li>the
<strong>multiplier</strong>, “1.0”, applied to the attribute of the source</li>\n<li>the
<strong>constant</strong>, “8.0”, an offset added to the attribute</li>\n</ul>\n<p>A constraint layout is a
series of equations like the one above, describing all the relationships between the various parts of your
UI.</p>\n<p>It’s important to note that the relation is not an assignment, but an equality (or an
inequality): both sides of the equation will be solved in a way that satisfies the constraint; this means
that the list of constraints can be rearranged; for instance, t
he examp
le above can be rewritten as:</p>\n<pre>red.end = blue.start × 1.0 - 8.0\r\n</pre>\n<p>In general, for the
sake of convenience and readability, you should arrange your constraints in reading order, from leading to
trailing edge, from top to bottom. You should also favour whole numbers for multipliers, and positive numbers
for constants.</p>\n<h3>Solving the layout</h3>\n<p>Systems of linear equations can have one solution,
multiple solutions, or even no solution at all. Additionally, for performance reasons, you don’t really want
to recompute all the solutions every time.</p>\n<p>Back in 1998, the Cassowary algorithm for solving linear
arithmetic constraints was published by Greg J. Badros and Alan Borning, alongside its implementation in C++,
Smalltalk, and Java. The Cassowary algorithm tries to solve a system of linear equations by finding its
optimal solution; additionally, it does so incrementally, which makes it very useful for user
interfaces.</p>\n<p>Over the past
decade v
arious platforms and toolkits started providing layout managers based on constraints, and most of them used
the Cassowary algorithm. The first one was Apple’s AutoLayout, in 2011; in 2016, Google added a
ConstraintLayout to the Android SDK.</p>\n<p>In 2016, Endless implemented a constraint layout for GTK 3 in a
library called Emeus. Starting from that work, GTK 4 now has a GtkConstraintLayout layout manager available
for application and widget developers.</p>\n<p>The machinery that implements the constraint solver is private
to GTK, but the public API provides a layout manager that you can assign to your GtkWidget class, and an
immutable GtkConstraint object that describes each constraint you wish to add to the layout, binding two
widgets together.</p>\n<h3>Guiding the constraints</h3>\n<p>Constraints use widgets as sources and targets,
but there are cases when you want to bind a widget attribute to a rectangular region that does not really
draw anything on screen. You cou
ld add a
dummy widget to the layout, and then set its opacity to 0 to avoid it being rendered, but that would add
unnecessary overhead to the scene. Instead, GTK provides GtkConstraintGuide, and object whose only job is to
contribute to the layout:</p>\n<p><a href=\"https://blog.gtk.org/files/2019/07/constraint-guide.png\"><img
class=\"aligncenter wp-image-1163 size-full\" src=\"https://blog.gtk.org/files/2019/07/constraint-guide.png\"
alt=\"An example of the guide UI element\" width=\"280\" height=\"391\"
srcset=\"https://blog.gtk.org/files/2019/07/constraint-guide.png 280w,
https://blog.gtk.org/files/2019/07/constraint-guide-215x300.png 215w\" sizes=\"(max-width: 280px) 85vw,
280px\"></a></p>\n<p>In the example above, only the widgets marked as “Child 1” and “Child 2” are going to be
visible, while the guide is going to be an empty space.</p>\n<p>Guides have a minimum, natural (or
preferred), and maximum size. All of them are constraints, which means you can use guides not
just as
helpers for alignment, but also as flexible spaces in a layout that can grow and
shrink.</p>\n<h3>Describing constraints in a layout</h3>\n<p>Constraints can be added programmatically, but
like many things in GTK, they can also be described inside GtkBuilder UI files, for convenience. If you add a
GtkConstraintLayout to your UI file, you can list the constraints and guides inside the special
“<constraints>” element:</p>\n<pre> <object class=\"GtkConstraintLayout\">\r\n
<constraints>\r\n <constraint target=\"button1\" target-attribute=\"width\"\r\n
relation=\"eq\"\r\n source=\"button2\" source-attribute=\"width\" />\r\n
<constraint target=\"button2\" target-attribute=\"start\"\r\n relation=\"eq\"\r\n
source=\"button1\" source-attribute=\"end\"\r\n constant=\"12\" />\r\n
<constraint target=\"button1\" target-attribute=\"st
art\"\r\
n relation=\"eq\"\r\n source=\"super\"
source-attribute=\"start\"\r\n constant=\"12\" />\r\n <constraint
target=\"button2\" target-attribute=\"end\"\r\n relation=\"eq\"\r\n
source=\"super\" source-attribute=\"end\"\r\n constant=\"-12\"/>\r\n
</constraints>\r\n </object>\r\n</pre>\n<p>You can also describe a guide, using the
“<guide>” custom element:</p>\n<pre> <constraints>\r\n <guide min-width=\"100\"
max-width=\"500\" />\r\n </constraints>\r\n</pre>\n<h3>Visual Format Language</h3>\n<p>Aside from
XML, constraints can also be described using a compact syntax called “Visual Format Language”. VFL
descriptions are row and column oriented: you describe each row and column in the layout using a line that
visually resembles the layout you’re implementing, for instance:</p>\n<pre>|-[findButton]-
[findEnt
ry(<=250)]-[findNext][findPrev]-|\r\n</pre>\n<p>Describes an horizontal layout where the
<code>findButton</code> widget is separated from the leading edge of the layout manager by some default
space, and followed by the same default amount of space; then by the <code>findEntry</code> widget, which is
meant to be at most 250 pixels wide. After the <code>findEntry</code> widget we have some default space
again, followed by two widgets, <code>findNext</code> and <code>findPrev</code>, flush one against the other;
finally, these two widgets are separated from the trailing edge of the layout manager by the default amount
of space.</p>\n<p>Using the VFL notation, GtkConstraintLayout will create all the required constraints
without necessarily having to describe them all manually.</p>\n<p>It’s important to note that VFL cannot
describe all possible constraints; in some cases you will need to create them using GtkConstraint’s
API.</p>\n<h3>Limits of a constraint layout</h3>\n
<p>Const
raint layouts are immensely flexible because they can implement any layout policy. This flexibility comes at
a cost:</p>\n<ul>\n<li>your layout may have too many solutions, which makes it ambiguous and unstable; this
can be problematic, especially if your layout is very complex</li>\n<li>your layout may not have any
solution. This is usually the case when you’re not using enough constraints; a rule of thumb is to use at
least two constraints per target per dimension, since all widgets should have a defined position and
size</li>\n<li>the same layout can be described by different series of constraints; in some cases it’s
virtually impossible to say which approach is better, which means you will have to experiment, especially
when it comes to layouts that dynamically add or remove UI elements, or that allow user interactions like
dragging UI elements around</li>\n</ul>\n<p>Additionally, at larger scales, a local, ad hoc layout manager
may very well be more performant than
a constr
aint based one; if you have a list box that can grow to an unknown amount of rows you should not replace it
with a constraint layout unless you measure the performance impact upfront.</p>\n<h3>Demos</h3>\n<p>Of
course, since we added this new API, we also added a few demos to the GTK Demo application:</p>\n<figure
aria-describedby=\"caption-attachment-1166\" class=\"wp-caption aligncenter\"><a
href=\"https://blog.gtk.org/files/2019/07/constraint-demo.png\"><img class=\"wp-image-1166 size-full\"
src=\"https://blog.gtk.org/files/2019/07/constraint-demo.png\" alt=\"A constraints demo\" width=\"698\"
height=\"660\" srcset=\"https://blog.gtk.org/files/2019/07/constraint-demo.png 698w,
https://blog.gtk.org/files/2019/07/constraint-demo-300x284.png 300w\" sizes=\"(max-width: 709px) 85vw,
(max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\"></a><figcaption
class=\"wp-caption-text\">The constraints demo window, as part of the GTK demo application.</figc
aption><
/figure><p>As well as a full constraints editor demo:</p>\n<figure
aria-describedby=\"caption-attachment-1169\" class=\"wp-caption aligncenter\"><a
href=\"https://blog.gtk.org/files/2019/07/constraint-editor.png\"><img class=\"wp-image-1169 size-medium\"
src=\"https://blog.gtk.org/files/2019/07/constraint-editor-300x226.png\" alt=\"The GTK constraints editor
demo\" width=\"300\" height=\"226\" srcset=\"https://blog.gtk.org/files/2019/07/constraint-editor-300x226.png
300w, https://blog.gtk.org/files/2019/07/constraint-editor-768x578.png 768w,
https://blog.gtk.org/files/2019/07/constraint-editor.png 938w\" sizes=\"(max-width: 300px) 85vw,
300px\"></a><figcaption class=\"wp-caption-text\">A screenshot of the GTK constraints editor demo
application, showing the list of UI elements, guides, and constraints in a side bar on the left, and the
result on the right side of the window</figcaption></figure><h3>More information</h3>\n<ul>\n<li>\n<a
href=\"https://constraints.cs.washingto
n.edu/ca
ssowary/\">The Cassowary constraint solving toolkit</a>, which links the various papers and
implementations.</li>\n<li>\n<a href=\"https://ebassi.github.io/emeus\">Emeus</a>, a Cassowary implementation
for GTK 3</li>\n</ul>\n",
+ "enclosure": {},
+ "categories": [
+ "uncategorized",
+ "development",
+ "features",
+ "GTK+"
+ ]
+ },
+ {
+ "title": "GTK 3.96.0",
+ "pubDate": "2019-05-08 04:20:47",
+ "link": "https://blog.gtk.org/2019/05/08/gtk-3-96-0/",
+ "guid": "http://blog.gtk.org/?p=1084",
+ "author": "mclasen",
+ "thumbnail": "https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-20-43-31.png",
+ "description": "This week, we released GTK 3.96.0. Again, it has been a while since the last release,
so it is worth summarizing whats new in this release. There is really too much here to cover it all, so this
post will only highlight the most important changes. This release is another milestone on our way towards …
<a href=\"https://blog.gtk.org/2019/05/08/gtk-3-96-0/\" class=\"more-link\">Continue reading<span
class=\"screen-reader-text\"> \"GTK 3.96.0\"</span></a>\n",
+ "content": "\n<p>This week, we released GTK 3.96.0. Again, it has been a while since the last release,
so it is worth summarizing whats new in this release. There is really too much here to cover it all, so this
post will only highlight the most important changes.</p>\n<p>This release is another milestone on our way
towards GTK 4. And while there are still some unfinished things, this release is much closer to we hope to
achieve with GTK 4.</p>\n<h3>GSK</h3>\n<p>GSK has seen a number of bug fixes and new tests that are made much
easier using a new debug tool, gtk4-node-editor. It can load and display serialized render node trees, such
as this one that was saved from the GTK inspector, and compare the output of different renderers.</p>\n<p><a
href=\"https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-20-43-31.png\"><img class=\"alignnone
size-full wp-image-1099\" src=\"https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-20-43-31.png\"
alt=\"\" width=
\"1920\"
height=\"1080\" srcset=\"https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-20-43-31.png 1920w,
https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-20-43-31-300x169.png 300w,
https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-20-43-31-768x432.png 768w,
https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-20-43-31-1024x576.png 1024w,
https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-20-43-31-1200x675.png 1200w\"
sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\"></a></p>\n<p>The
3D transformation support has been brought up to the level where we can do animated transitions like the cube
spin below.</p>\n<p><a
href=\"https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-21-15-18.png\"><img class=\"alignnone
size-full wp-image-1102\" src=\"https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-21-15-18.png\"
alt=\"\" width=\"1920\" height=\"1080\" srcset=\"https://blog.
gtk.org/
files/2019/05/Screenshot-from-2019-05-06-21-15-18.png 1920w,
https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-21-15-18-300x169.png 300w,
https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-21-15-18-768x432.png 768w,
https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-21-15-18-1024x576.png 1024w,
https://blog.gtk.org/files/2019/05/Screenshot-from-2019-05-06-21-15-18-1200x675.png 1200w\"
sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw,
840px\"></a></p>\n<h3>GDK</h3>\n<p>The trend to move toward Wayland inspired APIs has continued, with more
X11-only apis being moved to the X11 backend or just removed. Use of child surfaces and global coordinates
has been greatly reduced, but this work remains incomplete.</p>\n<p>The refactoring of Drag-and-Drop has also
continued, with the introduction of <code>GdkDrag</code> and <code>GdkDrop</code> objects. The GTK part of
this refactoring is still incomplete.</p>\n<p>Events
have be
en simplified and are now used just for input. Other event have been replaced by signals and properties on
<code>GdkSurface</code>. In detail, expose events have been replaced by the <code>::render</code> signal,
configure events have been replaced by the <code>::size-changed</code> signal. Map events have been replaced
by the <code>:mapped</code> property, and <code>gdk_event_handler_set()</code> has been replaced by the
<code>::event</code> signal.</p>\n<p>The Wayland backend has gained support for the Settings portal for
<code>GtkSettings</code>, and uses the text-input-unstable-v3 protocol for its input method
support.</p>\n<h3>GTK</h3>\n<h4>Widgets</h4>\n<p>One big change for custom widgets is the introduction of
<code>GtkLayoutManager</code>, which is a new delegate object that takes over size allocation. Layout
managers can optionally use layout children for holding layout properties. This replaces the layout-related
child properties in GTK containers such as <code>Gt
kBox</co
de> or <code>GtkGrid</code>.</p>\n<p>A number of layout managers are
available:</p>\n<ul>\n<li>\n<code>GtkBinLayout</code>, for simple single-child
containers</li>\n<li>\n<code>GtkBoxLayout</code>, for children that are arranged
linearly</li>\n<li>\n<code>GtkGridLayout</code>, for children that are arranged in a
grid</li>\n<li>\n<code>GtkFixedLayout</code>, for freely positioned and transformed
children</li>\n<li>\n<code>GtkCustomLayout</code>, as a quick way to turn traditional <code>measure</code>
and <code>size_allocate</code> vfuncs into a layout manager</li>\n</ul>\n<p>More layout manager
implementations will appear in the future. Most prominently, work is underway on a constraints-based layout
manager.</p>\n<p><code>GtkAssistant</code>, <code>GtkStack</code> and <code>GtkNotebook</code> have
publicly<br>\naccessible page objects for their children. The page objects<br>\nare also exposed via a list
model. They non-layout related child properties of these containers have
been co
nverted into regular properties on these page objects.</p>\n<p>Since all existing child properties have been
converted to regular properties, moved to layout properties or moved to such page objects, support for child
properties has been dropped from <code>GtkContainer</code>.</p>\n<p>The core <code>GtkEntry</code>
functionality has been moved into a new <code>GtkText</code> widget, which also implements an expanded
<code>GtkEditable</code> interface. All existing entry subclasses in GTK have been turned into
<code>GtkEditable</code> implementations wrapping a <code>GtkText</code> widget. This also includes a new
<code>GtkPasswordEntry</code>.</p>\n<h4>Other Changes</h4>\n<p>GTK widgets can transform their children using
projective linear<br>\ntransformations. This functionality is available in CSS and<br>\nas a
<code>GskTransform</code> argument to <code>gtk_widget_allocate</code>. <code>GtkFixed</code> is<br>\nthe
first container that exposes this functionality. For furthe
r exampl
es,<br>\nsee the swing transition of <code>GtkRevealer</code>, the rotate transitions<br>\nof
<code>GtkStack</code> or the Fixed Layout example in gtk4-demo.</p>\n<p>A number of list models have been
introduced, for internal use<br>\nand as public API: <code>GtkMapListModel</code>,
<code>GtkSliceListModel</code>, <code>GtkSortListModel</code>, <code>GtkSelectionModel</code>,
<code>GtkSingleSelection</code>. These will become more widely used when we introduce a list model-based
<code>GtkListView</code>.</p>\n<p><code>GtkBuilder</code> can specify object-valued properties inline,
instead of referring to them by ID, and the <code>simplify</code> command of gtk4-builder-tool has gained an
option to automatically convert GTK 3 UI definition files to GTK 4.</p>\n<h3>Coming soon</h3>\n<p>For more
information on the things that are still still coming for GTK 4, find us on <a
href=\"https://discourse.gnome.org/\">Discourse</a>, IRC, or look <a href=\"https://gitlab.gnome.org/GNOME/g
tk/miles
tones/1\">here</a>.</p>\n",
+ "enclosure": {},
+ "categories": [
+ "uncategorized",
+ "announcement",
+ "development",
+ "GTK+",
+ "Release"
+ ]
+ },
+ {
+ "title": "Layout managers in GTK 4",
+ "pubDate": "2019-03-27 16:53:25",
+ "link": "https://blog.gtk.org/2019/03/27/layout-managers-in-gtk-4/",
+ "guid": "http://blog.gtk.org/?p=1048",
+ "author": "Emmanuele Bassi",
+ "thumbnail": "",
+ "description": "Containers and layout policies have been a staple of GTK’s design since the very
beginning. If you wanted your widget to lay out its children according to a specific policy, you had to
implement GtkContainer for handling the addition, removal, and iteration of the child widgets, and then you
had to implement the size negotiation … <a href=\"https://blog.gtk.org/2019/03/27/layout-managers-in-gtk-4/\"
class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> \"Layout managers in GTK
4\"</span></a>\n",
+ "content": "\n<p>Containers and layout policies have been a staple of GTK’s design since the very
beginning. If you wanted your widget to lay out its children according to a specific policy, you had to
implement <code>GtkContainer</code> for handling the addition, removal, and iteration of the child widgets,
and then you had to implement the size negotiation virtual functions from <code>GtkWidget</code> to measure,
position, and size each child.</p>\n<p>One of the major themes of the GTK 4 development cycle is to delegate
more functionality to ancillary objects instead of encoding it into the base classes provided by GTK. For
instance, we moved the event handling from signal handlers described by <code>GtkWidget</code> into event
controllers, and rendering is delegated to <code>GtkSnapshot</code> objects. Another step in that direction
is decoupling the layout mechanism from <code>GtkWidget</code> itself to an ancillary type,
<code>GtkLayoutManager</code>.</p>\n<h2>L
ayout Ma
nagers</h2>\n<p>A layout manager is the object responsible for measuring and sizing a widget and its
children. Each <code>GtkWidget</code> owns a <code>GtkLayoutManager</code>, and uses it in place of the
<code>measure()</code> and <code>allocate()</code> virtual functions—which are going away. The gist of the
change: instead of subclassing a <code>GtkWidget</code> to implement its layout policy, you subclass
<code>GtkLayoutManager</code>, and then assign the layout manager to a widget.</p>\n<p>Just like in the old
<code>GtkWidget</code> code, you will need to override a virtual function to measure the layout, called
<code>measure()</code>, which replaces the <code>get_preferred_*</code> family of virtual functions of GTK
3:</p>\n<pre>static void\r\nlayout_measure (GtkLayoutManager *layout_manager,\r\n GtkWidget
*widget,\r\n GtkOrientation orientation,\r\n int
for_size,\r\n int
*minimu
m,\r\n int *natural,\r\n int *minimum_baseline,\r\n
int *natural_baseline)</pre>\n<p>After measuring, you need to assign the size to
the layout; this happens in the <code>allocate()</code> virtual function, which replaces the venerable
<code>size_allocate()</code> virtual function of previous GTK major versions:</p>\n<pre>static
void\r\nlayout_allocate (GtkLayoutManager *layout_manager,\r\n GtkWidget *widget,\r\n
int width,\r\n int height,\r\n int
baseline)</pre>\n<p>On the more esoteric side, you can also override the
<code>get_request_mode()</code> virtual function, which allows you to declare whether the layout manager
requests a constant size, or if one of its sizes depend on the opposite one, like height-for-width or
width-for-height:</p>\n<pre>static GtkSizeRequestMode\r\nlay
out_get_
request_mode (GtkLayoutManager *layout_manager,\r\n GtkWidget
*widget)</pre>\n<p>As you may notice, each virtual function gets passed the layout manager instance, as well
as the widget that is using the layout manager.</p>\n<p>Of course, this has bigger implications on various
aspects of how GTK widgets work, the most obvious being that all the complexity for the layout code can now
stay confined into its own object, typically not derivable, whereas the widgets can stay derivable and become
simpler.</p>\n<p>Another feature of this work is that you can change layout managers at run time, if you want
to change the layout policy of a container; you can also have a per-widget layout policy, without adding more
complexity to the widget code.</p>\n<p>Finally, layout managers allow us to get rid of one of the special
cases of GTK, namely: container child properties.</p>\n<h2>Child properties</h2>\n<p>Deep in the guts of
<code>GtkContainer</code> sits
what’s
essentially a copy of the GObject property-related code, and whose only job is to implement “child”
properties for types deriving from <code>GtkContainer</code>. These container/child properties exist only as
long as a child is parented to a specific class of container, and are used for a variety of reasons—but,
generally, to control layout options, like the packing direction in boxes and box-like containers; the fixed
positioning inside <code>GtkFixed</code>; or the expand/fill rules for notebook tab widgets.</p>\n<p>Child
properties are hard to use, as they require ad hoc API instead of the usual <code>GObject</code> one, and
thus require special casing in <code>GtkBuilder</code>, gtk-doc, and language bindings. Child properties are
also attached to the actual direct child of the container, so if a widget interposes a child—like, say,
<code>GtkScrolledWindow</code> or <code>GtkListBox</code> do—then you need to keep a reference to
<em>that</em> child around in o
rder to
change the layout that applies <em>to your own widget</em>.</p>\n<p>In GTK’s master branch <a
href=\"https://gitlab.gnome.org/GNOME/gtk/issues/1096\">we got rid of most of them</a>—either by simply
removing them when there’s actual widget API that implements the same functionality, or by creating ancillary
GObject types and moving child properties to those types. The end goal is to remove all of them, and the
relative API from <code>GtkContainer</code>, by the time GTK 4 rolls out. For layout-related properties,
<code>GtkLayoutManager</code> provides its own API so that objects are created and destroyed automatically
once a child is added to, or removed from, a widget using a layout manager, respectively. The object created
is introspectable, and does not require special casing when it comes to documentation or
bindings.</p>\n<p>You start from deriving your own type from the <code>GtkLayoutChild</code> class, and
adding properties just like you would for any other <cod
e>GObjec
t</code> type. Then, you override <code>GtkLayoutManager</code>‘s <code>create_layout_child()</code> virtual
function:</p>\n<pre>static GtkLayoutChild *\r\ncreate_layout_child (GtkLayoutManager *manager,\r\n
GtkWidget *container,\r\n GtkWidget *child)\r\n{\r\n // The simplest
implementation\r\n return g_object_new (your_layout_child_get_type (),\r\n
\"layout-manager\", manager,\r\n \"child-widget\", child,\r\n
\"some-property\", some_property_initial_state,\r\n NULL);\r\n}</pre>\n<p>After that,
you can access your layout child object as long as a widget is still a child of the container using the
layout manager; if the child is removed from its parent, or the container changes the layout manager, the
layout child is automatically collected.</p>\n<h2>New layout managers</h2>\n<p>Of course, just having the
<code>GtkLayoutManager</code> class in GT
K would
not do us any good. GTK 4 introduces various layout managers for application and widget
developers:</p>\n<ul>\n<li>\n<code>GtkBinLayout</code> implements the layout policy of <code>GtkBin</code>,
with the added twist that it supports multiple children stacked on top of each other, similarly to how
<code>GtkOverlay</code> works. You can use each widget’s alignment and expansion properties to control their
location within the allocated area, and the <code>GtkBinLayout</code> will always ask for as much space as
it’s needed to allocate its largest child.</li>\n<li>\n<code>GtkBoxLayout</code> is a straight port of the
layout policy implemented by <code>GtkBox</code>; <code>GtkBox</code> itself has been ported to use
<code>GtkBoxLayout</code> internally.</li>\n<li>\n<code>GtkFixedLayout</code> is a port of the fixed layout
positioning policy of <code>GtkFixed</code> and <code>GtkLayout</code>, with the added functionality of
letting you define a generic transformation, instea
d of a p
ure 2D translation for each child; <code>GtkFixed</code> has been modified to use
<code>GtkFixedLayout</code> and use a 2D translation—and <code>GtkLayout</code> has been merged into
<code>GtkFixed</code>, as its only distinguishing feature was the implementation of the
<code>GtkScrollable</code> interface.</li>\n<li>\n<code>GtkCustomLayout</code> is a convenience layout
manager that takes functions that used to be GtkWidget virtual function overrides, and it’s mostly meant to
be a bridge while porting existing widgets towards the layout manager future.</li>\n</ul>\n<p>We are still in
the process of implementing <code>GtkGridLayout</code> and make <code>GtkGrid</code> use it internally,
following the same pattern as <code>GtkBoxLayout</code> and <code>GtkBox</code>. Other widgets inside GTK
will get their own layout managers along the way, but in the meantime they can use
<code>GtkCustomLayout</code>.</p>\n<p>The final step is to implement a constraint-based layout manag
er, whic
h would let us create complex, responsive user interfaces without resorting to packing widgets into nested
hierarchies. Constraint-based layouts deserve their own blog post, so stay tuned!</p>\n",
+ "enclosure": {},
+ "categories": [
+ "uncategorized",
+ "development"
+ ]
+ },
+ {
+ "title": "Entries in GTK 4",
+ "pubDate": "2019-03-15 20:43:40",
+ "link": "https://blog.gtk.org/2019/03/15/entries-in-gtk-4/",
+ "guid": "http://blog.gtk.org/?p=1023",
+ "author": "mclasen",
+ "thumbnail": "https://blog.gtk.org/files/2019/03/passwordentry2.png",
+ "description": "One of the larger refactorings that recently landed in GTK master is re-doing the
entry hierarchy. This post is summarizing what has changed, and why we think things are better this way.
Entries in GTK 3 Lets start by looking at how things are in GTK 3. GtkEntry is the basic class here. It
implements … <a href=\"https://blog.gtk.org/2019/03/15/entries-in-gtk-4/\" class=\"more-link\">Continue
reading<span class=\"screen-reader-text\"> \"Entries in GTK 4\"</span></a>\n",
+ "content": "\n<p>One of the larger refactorings that recently landed in GTK master is re-doing the
entry hierarchy. This post is summarizing what has changed, and why we think things are better this
way.</p>\n<h2>Entries in GTK 3</h2>\n<p>Lets start by looking at how things are in GTK 3.</p>\n<p>GtkEntry is
the basic class here. It implements the GtkEditable interface. GtkSpinButton is a subclass of GtkEntry. Over
the years, more things were added. GtkEntry gained support for entry completion, and for embedding icons, and
for displaying progress. And we added another subclass, GtkSearchEntry.</p>\n<p>Some problems with this
approach are immediately apparent. gtkentry.c is more than 11100 lines of code. It it not only very hard to
add more features to this big codebase, it is also hard to subclass it – and that is the only way to create
your own entries, since all the single-line text editing functionality is inside GtkEntry.</p>\n<p>The
GtkEditable interface is reall
y old ��
� it has been around since before GTK 2. Unfortunately, it has not really been successful as an interface –
GtkEntry is the only implementation, and it uses the interface functions internally in a confusing
way.</p>\n<h2>Entries in GTK 4</h2>\n<p>Now lets look at how things are looking in GTK master.</p>\n<p>The
first thing we’ve done is to move the core text editing functionality of GtkEntry into a new widget called
GtkText. This is basically an entry minus all the extras, like icons, completion and progress.</p>\n<p>We’ve
made the GtkEditable interface more useful, by adding some more common functionality (like width-chars and
max-width-chars) to it, and made GtkText implement it. We also added helper APIs to make it easy to delegate
a GtkEditable implementation to another object.</p>\n<p>The ‘complex’ entry widgets (GtkEntry, GtkSpinButton,
GtkSearchEntry) are now all composite widgets, which contain a GtkText child, and delegate their GtkEditable
implementati
on to th
is child.</p>\n<p>Finally, we added a new GtkPasswordEntry widget, which takes over the corresponding
functionality that GtkEntry used to have, such as showing a Caps Lock warning</p>\n<p><a
href=\"https://blog.gtk.org/files/2019/03/passwordentry2.png\"><img class=\"aligncenter\"
src=\"https://blog.gtk.org/files/2019/03/passwordentry2.png\" alt=\"\" width=\"287\"
height=\"200\"></a></p>\n<p>or letting the user peek at the content.</p>\n<p><a
href=\"https://blog.gtk.org/files/2019/03/passwordentry1.png\"><img class=\"aligncenter\"
src=\"https://blog.gtk.org/files/2019/03/passwordentry1.png\" alt=\"\" width=\"288\"
height=\"201\"></a></p>\n<h2>Why is this better?</h2>\n<p>One of the main goals of this refactoring was to
make it easier to create custom entry widgets outside GTK.</p>\n<p>In the past, this required subclassing
GtkEntry, and navigating a complex maze of vfuncs to override. Now, you can just add a GtkText widget,
delegate your GtkEditable implementation to it, and
have a f
unctional entry widget with very little effort.</p>\n<p>And you have a lot of flexibility in adding fancy
things around the GtkText component. As an example, we’ve added a <a
href=\"https://gitlab.gnome.org/GNOME/gtk/blob/master/demos/gtk-demo/demotaggedentry.c\">tagged entry</a> to
gtk4-demo that can now be implemented easily outside GTK itself.</p>\n<p><a
href=\"https://blog.gtk.org/files/2019/03/taggedentry.png\"><img class=\"size-full wp-image-1029
aligncenter\" src=\"https://blog.gtk.org/files/2019/03/taggedentry.png\" alt=\"\" width=\"314\"
height=\"207\" srcset=\"https://blog.gtk.org/files/2019/03/taggedentry.png 314w,
https://blog.gtk.org/files/2019/03/taggedentry-300x198.png 300w\" sizes=\"(max-width: 314px) 85vw,
314px\"></a></p>\n<h2>Will this affect you when porting from GTK 3?</h2>\n<p>There are a few possible
gotcha’s to keep in mind while porting code to this new style of doing entries.</p>\n<p>GtkSearchEntry and
GtkSpinButton are no longer derived from Gt
kEntry.
If you see runtime warnings about casting from one of these classes to GtkEntry, you most likely need to
switch to using GtkEditable APIs.</p>\n<p>GtkEntry and other complex entry widgets are no longer focusable –
the focus goes to the contained GtkText instead. But gtk_widget_grab_focus() will still work, and move the
focus the right place. It is unlikely that you are affected by this.</p>\n<p>The Caps Lock warning
functionality has been removed from GtkEntry. If you were using a GtkEntry with visibility==FALSE for
passwords, you should just switch to GtkPasswordEntry.</p>\n<p>If you are using a GtkEntry for basic editing
functionality and don’t need any of the extra entry functionality, you should consider using a GtkText
instead.</p>\n",
+ "enclosure": {},
+ "categories": [
+ "uncategorized"
+ ]
+ },
+ {
+ "title": "Testing Discourse for GTK",
+ "pubDate": "2019-03-05 15:16:11",
+ "link": "https://blog.gtk.org/2019/03/05/testing-discourse-for-gtk/",
+ "guid": "http://blog.gtk.org/?p=1008",
+ "author": "Emmanuele Bassi",
+ "thumbnail": "",
+ "description": "For the past 20 years or so, GTK used IRC and mailing lists for discussions related to
the project. Over the years, use of email for communication has declined, and the overhead of maintaining the
infrastructure has increased; sending email to hundreds or thousands of people has become increasingly
indistinguishable from spam, in the eyes … <a
href=\"https://blog.gtk.org/2019/03/05/testing-discourse-for-gtk/\" class=\"more-link\">Continue reading<span
class=\"screen-reader-text\"> \"Testing Discourse for GTK\"</span></a>\n",
+ "content": "\n<p>For the past 20 years or so, GTK used IRC and mailing lists for discussions related
to the project. Over the years, use of email for communication has declined, and the overhead of maintaining
the infrastructure has increased; sending email to hundreds or thousands of people has become increasingly
indistinguishable from spam, in the eyes of service providers, and GNOME had to try and ask for
exceptions—which are not easy to get, and are quite easy to be revoked. On top of that, the infrastructure in
use for managing mailing lists is quite old and crumbly, and it’s unnecessarily split into various
sub-categories that make following discussions harder than necessary.</p>\n<p>After discussions among the GTK
team, with the GNOME infrastructure maintainers, and with the GTK community at large, we decided to start a
trial run of <a href=\"https://www.discourse.org/\">Discourse</a> as a replacement for mailing lists, first
and foremost, and as a way to p
rovide a
n official location for the GTK community to discuss the development of, and with, GTK—as well as the rest
of the core GNOME platform: GLib, Pango, GdkPixbuf, etc.</p>\n<p>You can find the Discourse instance on <a
href=\"https://discourse.gnome.org/\">discourse.gnome.org</a>. On it, you can use the <a
href=\"https://discourse.gnome.org/c/platform\">Platform</a> and <a
href=\"https://discourse.gnome.org/c/platform/core\">Core</a> categories for discussions about the core GNOME
platform; you can use the appropriate <a href=\"https://discourse.gnome.org/tags/\">tags</a> for your topics,
and subscribe to the ones you’re interested in.</p>\n<p>We’re planning to move some of the pages on the wiki
to Discourse as well, especially the ones where we expect feedback from the community.</p>\n<p>We’re still <a
href=\"https://gitlab.gnome.org/Infrastructure/Infrastructure/issues/109\">working on how to migrate
users</a> of the various mailing lists related to GTK, in order to clo
se the l
ists and have a single venue instead of splitting the community; in the meantime, if you’re subscribed to
one or more of these
lists:</p>\n<ul>\n<li>gtk-devel-list</li>\n<li>gtk-app-devel-list</li>\n<li>gtk-list</li>\n<li>gtk-i18n-list</li>\n</ul>\n<p>then
you may want to have a look at Discourse, and join the discussions there.</p>\n",
+ "enclosure": {},
+ "categories": [
+ "uncategorized"
+ ]
+ },
+ {
+ "title": "Report from the GTK hackfest in Brussels",
+ "pubDate": "2019-02-08 14:18:14",
+ "link": "https://blog.gtk.org/2019/02/08/report-from-the-gtk-hackfest-in-brussels/",
+ "guid": "http://blog.gtk.org/?p=993",
+ "author": "Emmanuele Bassi",
+ "thumbnail": "https://blog.gtk.org/wp-includes/images/smilies/face-wink.png",
+ "description": "Thanks to the GNOME Foundation, various GTK developers were able to meet in Brussels
right after FOSDEM, for one of our yearly hackfests. The main topics of the hackfest were: recap the work
that landed into the master branch in the past 6-12 months, in order to have everyone on the same page
discuss the … <a href=\"https://blog.gtk.org/2019/02/08/report-from-the-gtk-hackfest-in-brussels/\"
class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> \"Report from the GTK hackfest in
Brussels\"</span></a>\n",
+ "content": "\n<p>Thanks to the <a href=\"https://www.gnome.org/foundation/\">GNOME Foundation</a>,
various GTK developers were able to meet in Brussels right after <a
href=\"https://fosdem.org/2019/\">FOSDEM</a>, for one of our <a
href=\"https://wiki.gnome.org/Hackfests/GTK2019\">yearly hackfests</a>.</p>\n<p>The main topics of the
hackfest were:</p>\n<ul>\n<li>recap the work that landed into the master branch in the past 6-12 months, in
order to have everyone on the same page</li>\n<li>discuss the features still in flight in separate branches,
assess their state of completion, and identify blockers</li>\n<li>figure out what are the blockers for the
first release of GTK 4.0</li>\n</ul>\n<p>Hackfests allow us to have this kind of discussions with a large
bandwidth at our disposal, compared to online communication channels, so they are very important for the
project.</p>\n<p>You can see the <a href=\"https://wiki.gnome.org/Hackfests/GTK2019/Agenda\">full agenda on
the wi
ki</a>,
and we’ll make sure to write articles on the biggest items on it.</p>\n<p>The largest items of the
discussion were the introduction of new list models and list/grid view widgets; a unified key handling API;
the decoupling of layout management policies from containers, and the introduction of constraint layout
management; the possibility of merging widgets from libhandy, to allow for writing applications responsive to
form factor changes; the switch to a purely declarative menu description API, and the removal of public menu
widgets; adding 2D and 3D transformations to <code>GtkWidget</code>; implementing an animation API that
applications can consume.</p>\n<ul>\n<li>\n<strong>list models and list/grid widgets</strong> — we’d really
like to retire <code>GtkTreeView</code> and <code>GtkIconView</code>, but the existing replacements,
<code>GtkListBox</code> and <code>GtkFlowBox</code>, are not performant enough when scaling to very large and
dynamic data sets. We need bet
ter data
storage types, that can be composed to perform operations such as mapping, filtering, and sorting, but can
also avoid iterating over all the elements when sizing and drawing widgets. Benjamin Otte already <a
href=\"https://gnome.pages.gitlab.gnome.org/gtk/gtk/Lists.html\">added various models</a> to GTK, and is
working on a list and a grid view widgets that can efficiently display their contents. Benjamin and other
GNOME application developers are in the process of identifying various stakeholders for a separate hackfest
specifically for gathering more requirements and getting feedback on the new API.</li>\n<li>\n<strong>unified
key handling API</strong> — now that we moved all our pointer and touch input handling away from events and
towards gestures, we want to do the same for key handling, like key bindings, mnemonics, and accelerators.
The overall design is based on triggering actions, and allow introspection of all the “shortcuts” currently
available to the GTK
inspect
or, for ease of debugging. There is <a href=\"https://gitlab.gnome.org/GNOME/gtk/tree/wip/otte/shortcut\">a
development branch</a> already available.</li>\n<li>\n<strong>layout managers</strong> — in GTK 3, layout is
imposed by containers on their children; we want to be able to decouple that from widgets and move it into a
separate delegate objects hierarchy. Layout managers allow us to reduce the complexity of writing new
widgets; they keep the layout code in a separate, non-derivable type; and they allow us to simplify the
toolkit internals to the point that we might even make <code>GtkWidget</code> and instantiable type in the
future. Layout managers are the first step towards adding constraint-based layout management to GTK, which do
away with nesting boxes to create complex UIs. There is <a
href=\"https://gitlab.gnome.org/GNOME/gtk/tree/wip/layout-manager\">a development branch</a> already
available. For more information on constraint layouts, you can see the <a href
=\"https
://ebassi.github.io/emeus/\">Emeus experimental library</a> for GTK 3.</li>\n<li>\n<strong>merging widgets
from libhandy</strong> — Adrien Plazas gave <a
href=\"http://bytesgnomeschozo.blogspot.com/2019/02/fosdem-and-gtk-hackfest-2019.html\">an overview</a> of
what’s currently provided by <a href=\"https://gitlab.gnome.org/Community/Purism/libhandy\">libhandy</a>, and
what would be useful to have straight from GTK4 in the future. We discussed reactive layouts, and the ability
express sizing with percentages, as well as possibly using constraints to get similar
results.</li>\n<li>\n<strong>declarative menus</strong> — GTK has iterated over different menus API over the
years; from building menus out of widgets, to <code>GtkUIManager</code>, to <code>GtkBuilder</code>, to
<code>GMenu</code>; we also moved to declaring the behaviour of pop up menus, in order to have the windowing
system display them more accurately without exposing global coordinates. There’s a lot of ov
erlap, b
ut no clear winner, mostly because we still allow using widgets to build application menus and context
menus. Fully switching to declarative style menus, adding new API to make them more expressive, and making
GtkMenu and friends private implementations for the toolkit, would allow us to get things like being able to
inspect all menus, even out of process; menus manipulable by plugin systems without necessarily creating
widgets and keeping track of them; avoiding positioning bugs. There is <a
href=\"https://wiki.gnome.org/Projects/GTK/Menus\">a full strawman proposal</a> available on the wiki, and
Matthias Clasen is working on switching context menus to <code>GMenu</code> in <a
href=\"https://gitlab.gnome.org/GNOME/gtk/tree/wip/matthiasc/context-menu\">a development
branch</a>.</li>\n<li>\n<strong>widget transformations</strong> — Sadly, Timm Bädert couldn’t make it to the
hackfest, but we’ve been reviewing his <a href=\"https://gitlab.gnome.org/GNOME/gtk/tree/wip/bae
dert/tra
nsforms6\">development branch</a> that adds 2D and 3D transformations to GTK widgets, and we’re very excited
about it.</li>\n<li>\n<strong>animations</strong> — one last thing we’d like to land for GTK4 is an animation
framework for GTK widgets to replace the current generic “frame tick callback”. The model for it is the <a
href=\"https://developer.gnome.org/clutter/stable/ClutterActor.html#clutter-actor-animation\">Clutter
explicit animation API</a>, which in turn was based on Core Animation and CSS3 transitions. This work is
still in the design phase, but you can expect development branches for it to land soon.</li>\n</ul>\n<p>Aside
from the big topics, we also discussed various smaller ones:</p>\n<ul>\n<li>improving performance and memory
use; we want to expose the SysProf counters during the frame clock phases, so we can easily identify
problems.</li>\n<li>improving the test suite, especially when it comes to reporting failures; right now, we
have to go through
the CI
failure log, but we’d like to publish proper reports using the GitLab CI infrastructure</li>\n<li>replacing
child properties with real <code>GObject</code> properties on ancillary objects, especially for layout
managers; would make documentation, introspection, and usage clearer.</li>\n<li>finishing the drag and drop
rework, to get a more modern API.</li>\n<li>adding a top-level interface for “window-like” objects—such as
windows, dialogs, popovers, menus/popups—useful for establishing common behaviour, and removing hacks and
complexity in <code>GtkWindow</code>.</li>\n</ul>\n<p>And, finally, yes: <a
href=\"https://mail.gnome.org/archives/gtk-devel-list/2019-February/msg00000.html\">we did remove the “plus”
from GTK</a>. <img src=\"https://blog.gtk.org/wp-includes/images/smilies/face-wink.png\" alt=\";-)\"
class=\"wp-smiley\"></p>\n",
+ "enclosure": {},
+ "categories": [
+ "uncategorized"
+ ]
+ },
+ {
+ "title": "Theme changes, revisited",
+ "pubDate": "2019-01-21 16:21:00",
+ "link": "https://blog.gtk.org/2019/01/21/theme-changes-revisited/",
+ "guid": "http://blog.gtk.org/?p=986",
+ "author": "mclasen",
+ "thumbnail": "",
+ "description": "A quick update on last weeks post about theme changes: We’ve made a 3.24.4 release, to
fix up a few oversights in 3.24.3. This release does not include the new theme yet, we will push that to the
next release. We’ve also made another NewAdwaita tarball, which includes refinements based on some of the
suggestions … <a href=\"https://blog.gtk.org/2019/01/21/theme-changes-revisited/\"
class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> \"Theme changes,
revisited\"</span></a>\n",
+ "content": "\n<p>A quick update on last weeks <a
href=\"http://blog.gtk.org/2019/01/14/theme-changes-in-gtk-3/\">post</a> about theme changes:</p>\n<p>We’ve
made a 3.24.4 <a href=\"https://download.gnome.org/sources/gtk+/3.24/gtk+-3.24.4.tar.xz\">release</a>, to fix
up a few oversights in 3.24.3. This release does <em>not</em> include the new theme yet, we will push that to
the next release.</p>\n<p>We’ve also made another <a
href=\"https://download.gnome.org/misc/testing/Adwaita/NewAdwaita-2.tar.xz\">NewAdwaita</a> tarball, which
includes refinements based on some of the suggestions we received since last week.</p>\n<p>Try it out, and
tell us about it!</p>\n",
+ "enclosure": {},
+ "categories": [
+ "uncategorized"
+ ]
+ },
+ {
+ "title": "Theme changes in GTK 3",
+ "pubDate": "2019-01-14 19:20:40",
+ "link": "https://blog.gtk.org/2019/01/14/theme-changes-in-gtk-3/",
+ "guid": "http://blog.gtk.org/?p=926",
+ "author": "mclasen",
+ "thumbnail": "https://blog.gtk.org/files/2019/01/color-palette.png",
+ "description": "Adwaita has been the default GTK+ theme for quite a while now (on all platforms). It
has served us well, but Adwaita hasn’t seen major updates in some time, and there is a desire to give it a
refresh. Updating Adwaita is a challenge, since most GTK applications are using the stable 3.x series, and …
<a href=\"https://blog.gtk.org/2019/01/14/theme-changes-in-gtk-3/\" class=\"more-link\">Continue reading<span
class=\"screen-reader-text\"> \"Theme changes in GTK 3\"</span></a>\n",
+ "content": "\n<p>Adwaita has been the default GTK+ theme for quite <a
href=\"https://blogs.gnome.org/mclasen/2014/06/13/a-new-default-theme-for-gtk/\">a while</a> now (on all
platforms). It has served us well, but Adwaita hasn’t seen major updates in some time, and there is a desire
to give it a refresh.</p>\n<p>Updating Adwaita is a challenge, since most GTK applications are using the
stable 3.x series, and some of them include Adwaita-compatible theming for their own custom widgets. Given
the stable nature of this release series, we don’t want to cause theme compatibility issues for applications.
At the same time, 3.x is the main GTK version in use today, and we want to ensure that GTK applications don’t
feel stale or old fashioned.</p>\n<h2>A trial</h2>\n<p>A number of approaches to this problem have been
considered and discussed. Out of these, a tentative plan has been put forward to trial a limited set of theme
changes, with the possibility of including them
in a fu
ture GTK 3 release.</p>\n<p>Our hope is that, due to the limited nature of the theme changes, they shouldn’t
cause issues for applications. However, we don’t want to put our faith in hope alone. Therefore, the next
three weeks are being designated as a testing and consultation period, and if things go well, we hope to
merge the theme into the GTK 3.24.4 release.</p>\n<p>It should be emphasised that these changes are confined
to Adwaita itself. GTK’s CSS selectors and classes have not been changed since GTK 3.22, and the changes in
Adwaita won’t impact other GTK themes.</p>\n<p>The Adwaita updated theme is being made available as a
separate tarball in parallel with the GTK 3.24.3 release, and can be downloaded <a
href=\"https://download.gnome.org/misc/testing/Adwaita\">here</a>. GTK application developers are invited to
try 3.24.3 along with the new version of Adwaita, and report any issues that they encounter. The GTK team and
Adwaita authors will also be conducting
their ow
n tests. Details of how to test the new theme in various ways are described <a
href=\"https://download.gnome.org/misc/testing/Adwaita/README\">here</a>.</p>\n<p>We are hoping to strike a
balance between GTK’s stability promises on the one hand, and the desire to provide up-to-date applications
on the other. It is a delicate balance to get right and we are keen to engage with GTK users as part of this
process!</p>\n<h2>Theme changes</h2>\n<p>The rest of this post summarises which changes are have been made to
the theme. This will hopefully demonstrate the limited extent of these changes. It will also help developers
know what to look for when testing.</p>\n<h3>Colors</h3>\n<p>Many of the Adwaita colors have been very
slightly tweaked. The new colors are more vivid than the previous versions, and so give Adwaita more energy
and vibrancy. The new colors also form part of a more extensive palette, which is being used for application
icons. These colours can also be used in cus
tom appl
ication styling.</p>\n<p><a href=\"https://blog.gtk.org/files/2019/01/color-palette.png\"><img
class=\"size-full wp-image-968 aligncenter\" src=\"https://blog.gtk.org/files/2019/01/color-palette.png\"
alt=\"\" width=\"639\" height=\"504\" srcset=\"https://blog.gtk.org/files/2019/01/color-palette.png 639w,
https://blog.gtk.org/files/2019/01/color-palette-300x237.png 300w\" sizes=\"(max-width: 709px) 85vw,
(max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\"></a></p>\n<p>The color
changes are subtle, so any compatibility issues between the new and the old versions should not be serious.
Blue is still blue (just a slightly different shade!) Red is still red. Visually, the dark and light versions
of the theme remain largely the same.</p>\n<p>Adwaita’s dark variant, showing the slight color changes
between old (left) and new (right).</p>\n<p><a href=\"https://blog.gtk.org/files/2019/01/colors.png\"><img
class=\"aligncenter wp-image-944 size-full\"
src=\"h
ttps://blog.gtk.org/files/2019/01/colors.png\" alt=\"\" width=\"1060\" height=\"400\"
srcset=\"https://blog.gtk.org/files/2019/01/colors.png 1060w,
https://blog.gtk.org/files/2019/01/colors-300x113.png 300w,
https://blog.gtk.org/files/2019/01/colors-768x290.png 768w,
https://blog.gtk.org/files/2019/01/colors-1024x386.png 1024w\" sizes=\"(max-width: 709px) 85vw, (max-width:
909px) 67vw, (max-width: 1362px) 62vw, 840px\"></a>Note that the red of the button has been toned down a bit
in the dark theme.</p>\n<h3>Header bars and buttons</h3>\n<p>Most widgets have not been specifically changed
in the updated version of Adwaita. However, two places where there are widget-specific changes are header
bars and buttons. In both cases, an effort has been made to be lighter and more elegant.</p>\n<p>Buttons have
had their solid borders replaced with shadows. Their background is also flatter and their corners are more
rounded. Their shape has also been changed very slightly.</p>\n<p>Header
bars ha
ve been updated to complement the button changes. This has primarily been done by darkening their
background, in order to give buttons sufficient contrast. The contrast between header bars’ focused and
unfocused states has also been increased. This makes it easier for users to identify the focused
window.</p>\n<p>At first glance, these changes are some of the most significant, but they are achieved with
some quite minor code changes.</p>\n<p>The header bar in GNOME’s Calendar app (old version on top, new
version on the bottom):</p>\n<p><a href=\"https://blog.gtk.org/files/2019/01/headerbars.png\"><img
class=\"aligncenter wp-image-953 size-full\" src=\"https://blog.gtk.org/files/2019/01/headerbars.png\"
alt=\"\" width=\"940\" height=\"400\" srcset=\"https://blog.gtk.org/files/2019/01/headerbars.png 940w,
https://blog.gtk.org/files/2019/01/headerbars-300x128.png 300w,
https://blog.gtk.org/files/2019/01/headerbars-768x327.png 768w\" sizes=\"(max-width: 709px) 85vw, (max-wid
th: 909p
x) 67vw, (max-width: 1362px) 62vw, 840px\"></a></p>\n<h3>Switches</h3>\n<p>Aside from header bars and
buttons, the only other widget to be changed is switches. When GTK first introduced switches, they were a
fairly new concept on the desktop. For this reason, they included explicit “ON” and “OFF” labels, in order to
communicate how the switches operated. Since then, switch widgets have become ubiquitous, and users have
become familiar with switches that don’t contain labels.</p>\n<p>The latest Adwaita changes bring the theme
into line with other platforms and make switches more compact and modern in appearance, by removing the
labels and introducing a more rounded shape.</p>\n<div class=\"wp-video\">\n<!--[if lt IE
9]><script>document.createElement('video');</script><![endif]-->\n<video class=\"wp-video-shortcode\"
width=\"800\" height=\"600\" preload=\"none\" controls=\"controls\"><source type=\"video/webm\"
src=\"https://blog.gtk.org/files/2019/01/adwaita-setting
s.webm?_
=1\"></source><a
href=\"https://blog.gtk.org/files/2019/01/adwaita-settings.webm\">https://blog.gtk.org/files/2019/01/adwaita-settings.webm</a></video>\n</div>\n<h3>Elsewhere,
no change</h3>\n<p>Aside from the changes described above, very little has changed in Adwaita. The vast
majority of widgets remain the same, albeit with very slightly altered colours. Generally, UI layouts
shouldn’t alter and users should feel comfortable with the changes.</p>\n<p>Spot the difference (the old
version of Adwaita is on the left and the new version is on the right):</p>\n<p><a
href=\"https://blog.gtk.org/files/2019/01/no-change.png\"><img class=\"alignnone size-full wp-image-959\"
src=\"https://blog.gtk.org/files/2019/01/no-change.png\" alt=\"\" width=\"820\" height=\"240\"
srcset=\"https://blog.gtk.org/files/2019/01/no-change.png 820w,
https://blog.gtk.org/files/2019/01/no-change-300x88.png 300w,
https://blog.gtk.org/files/2019/01/no-change-768x225.png 768w\" sizes=\"(max-width: 709px)
85vw, (
max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw,
600px\"></a></p>\n<h2>Conclusion</h2>\n<p>Please try the new theme. We hope you like it!</p>\n<p>And we
appreciate your feedback—in particular if you are a GTK application developer. You can provide it on irc (in
the #gtk+ channel on GimpNet) or via the gtk-devel-list mailing list, or by filing an issue in <a
href=\"https://gitlab.gnome.org/GNOME/gtk\">gitlab</a>.</p>\n",
+ "enclosure": {
+ "link": "https://blog.gtk.org/files/2019/01/adwaita-settings.webm",
+ "type": "video/webm",
+ "length": 121954
+ },
+ "categories": [
+ "uncategorized"
+ ]
+ },
+ {
+ "title": "A report from the Guadec GTK+ BoF",
+ "pubDate": "2018-07-12 12:11:20",
+ "link": "https://blog.gtk.org/2018/07/12/a-report-from-the-guadec-gtk-bof/",
+ "guid": "http://blog.gtk.org/?p=894",
+ "author": "mclasen",
+ "thumbnail": "https://blog.gtk.org/files/2018/07/20180709_105816-300x225.jpg",
+ "description": "The GTK+ team had a full day planning session during the BoF days at Guadec, and we
had a full room, including representatives from several downstreams, not just GNOME. We had a pretty packed
agenda, too. GTK+ 3 We started out by reviewing the GTK+ 3 plans that we’ve outlined earlier. In addition to
what … <a href=\"https://blog.gtk.org/2018/07/12/a-report-from-the-guadec-gtk-bof/\"
class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> \"A report from the Guadec GTK+
BoF\"</span></a>\n",
+ "content": "\n<p>The GTK+ team had a full day planning session during the BoF days at Guadec, and we
had a full room, including representatives from several downstreams, not just GNOME.</p>\n<p>We had a pretty
packed <a href=\"https://wiki.gnome.org/GUADEC/2018/Hacking%20days/GtkBOF\">agenda</a>, too.<br><a
href=\"https://blog.gtk.org/files/2018/07/20180709_105816.jpg\"><img class=\"size-medium wp-image-896
aligncenter\" src=\"https://blog.gtk.org/files/2018/07/20180709_105816-300x225.jpg\" alt=\"\" width=\"300\"
height=\"225\" srcset=\"https://blog.gtk.org/files/2018/07/20180709_105816-300x225.jpg 300w,
https://blog.gtk.org/files/2018/07/20180709_105816-768x576.jpg 768w,
https://blog.gtk.org/files/2018/07/20180709_105816-1024x768.jpg 1024w,
https://blog.gtk.org/files/2018/07/20180709_105816-1200x900.jpg 1200w\" sizes=\"(max-width: 300px) 85vw,
300px\"></a></p>\n<h3>GTK+ 3</h3>\n<p>We started out by reviewing the GTK+ 3 plans that we’ve outlined <a
href=\"https://blo
g.gtk.or
g/2018/06/23/a-gtk-3-update/\">earlier</a>.</p>\n<p>In addition to what was mentioned there, we also plan to
backport the new event controllers, to make porting to GTK+ 4 easier. We will also add meson build support to
help with Windows builds.</p>\n<p>The 3.24 releases will effectively be a continuation of the 3.22 branch and
should be entirely safe to put out as stable updates in distributions.</p>\n<p>We plan to release GTK+ 3.24.0
in time for GNOME 3.30.</p>\n<h3>GTK+ 4 leftovers</h3>\n<p>The bulk of the day was taken up by GTK+ 4
discussion. We’ve reviewed the list of leftover tasks on the roadmap:</p>\n<ul>\n<li>Finish DND: Gestures on
the GTK+ level, local shortcuts</li>\n<li>Introduce GtkToplevel and cleanly support popovers</li>\n<li>Add
transformations</li>\n<li>Create a shortcuts event controller to replace key bindings</li>\n<li>Port
GtkTextView to render nodes</li>\n<li>Profile the cairo backend, make sure its performance is on par with
GTK+ 3</li>\n<li>Port v
arious d
ependent
libraries:\n<ul>\n<li>vte</li>\n<li>webkit</li>\n<li>libchamplain</li>\n<li>gtk-vnc</li>\n<li>gtk-spice</li>\n</ul>\n</li>\n</ul>\n<p>Most
of these tasks have names next to them, but if you want to help with any of these tasks, by all means,
contact us!</p>\n<p>Noticeably absent from this list are a few things that were on the roadmap
before:</p>\n<ul>\n<li>Constraint-based layout (emeus)</li>\n<li>Shader compiler and application provided
shaders</li>\n<li>Designer support</li>\n</ul>\n<p>All of these can still happen if merge requests appear,
but we don’t think that we should block on them. They can be developed externally to GTK+ 4, and become GTK+
5 material.</p>\n<h3>GTK+ backends</h3>\n<p>We spent some time evaluating the state of GDK backends in GTK+
master.</p>\n<p>The Windows backend is in OK shape. We have several people who help with maintenance and
feature development for it, meson makes building it a lot easier, and we have ci for it.</p>\n<p>The Quart
z backen
d is in a much worse state. It has not been kept in buildable shape, nobody is providing fixes or feature
development for it, and we don’t have ci. We had a macbook offered that could be used for ci, and it was
suggested that we could use travis ci for the OS X.</p>\n<h3>GTK+ timeline</h3>\n<p>We spent a long time on
this, and did not reach a 100% consensus, but it seems realistic to aim for a GTK+ 4 release in spring of
2019, if we keep making good progress on the outstanding leftovers.</p>\n<p>When we release GTK+ 3.96, we
will also announce a date for GTK+ 4.0. We hope to be able commit to release before GNOME 3.32, so GNOME
application developers can switch their master branches to GTK+ 4 without worrying about whether that will
disrupt other development for 3.32.</p>\n<h3>Application porting</h3>\n<p>We really want feedback from
application ports at this point. But we are in a bit of a difficult position, since we can’t plausibly claim
to be done with major API work
until t
he GtkToplevel and shortcuts controller work is done.</p>\n<p>Our recommendation to app authors at this
point is:</p>\n<ul>\n<li>If you are a bit adventurous, do a port to 3.94 on a branch. It should be possible
to keep it working without too much work during the remainder of GTK+ 4 development.</li>\n<li>If you are not
quite as adventurous, wait until 3.24 is released, use it to prepare your port, and port to GTK+
3.96.</li>\n<li>Either way, please make your port available to users for testing, either as a regular
release, or as a Flatpak with a bundled GTK+.</li>\n</ul>\n<h3>GLib diversion</h3>\n<p>In the afternoon, we
spent a while talking about GLib. We went over a laundry list of larger and smaller items. Notable
highlights: GProperty may happen for 2.60 and we may be able to use g_autoptr soon.</p>\n<h3>Other
ideas</h3>\n<p>We discussed a great number of other things that we could and should do.</p>\n<p>For example,
it was suggested (and generally agreed to) that we sh
ould mer
ge gsk into gdk, since it is small and the internals are somewhat intertwined. It was also suggested to
create subdirectories in gtk/, for example for the css machinery.</p>\n",
+ "enclosure": {},
+ "categories": [
+ "uncategorized"
+ ]
+ },
+ {
+ "title": "News from GLib 2.58",
+ "pubDate": "2018-07-11 13:44:52",
+ "link": "https://blog.gtk.org/2018/07/11/news-from-glib-2-58/",
+ "guid": "http://blog.gtk.org/?p=903",
+ "author": "Emmanuele Bassi",
+ "thumbnail": "",
+ "description": "Next September, GLib will hit version 2.58. There have been a few changes during the
past two development cycles, most notably the improvement of the Meson build, which in turn led to an
improved portability of GLib to platforms such as Windows, macOS, and Android. It is time to take stock of
the current status … <a href=\"https://blog.gtk.org/2018/07/11/news-from-glib-2-58/\"
class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> \"News from GLib 2.58\"</span></a>\n",
+ "content": "\n<p>Next September, GLib will hit version 2.58. There have been a few changes during the
past two development cycles, most notably the improvement of the Meson build, which in turn led to an
improved portability of GLib to platforms such as Windows, macOS, and Android. It is time to take stock of
the current status of GLib, and to highlight some of the changes that will impact GLib-based
code.</p>\n<ul>\n<li>\n<strong>Meson</strong> – Thanks to the ongoing work of Nirbheek Chauhan and Xavier
Claessens, the Meson build has been constantly improving, to the point that we can start switching to it as
the default build system. The plan—as <a
href=\"https://mail.gnome.org/archives/gtk-devel-list/2018-June/msg00000.html\">outlined on the mailing
list</a>—is to release GLib 2.58 using Meson, while keeping the Autotools build in tree and available in the
release archive; then, we’ll drop the Autotools build during the following development cycle, and relea
se GLib
2.60 without Autotools support. Linux distributors are very much welcome to start testing the Meson build in
their builders; we’ve been running the Meson build as part of our <acronym title=\"Continuous
Integration\">CI</acronym> process for a while, now, but more exposure will bring out eventual regressions
that we missed; additionally, it would be stellar if people with different toolchains than GCC/Clang/MSVC
would start trying the Meson build and report bugs. In the meantime, if you’re using GLib on macOS and
Windows, we already recommend you switch to Meson to build GLib, as it’s easier and better integrated with
those platforms than Autotools</li>\n<li>\n<strong>Reliability and portability</strong> – GLib switched to
GitLab alongside the rest of GNOME, which meant being able to run continuous integration outside of the <a
href=\"https://build.gnome.org/\">GNOME Continuous</a> builds. Now we run <acronym title=\"Continuous
Integration\">CI</acronym> on multiple
toolchai
ns, multiple build systems, and multiple platforms for every commit and merge request, which significantly
reduces the chances of a broken build. We’ve also improved the code coverage in the test suite. Of course, we
could always do better; for instance, we don’t have a <acronym title=\"Continuous Integration\">CI</acronym>
runner for macOS and the Solaris family of OSes, and more runners for the *BSD family would be greatly
appreciated. We’ve issued <a href=\"https://mail.gnome.org/archives/gtk-devel-list/2018-May/msg00019.html\">a
call for help</a>, if you have a spare machine and some bandwidth that you can
donate</li>\n<li>\n<strong>File monitoring on *BSD</strong> – Apropos the *BSD family, the
<code>kqueue</code> backend for file monitoring in GIO has been completely overhauled by Martin Pieuchot and
Ting-Wei Lan; the new code is simpler, more robust, and passes all the tests</li>\n<li>\n<strong>Use
<code>posix_spawn()</code> for efficient process launching</st
rong> ��
� Thanks to Daniel Drake, GLib now can use <code>posix_spawn()</code> under <a
href=\"https://gitlab.gnome.org/GNOME/glib/blob/master/glib/gspawn.c#L730-748\">specific circumstances</a>,
if the platform’s C library supports it; this allows hitting fast paths in the kernel, compared to manually
calling <code>fork() + exec()</code>; those fast paths are especially beneficial when running on memory
constrained platforms</li>\n<li>\n<strong>Reference counting types and allocations</strong> — GLib uses
reference counting as a memory management and garbage collection mechanism in many of its types, but lacks
the public API to allow other people to implement the same semantics in their own data structures; this leads
to much copy-pasting and re-implementations, and typically to things like undefined behavior when it comes to
saturation and thread safety. GLib 2.58 has a <code>grefcount</code> and a <code>gatomicrefcount</code>
types, alongside their API, to reduce this duplicat
ion. Add
itionally, taking a cue from other languages like Rust, GLib provides a way to add reference counting
semantics on memory allocations, by adding a low level API that allows you to allocate structures that do not
have a reference count field, and automatically add reference counting semantics to
them</li>\n<li>\n<strong>Deprecations</strong> – A few soft deprecations have become real deprecations in
this last development cycle:\n<ul>\n<li>\n<ul>\n<li>\n<code>g_type_class_add_private()</code> has finally
been deprecated, <a href=\"https://www.bassi.io/articles/2013/06/21/the-king-is-dead/\">five years</a> after
we introduced the instance private data macros; if you’re still using that function in your class
initialization, please switch to <code>G_DEFINE_TYPE_WITH_PRIVATE</code> or
<code>G_ADD_PRIVATE</code>\n</li>\n<li>\n<code>g_main_context_wait()</code> is officially deprecated, but you
should have already seen run time warnings about its use</li>\n<li>\n<code>gtester</
code>, t
he GTest harness provided by GLib, is deprecated; if you’re using Autotools, you should use the <acronym
title=\"Test Anything Protocol\">TAP</acronym> harness that comes with
Automake</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<p>There have been lots of contributions in GLib, in this
past cycle, thanks to the tireless efforts of Philip Withnall; he’s been instrumental in reviewing patches,
triaging bugs, and implementing changes in the development process of the project. The switch over to GitLab
has also improved the contribution process, with many more developers opening merge
requests:</p>\n<ul>\n<li>\n<code>2.54.0..c182cd68</code>: 968 changesets from 143 developers, up from 412
changesets and 68 developers during the 2.53 development cycle</li>\n<li>A total of <span>31851 lines
added</span>, <span>27976 removed</span> (delta: <span>+3875</span>)</li>\n</ul>\n<table><tbody>\n<tr>\n<th
colspan=\"3\">Developers with the most changesets</th>\n</tr>\n<tr>\n<td>Philip With
nall</td
\n<td align=\"right\">303</td>\n<td align=\"right\">31.3%</td>\n</tr>\n<tr>\n<td>Xavier Claessens</td>\n<td
align=\"right\">79</td>\n<td align=\"right\">8.2%</td>\n</tr>\n<tr>\n<td>Emmanuele Bassi</td>\n<td
align=\"right\">69</td>\n<td align=\"right\">7.1%</td>\n</tr>\n<tr>\n<td>Christoph Reiter</td>\n<td
align=\"right\">42</td>\n<td align=\"right\">4.3%</td>\n</tr>\n<tr>\n<td>Ting-Wei Lan</td>\n<td
align=\"right\">21</td>\n<td align=\"right\">2.2%</td>\n</tr>\n<tr>\n<td>Chun-wei Fan</td>\n<td
align=\"right\">21</td>\n<td align=\"right\">2.2%</td>\n</tr>\n<tr>\n<td>Nirbheek Chauhan</td>\n<td
align=\"right\">21</td>\n<td align=\"right\">2.2%</td>\n</tr>\n<tr>\n<td>Ondrej Holy</td>\n<td
align=\"right\">20</td>\n<td align=\"right\">2.1%</td>\n</tr>\n<tr>\n<td>Руслан Ижбулатов</td>\n<td
align=\"right\">20</td>\n<td align=\"right\">2.1%</td>\n</tr>\n<tr>\n<td>Mikhail Zabaluev</td>\n<td
align=\"right\">20</td>\n<td align=\"right\">2.1%</td>\n</tr>\n<tr>\n<td>Simon
McVittie
</td>\n<td align=\"right\">15</td>\n<td align=\"right\">1.5%</td>\n</tr>\n<tr>\n<td>Matthias
Clasen</td>\n<td align=\"right\">14</td>\n<td align=\"right\">1.4%</td>\n</tr>\n<tr>\n<td>Christian
Hergert</td>\n<td align=\"right\">13</td>\n<td align=\"right\">1.3%</td>\n</tr>\n<tr>\n<td>Iñigo
Martínez</td>\n<td align=\"right\">12</td>\n<td align=\"right\">1.2%</td>\n</tr>\n<tr>\n<td>Bastien
Nocera</td>\n<td align=\"right\">10</td>\n<td align=\"right\">1.0%</td>\n</tr>\n<tr>\n<td>Rafal
Luzynski</td>\n<td align=\"right\">9</td>\n<td align=\"right\">0.9%</td>\n</tr>\n<tr>\n<td>Michael
Catanzaro</td>\n<td align=\"right\">9</td>\n<td align=\"right\">0.9%</td>\n</tr>\n<tr>\n<td>Will
Thompson</td>\n<td align=\"right\">8</td>\n<td align=\"right\">0.8%</td>\n</tr>\n<tr>\n<td>Allison
Lortie</td>\n<td align=\"right\">8</td>\n<td align=\"right\">0.8%</td>\n</tr>\n<tr>\n<td>Daniel
Boles</td>\n<td align=\"right\">8</td>\n<td align=\"right\">0.8%</td>\n</tr>\n</tbody></table>\n<p>Make sure t
o test y
our code with GLib 2.57.2, the next development snapshot towards the 2.58.0 stable release.</p>\n",
+ "enclosure": {},
+ "categories": [
+ "uncategorized",
+ "development",
+ "GLib",
+ "Release"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/_data/api_fetch/issues_opened.json b/_data/api_fetch/issues_opened.json
new file mode 100644
index 0000000..fe0ac65
--- /dev/null
+++ b/_data/api_fetch/issues_opened.json
@@ -0,0 +1 @@
+[{"id":70738,"iid":2090,"project_id":665,"title":"SVG file making gtk-based applications to
crash","description":"## Steps to reproduce\n\n 1. Unzip this archive:
[Starry_dusk_on_Matterhorn.svg.zip](/uploads/82b85ea65742c5d97caeb65d722151f9/Starry_dusk_on_Matterhorn.svg.zip)\n
2. With Thunar or Nautilus, open the folder containing the extracted SVG file.\n 3. Click on the
file.\n\nThe browser crashes.\n\n## Version information\n\n - Which version of GTK you are using: 3.24.8\n -
What operating system and version: Xubuntu 19.04 64-bit\n\n## Backtrace\n\nSee these two backtraces:\n\n -
Thunar: [bt-thunar.txt](/uploads/c8951f39f6c4bee2fd6aa752c917537d/bt-thunar.txt)\n - Nautilus:
[bt-nautilus.txt](/uploads/8ccc539da5ae68bc3519249c0ce01faf/bt-nautilus.txt)\n\n## More information\n\n-
Initially reported on the Thunar bugtracker: https://bugzilla.xfce.org/show_bug.cgi?id=15797\n- Source of the
SVG file: https://forum.kde.org/viewtopic.php?f=312\u0026t=160623#p416780","state":"open
ed","cre
ated_at":"2019-08-10T02:32:38.350Z","updated_at":"2019-08-10T02:32:38.350Z","closed_at":null,"closed_by":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":23212,"name":"Jean-Philippe
Fleury","username":"jpfleury","state":"active","avatar_url":"https://secure.gravatar.com/avatar/6fa4a61aff6044f0748e8337d1944209?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/jpfleury"},"assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2090","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2090","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2090/notes","award_emoji":"https://gitlab.gnome.org/api/v4/pr
ojects/6
65/issues/2090/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70692,"iid":2087,"project_id":665,"title":"GtkHeaderBar
rightclick on element in headerbar focuses the item, causing left somewhere else activate that
item","description":"## Steps to reproduce\n\n 1. Open Nautilus, Gnome-settings, etc. (hope this is really
gtk related)\n 2. Rightclick an item in the Header bar (for example the menu), this brings up the generic
menu in Gnome Shell/Mutter\n 3. Left click somewhere else in header bar to cancel it\n 4. Repeat the left
click and the widget we previously rightclicked on will be activated\n\nTested in GTK Demo as well\n\n##
Current behavior\nThe item gets activated\n\n## Expected outcome\nThe item should not be activated\n\n##
Version information\nFedora 30\nGnome Shell 3.32.2\ngtk3.x86_64
3.24.10-1.fc30 @updates
\n\n## Additional
information\n![video](/uploads/7aa0f145795e7d4a14a73f0f2744ad39/video.webm)","state":"opened","created_at":"2019-08-09T08:17:26.259Z","updated_at":"2019-08-09T08:17:26.259Z","closed_at":null,"closed_by":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":1351,"name":"Ondřej
Kolín","username":"ondrej.kolin","state":"active","avatar_url":"https://secure.gravatar.com/avatar/e553b28233abacf6093364a73ab69922?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/ondrej.kolin"},"assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2087","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2087","no
tes":"ht
tps://gitlab.gnome.org/api/v4/projects/665/issues/2087/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2087/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70644,"iid":2085,"project_id":665,"title":"Drag
big size images from browser to file managers failed.","description":"## Steps to reproduce\n\n1. open an
image in browser. (firefox or chrome)\n2. drag it to file mananger. (nautilus or nemo or caja)\n3. auto save
(normal) or nothing happend (issues/bug)\n\n## Current behavior\n\nI test in firefox / chrome.\n\nDrag images
to nautilus / nemo / caja.\n\nBig image all failed.\n\n**small image works**\n\nimage url:
http://corkartstheatre.com/wp-content/uploads/2019/01/Harbour_Image.jpg\n\n![small_image_works](/uploads/7c1864e8712bfc486805c05ac0c7e1b6/small_image_works.gif)\n\n**big
image failed**\n\nimage url:
http://pic.lvmama.com/uploads/pc/place2/2016-09-14/9aab9bb7-2593-4ca6-8c5a-31355443aebc.jpg\n\
n![big_i
mage_not_works](/uploads/54a6eedea17cb8429854f2dc437b0aa3/big_image_not_works.gif)\n\n## Version
information\n\n\n\n| | version |\n| -------- | ------------ |\n| gtk2 | 2.24.32 |\n| gtk3 |
3.24.10 |\n| chrome | 76.0.3809.87 |\n| firefox | 68.0.1 |\n| nautilus | 3.32.1 |\n| nemo
| 4.2.2 |\n| caja | 1.22.1 |\n\n## Additional information\n\nI'm not sure what cause
this happend. \n\nI was wondering if nautilus / nemo / caja all failed. \n\nAnd they all gtk apps. \n\nSo i
opened this issues. Hope it can
help.","state":"opened","created_at":"2019-08-08T09:21:42.892Z","updated_at":"2019-08-08T10:20:06.743Z","closed_at":null,"closed_by":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":23083,"name":"wastee","username":"wastee","state":"active","avatar_url":"https://secure.gravatar.com/avatar/4b952cf8e2991d2e6555743c4e288d26?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/wastee"},"assignee":null,"user_no
tes_coun
t":0,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2085","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2085","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2085/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2085/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70543,"iid":2080,"project_id":665,"title":"Allow
adding bind properties without bind-property set in ui file","description":"It would be nice if one could
avoid specifying `bind-property` in ui file, which would assume that the source property (ie, `name`) and
target property are the same.\n\nEg:\n```xml\n\
u003cchi
ld\u003e\n \u003cobject class=\"GtkLabel\"\u003e\n \u003cproperty name=\"label\"
translatable=\"yes\"\u003eApply\u003c/property\u003e\n \u003cproperty name=\"visible\"
bind-source=\"apply_button\" /\u003e\n
\u003c/object\u003e\n\u003c/child\u003e\n```","state":"opened","created_at":"2019-08-06T10:37:31.556Z","updated_at":"2019-08-08T01:54:03.458Z","closed_at":null,"closed_by":null,"labels":["1.
Feature","GtkBuilder"],"milestone":null,"assignees":[],"author":{"id":372,"name":"Mohammed
Sadiq","username":"pksadiq","state":"active","avatar_url":"https://secure.gravatar.com/avatar/c921b888d8695045e07de85f7501f21c?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/pksadiq"},"assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2080","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_
total_ti
me_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2080","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2080/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2080/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70527,"iid":2079,"project_id":665,"title":"gtk_application_set_accels_for_action
ignores \"\u003cPrimary\u003e\" within accels","description":"## Steps to reproduce\r\n\r\n 1. Use
`gtk_application_set_accels_for_action` to set the shortcuts for an action, e.g. Ctrl+q\r\n 2. Note that the
accel is used without the `\u003cPrimary\u003e` modifier if used, e.g. 'q' instead of 'Ctrl+q'\r\n\r\nExample
code:\r\n\r\n```c\r\nstatic void\r\napp_startup (GApplication *app) {\r\n AppPrivate *priv;\r\n
GtkStyleProvider *provider;\r\n\r\n mainApplication = APP (app);\r\n priv = mainA
pplicati
on-\u003epriv;\r\n\r\n g_action_map_add_action_entries (G_ACTION_MAP (app),\r\n
app_entries,\r\n G_N_ELEMENTS (app_entries),\r\n
app);\r\n\r\n const gchar *quit_accels[2] = { \"\u003cPrimary\u003eq\", NULL };\r\n\r\n
gtk_application_set_accels_for_action (GTK_APPLICATION (app), \"app.quit\", quit_accels);\r\n\r\n
G_APPLICATION_CLASS (app_parent_class)-\u003estartup (app);\r\n}\r\n```\r\n\r\n## Current
behavior\r\n\u003c!--\r\n Please describe the current behaviour\r\n--\u003e\r\n\r\nThe action is run only if
the `\u003cPrimary\u003e` key is unused, not with it\r\n\r\n## Expected outcome\r\n\u003c!--\r\n Please
describe the expected outcome\r\n--\u003e\r\n\r\nThe action is run only when the `\u003cPrimary\u003e` key is
held in addition to the other keys\r\n\r\n## Version information\r\n\u003c!--\r\n - Which version of GTK you
are using\r\n - What operating system and ve
rsion\r\
n - For Linux, which distribution\r\n - If you built GTK yourself, the list of options used to configure
the build\r\n--\u003e\r\nVersion: 3.24 (from master org.gnome.Sdk)\r\n\r\nOS:
org.gnome.Sdk//master","state":"opened","created_at":"2019-08-06T06:03:45.573Z","updated_at":"2019-08-06T14:56:15.157Z","closed_at":null,"closed_by":null,"labels":["GTK3"],"milestone":null,"assignees":[],"author":{"id":642,"name":"Christopher
Davis","username":"BrainBlasted","state":"active","avatar_url":"https://gitlab.gnome.org/uploads/-/system/user/avatar/642/avatar.png","web_url":"https://gitlab.gnome.org/BrainBlasted"},"assignee":null,"user_notes_count":6,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2079","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},
"has_tas
ks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2079","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2079/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2079/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70498,"iid":2078,"project_id":665,"title":"Proximity
events only emitted on main window, no callback on subwidgets possible","description":"## Steps to
reproduce\n\n 1. Register callbacks by using `g_signal_connect` and listen for `proximity-in-events`.\n\n##
Current behavior\nProximity events are routed to top widget (i.e. main window). If a signal on a sub widget
is connected the callback does not get triggered. This also happens when nobody else is listening for those
events.\n\n## Expected outcome\nCorrectly relay proximity events to corresponding widget.\n\n## Version
information\n3.24.10 Arch Linux\n\n## Additional information\nMight be related to
#2070",
"state":"opened","created_at":"2019-08-05T14:47:33.625Z","updated_at":"2019-08-05T14:47:33.625Z","closed_at":null,"closed_by":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":22850,"name":"lehmanju","username":"lehmanju","state":"active","avatar_url":"https://secure.gravatar.com/avatar/58f528ab59ce497a4808dcfe2cadea7b?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/lehmanju"},"assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2078","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2078","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2078/notes","award_emoji":"https://gitlab.gnome.org/
api/v4/p
rojects/665/issues/2078/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70485,"iid":2077,"project_id":665,"title":"There's
no way to leave a GtkComboBoxText field using the keyboard if it has the can_focus property
enabled","description":"## Steps to reproduce\n\n 1. Open any GTK+ dialog that has a combo box\n 2. Use arrow
keys or tab/shift+tab to navigate between fields, focus the combo box field\n 3. Try to use arrow keys or
tab/shift+tab to navigate between fields\n\n## Current behavior\nThe combo box remains selected; up/down
arrors change the selection, left/right arrows do nothing, tab/shift+tab do nothing\n\n## Expected outcome\nI
can use tab/shift+tab to continue navigating between fields.\n\n## Version information\nGTK 3.24.8 on Ubuntu
19.04\n\n## Additional
information","state":"opened","created_at":"2019-08-05T12:23:34.165Z","updated_at":"2019-08-06T14:54:58.613Z","closed_at":null,"closed_by":null,"labels":[],"miles
tone":nu
ll,"assignees":[],"author":{"id":466,"name":"Marius
Gedminas","username":"mgedmin","state":"active","avatar_url":"https://secure.gravatar.com/avatar/5faa8f7f53d3ac658c4dfa4bd04a2ee3?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/mgedmin"},"assignee":null,"user_notes_count":7,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2077","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2077","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2077/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2077/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70473,"iid":2076,"project
_id":665
,"title":"About dialog animation is often sluggish","description":"In about dialogs, the animation sliding
the \"Contributors\" text view is heavy and often loses frames even on relatively powerful systems,
especially on Xorg. While it is indeed a very nice and intuitive animation (though the only occurrence in the
whole GNOME environment), it would be better at least to optimize this or \"sliding widget animations\" as a
whole (e.g. by inhibiting redraw until the animation is
over)","state":"opened","created_at":"2019-08-05T10:22:45.613Z","updated_at":"2019-08-07T11:54:21.510Z","closed_at":null,"closed_by":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":5021,"name":"Raffaele","username":"r","state":"active","avatar_url":"https://secure.gravatar.com/avatar/06a6918c0cb32e1c3ae7e9ce7026d4c2?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/r"},"assignee":null,"user_notes_count":9,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confi
dential"
:false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2076","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2076","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2076/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2076/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70324,"iid":2071,"project_id":665,"title":"gsk:
Use supersampling for subpixel positioning","description":"Currently, we upload glyphs to the texture at the
device resolution, rendered shifted by their subpixel position. And then we place the texture aligned to the
pixel grid. Since we use a 4x4 subpixel grid, we end up with up to 16 different renderings of the same
glyph.\n\nAnother strat
egy I'd
like to try is to render the glyphs at the subpixel resolution (ie 4x more pixel in both directions), and
then use supersampling in the shader to get the pixel-resolution rendering, placing the texture at the
subpixel position.\n\nRelevant links:\n\n- https://community.khronos.org/t/multisample-textures/69065/7\n-
https://community.khronos.org/t/sampler2dms-and-texelfetch/60196/2\n\nAs a side benefit, this should let us
unify the handling of hi-dpi and subpixel
positioning.","state":"opened","created_at":"2019-08-01T19:59:21.107Z","updated_at":"2019-08-02T19:13:01.880Z","closed_at":null,"closed_by":null,"labels":["GTK4","Scaling/HiDPI"],"milestone":null,"assignees":[],"author":{"id":652,"name":"Matthias
Clasen","username":"matthiasc","state":"active","avatar_url":"https://gitlab.gnome.org/uploads/-/system/user/avatar/652/avatar.png","web_url":"https://gitlab.gnome.org/matthiasc"},"assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_dat
e":null,
"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2071","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2071","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2071/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2071/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70320,"iid":2070,"project_id":665,"title":"Enter/Leave
notifies of same physical device have different GdkInputSource","description":"## Steps to reproduce\n\nUse
Wayland.\n\n 1. Move active stylus into widget (or into proximity)\n 2. Move active stylus out of widget (or
out of proximity)\n\n## Current behavior\nCurrently, if I move my stylus into the widget area a correct `GDK
_ENTER_N
OTIFY` is generated. You can get `vendor_id` and `product_id` without any issues and source device type is
`GDK_SOURCE_PEN`. As the stylus leaves the widget a `GDK_LEAVE_NOTIFY` is emitted but this time the source
device type is `GDK_SOURCE_MOUSE`. This seems to be caused by the device being a `GDK_DEVICE_TYPE_MASTER` on
leaving whereas on entering it is correctly set to `GDK_DEVICE_TYPE_SLAVE`.\n\n## Expected outcome\nEmit both
events as `GDK_SOURCE_PEN`.\n\n## Version information\nGTK 3.24.10 on Arch Linux\n\nThe relevant file might
be gdkdevice-wayland.c. If sb can help me to setup a debugging environment (preferably in CLion) I might be
able to fix this
myself.","state":"opened","created_at":"2019-08-01T19:32:03.731Z","updated_at":"2019-08-05T16:45:03.485Z","closed_at":null,"closed_by":null,"labels":["Input","Wayland"],"milestone":null,"assignees":[],"author":{"id":22850,"name":"lehmanju","username":"lehmanju","state":"active","avatar_url":"https://secure.gravatar.com/av
atar/58f
528ab59ce497a4808dcfe2cadea7b?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/lehmanju"},"assignee":null,"user_notes_count":1,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2070","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2070","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2070/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2070/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70318,"iid":2069,"project_id":665,"title":"Children
of Gtk.Expander can sometimes be dragged even when the Expander is collapsed","description":"## Steps to
reproduce:\nExample
Widget
Tree:\nGtk.Box -\u003e Gtk.Expander -\u003e Gtk.ListBox -\u003e Gtk.ListBoxRow(s) -\u003e Gtk.EventBox\n\n1)
Expand the Gtk.Expander\n2) Collapse the Gtk.Expander\n3) Hide and then show its parent Gtk.Box\n4) It's now
possible to drag its children as if the Gtk.Expander was expanded\n\n## Version information\nGTK
3.24.8\n\nUbuntu 19.04\n\n## Additional information\nScreen Recording:
https://gfycat.com/ellipticalchillyairedale\n\nExample Code (Python):
https://gitlab.gnome.org/snippets/819","state":"opened","created_at":"2019-08-01T19:10:03.613Z","updated_at":"2019-08-02T19:48:08.562Z","closed_at":null,"closed_by":null,"labels":["1.
Bug","Drag-and-drop","GTK3","GtkExpander","Input"],"milestone":null,"assignees":[],"author":{"id":1888,"name":"yatinmaan","username":"yatinmaan","state":"active","avatar_url":"https://secure.gravatar.com/avatar/d52c65b60bb2ad5222c4e2643ea55a84?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/yatinmaan"},"assignee":null,"user_notes_count"
:2,"merg
e_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2069","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2069","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2069/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2069/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70301,"iid":2068,"project_id":665,"title":"Right-click
on CSD titlebar buttons leaves them :active","description":"Doesn't seem to happen on X11, or xwayland at
least.\n\nI guess this is happening because we set the :active state in `gtkmain.c` directly and then never
unset it?","state":"opened","created_at":"2019-08
-01T13:5
8:43.094Z","updated_at":"2019-08-01T13:58:43.094Z","closed_at":null,"closed_by":null,"labels":["GTK4","Wayland"],"milestone":null,"assignees":[],"author":{"id":658,"name":"Timm
Bäder","username":"baedert","state":"active","avatar_url":"https://gitlab.gnome.org/uploads/-/system/user/avatar/658/avatar.png","web_url":"https://gitlab.gnome.org/baedert"},"assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2068","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2068","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2068/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2068/award_emoji","projec
t":"http
s://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70194,"iid":2064,"project_id":665,"title":"GtkMenuButton
does not work for all old menubutton use cases","description":"1) There is not way to create the popover the
menubutton is supposed to show on the fly, i.e. only when the button is clicked. There is no `clicked` signal
anymore which could be used for this purpose in the past. This is important when e.g. every listbox row is
supposed to have a menubutton with a popover, but only one of those popovers can be visible at a time
anyway.\n2) There is no way to set a custom child of the menubutton. There's private API for this in
`gtkmenubutton.c` already as far as I can
see.","state":"opened","created_at":"2019-07-30T14:00:56.134Z","updated_at":"2019-08-09T07:00:10.017Z","closed_at":null,"closed_by":null,"labels":["GTK4","GtkMenuButton"],"milestone":null,"assignees":[],"author":{"id":658,"name":"Timm
Bäder","username":"baedert","state":"active","avatar_url
":"https
://gitlab.gnome.org/uploads/-/system/user/avatar/658/avatar.png","web_url":"https://gitlab.gnome.org/baedert"},"assignee":null,"user_notes_count":6,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2064","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2064","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2064/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2064/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70193,"iid":2063,"project_id":665,"title":"Popover
clicks propagated to volume-/scalebutton","description":"Just try the one in the
widget-factory","state":"opened",
"created
_at":"2019-07-30T13:51:19.080Z","updated_at":"2019-07-30T20:41:38.572Z","closed_at":null,"closed_by":null,"labels":["GTK4","GtkPopover"],"milestone":null,"assignees":[],"author":{"id":658,"name":"Timm
Bäder","username":"baedert","state":"active","avatar_url":"https://gitlab.gnome.org/uploads/-/system/user/avatar/658/avatar.png","web_url":"https://gitlab.gnome.org/baedert"},"assignee":null,"user_notes_count":3,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2063","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2063","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2063/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2
063/awar
d_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70177,"iid":2062,"project_id":665,"title":"Tooltips
from popovers wrong positioned and stacked","description":"I don't think we have a ready made reproducer but
it's simple enough to write one.\nThe tooltips are positioned wrong and stacked behind the popover they
originate from.\n\nEdit: There is a simple reproducer now:
https://gitlab.gnome.org/GNOME/gtk/commit/20d7b7f59b501c3989c0c01958b013f9d74c2b88","state":"opened","created_at":"2019-07-30T05:04:38.874Z","updated_at":"2019-07-30T05:07:18.434Z","closed_at":null,"closed_by":null,"labels":["GTK4","GtkTooltip"],"milestone":null,"assignees":[],"author":{"id":658,"name":"Timm
Bäder","username":"baedert","state":"active","avatar_url":"https://gitlab.gnome.org/uploads/-/system/user/avatar/658/avatar.png","web_url":"https://gitlab.gnome.org/baedert"},"assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":0,"downvotes":
0,"due_d
ate":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2062","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2062","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2062/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2062/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70176,"iid":2061,"project_id":665,"title":"Popovers
inherit parent widget CSS style","description":"Not a bug per-se of course, since that's normal. But in the
popover case it just looks wrong. Same for popover-based context menus of
course.\n\n![foo](/uploads/910e244a6f1b3602490c7fbb9919d8ba/foo.png)","state":"opened","created_at":"2019-07-30T05:01:46.426Z","updated_
at":"201
9-08-01T14:09:36.906Z","closed_at":null,"closed_by":null,"labels":["GTK4","GtkPopover"],"milestone":null,"assignees":[],"author":{"id":658,"name":"Timm
Bäder","username":"baedert","state":"active","avatar_url":"https://gitlab.gnome.org/uploads/-/system/user/avatar/658/avatar.png","web_url":"https://gitlab.gnome.org/baedert"},"assignee":null,"user_notes_count":4,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2061","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2061","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2061/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2061/award_emoji","project":"https://gitlab.gnome.
org/api/
v4/projects/665"},"subscribed":false},{"id":70172,"iid":2059,"project_id":665,"title":"Warning shown when
clicking menu button","description":"When menu button is clicked, the following warning is
shown:\n\n```\n(gtk-builder-tool:21132): Gtk-WARNING **: 08:04:40.620: Child name 'main' not found in
GtkStack\nGtk-Message: 08:04:40.622: Ignoring an unexpected focus event from GDK on a non-toplevel
surface.\n```\n\nThe ui file tested:
[main.ui](/uploads/310a2a691d688d8cc9d74eb57a886fce/main.ui)","state":"opened","created_at":"2019-07-30T02:39:41.401Z","updated_at":"2019-08-01T14:17:04.410Z","closed_at":null,"closed_by":null,"labels":["GTK4"],"milestone":null,"assignees":[],"author":{"id":372,"name":"Mohammed
Sadiq","username":"pksadiq","state":"active","avatar_url":"https://secure.gravatar.com/avatar/c921b888d8695045e07de85f7501f21c?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/pksadiq"},"assignee":null,"user_notes_count":1,"merge_requests_count":0,"upvotes":0,"down
votes":0
,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2059","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2059","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2059/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2059/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70167,"iid":2058,"project_id":665,"title":"GtkFileChooser
search very often incorrectly returns no results","description":"## Steps to reproduce\n\n 1. Open a file
chooser\n 2. Start searching for existing files or folders\n 3. Repeat with different query lengths\n\n##
Additional informations\n\nIt's probably easier to reproduce with disabled animations. Happen
s with t
racker enabled and disabled.\n\n\n## Version information\n\nArch Linux\ngtk 3.24.10\n\n##
Screencast\n[GtkFileChooser](/uploads/32de205f81e0cf90c907481a5b841c65/GtkFileChooser.mp4)","state":"opened","created_at":"2019-07-29T22:05:46.687Z","updated_at":"2019-08-02T19:45:54.597Z","closed_at":null,"closed_by":null,"labels":["5.
FileChooser","GTK3","GTK4"],"milestone":null,"assignees":[],"author":{"id":9164,"name":"Daniel
Kowalski","username":"gedgon","state":"active","avatar_url":"https://secure.gravatar.com/avatar/6274fca7781dee07f8ba924d6b082ef5?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/gedgon"},"assignee":null,"user_notes_count":1,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2058","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_cou
nt":0},"
has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2058","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2058/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2058/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70111,"iid":2055,"project_id":665,"title":"GTK3
on Windows takes a long time to start up (in update_keymap)","description":"The `gtk_init` function takes
around 600 ms to execute, adding to a noticeable lag when starting up a GTK3 application. Almost all of this
600 ms is spent inside `update_keymap` in gdk/win23/gdkkeys-win32.c.\n\nWorthy of note is that I currently
have 4 keyboard layouts active due to the work I did previously. Glancing at it, the runtime of
`update_keymap` appears to be linear in the number of keyboard layouts, so if you only have one – most common
case – it's probably not as noticeable. But I think even 150 ms is a l
ot.","st
ate":"opened","created_at":"2019-07-28T20:41:04.721Z","updated_at":"2019-08-02T19:15:18.291Z","closed_at":null,"closed_by":null,"labels":["GTK3","Performance","Windows"],"milestone":null,"assignees":[],"author":{"id":21468,"name":"Isopod","username":"Isopod","state":"active","avatar_url":"https://secure.gravatar.com/avatar/da403683b2f23ab381f77b5146556ccc?s=80\u0026d=identicon","web_url":"https://gitlab.gnome.org/Isopod"},"assignee":null,"user_notes_count":13,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2055","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2055","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2055/notes","award_emoji":"htt
ps://git
lab.gnome.org/api/v4/projects/665/issues/2055/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":70129,"iid":2056,"project_id":665,"title":"segfault
in g_type_check_instance_is_a () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0","description":"Hi
developers,\r\n\r\nAs a developer of claws-mail I have been struggling with a mysterious segfault which
caused claws-mail to crash. A backtrace from gdb when the segfaults occurs is as
follows:\r\n\r\n```\r\nThread 1 \"claws-mail\" received signal SIGSEGV, Segmentation
fault.\r\n0x00007ffff6c3e01c in g_type_check_instance_is_a ()\r\n from
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0\r\n(gdb) thread apply all bt\r\n\r\nThread 4 (Thread
0x7fffedde2700 (LWP 4885)):\r\n#0 0x00007ffff766b00c in futex_wait_cancelable\r\n (private=0, expected=0,
futex_word=0xa631e0)\r\n at ../sysdeps/unix/sysv/linux/futex-internal.h:88\r\n#1 0x00007ffff766b00c in
__pthread_cond_wait_common\r\n
(abstime
=0x0, mutex=0xa63190, cond=0xa631b8) at pthread_cond_wait.c:502\r\n#2 0x00007ffff766b00c in
__pthread_cond_wait (cond=0xa631b8, mutex=0xa63190)\r\n at pthread_cond_wait.c:655\r\n#3
0x00007ffff67a882b in mailsem_internal_wait ()\r\n at /usr/lib/x86_64-linux-gnu/libetpan.so.20\r\n#4
0x00000000005ccbf1 in thread_run (data=0xa52090)\r\n at etpan-thread-manager.c:320\r\n#5
0x00007ffff7664fa3 in start_thread (arg=\u003coptimized out\u003e)\r\n at pthread_create.c:486\r\n#6
0x00007ffff60504cf in clone ()\r\n at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95\r\n\r\nThread 3 (Thread
0x7fffee700700 (LWP 4863)):\r\n#0 0x00007ffff6045819 in __GI___poll (fds=0xf406d0, nfds=2, timeout=-1)\r\n
at ../sysdeps/unix/sysv/linux/poll.c:29\r\n#1 0x00007ffff6b38136 in () at
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0\r\n#2 0x00007ffff6b384c2 in g_main_loop_run ()\r\n at
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0\r\n#3 0x00007ffff6d8a0d6 in () at /usr/lib/x86_64-linux-g
nu/libgi
o-2.0.so.0\r\n#4 0x00007ffff6b60415 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0\r\n#5
0x00007ffff7664fa3 in start_thread (arg=\u003coptimized out\u003e) at pthread_create.c:486\r\n#6
0x00007ffff60504cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95\r\n\r\nThread 2 (Thread
0x7fffeef01700 (LWP 4862)):\r\n#0 0x00007ffff6045819 in __GI___poll (fds=0xf37010, nfds=1, timeout=-1) at
../sysdeps/unix/sysv/linux/poll.c:29\r\n#1 0x00007ffff6b38136 in () at
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0\r\n#2 0x00007ffff6b3825c in g_main_context_iteration () at
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0\r\n#3 0x00007ffff6b382a1 in () at
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0\r\n#4 0x00007ffff6b60415 in () at
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0\r\n#5 0x00007ffff7664fa3 in start_thread (arg=\u003coptimized
out\u003e) at pthread_create.c:486\r\n#6 0x00007ffff60504cf in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95\r\n\r\nThread 1 (Thread
0x7ffff
1826e00 (LWP 4824)):\r\n#0 0x00007ffff6c3e01c in g_type_check_instance_is_a () at
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0\r\n#1 0x00007ffff7d70566 in gtk_widget_show () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#2 0x00007ffff7bad610 in () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#3 0x00007ffff7ba50d5 in () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#4 0x00007ffff7ba50d5 in () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#5 0x00007ffff7ba50d5 in () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#6 0x00007ffff7c7e500 in () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#7 0x00007ffff7ba50d5 in () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#8 0x00007ffff7ba50d5 in () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#9 0x00007ffff7bad1bd in () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#10 0x00007ffff6c19c8d in g_closure_invoke () at
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0\r\n#11 0x
00007fff
f6c2d365 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0\r\n#12 0x00007ffff6c362be in
g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0\r\n#13 0x00007ffff6c3697f in
g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0\r\n#14 0x00007ffff6c1e364 in () at
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0\r\n#15 0x00007ffff6c20801 in g_object_notify () at
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0\r\n#16 0x00007ffff7cbef55 in () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#17 0x00007ffff7c5292d in gtk_main_do_event () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#18 0x00007ffff7ac5bac in () at
/usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0\r\n#19 0x00007ffff6b37f2e in g_main_context_dispatch () at
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0\r\n#20 0x00007ffff6b381c8 in () at
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0\r\n#21 0x00007ffff6b384c2 in g_main_loop_run () at
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0\r\n#22 0x0
0007ffff
7c518e7 in gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0\r\n#23 0x00000000004461b4 in main
(argc=\u003coptimized out\u003e, argv=\u003coptimized out\u003e) at main.c:1640\r\n```\r\n\r\nI can provided
a complete log from valgrind when the segfaults occurs but since this log file is 111 MB big I will only send
it on request.\r\n\r\nCommand used when running valgrind:\r\n```\r\n$ G_SLICE=always-malloc
G_DEBUG=gc-friendly valgrind \\\r\n --tool=memcheck --error-limit=no --leak-check=full \\\r\n
--show-reachable=yes claws-mail 2\u003e\u00261 | tee
valgrind.log\r\n```","state":"opened","created_at":"2019-07-26T18:31:07.869Z","updated_at":"2019-07-29T10:52:37.783Z","closed_at":null,"closed_by":null,"labels":["2.
Needs Information","GTK2"],"milestone":null,"assignees":[],"author":{"id":22614,"name":"Michael
Rasmussen","username":"mir07","state":"active","avatar_url":"https://secure.gravatar.com/avatar/7398e6ba66f07bc0a78341fb716b6c04?s=80\u0026d=identicon","web_url"
:"https:
//gitlab.gnome.org/mir07"},"assignee":null,"user_notes_count":9,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"web_url":"https://gitlab.gnome.org/GNOME/gtk/issues/2056","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"has_tasks":false,"_links":{"self":"https://gitlab.gnome.org/api/v4/projects/665/issues/2056","notes":"https://gitlab.gnome.org/api/v4/projects/665/issues/2056/notes","award_emoji":"https://gitlab.gnome.org/api/v4/projects/665/issues/2056/award_emoji","project":"https://gitlab.gnome.org/api/v4/projects/665"},"subscribed":false},{"id":2057,"name":"GtkMenuButton","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":5,"closed_issues_count":2,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2093,"name":"GtkMod
elButton
","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":1,"closed_issues_count":0,"open_merge_requests_count":1,"subscribed":false,"priority":null,"is_project_label":true},{"id":8131,"name":"GtkMountOperation","color":"#428BCA","description":null,"text_color":"#FFFFFF","open_issues_count":1,"closed_issues_count":0,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":1687,"name":"GtkNotebook","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":13,"closed_issues_count":10,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":7061,"name":"GtkOverlay","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":4,"closed_issues_count":4,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":7004,"name":"GtkPaned","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issue
s_count"
:6,"closed_issues_count":2,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":9798,"name":"GtkPlug/GtkSocket","color":"#428BCA","description":null,"text_color":"#FFFFFF","open_issues_count":0,"closed_issues_count":2,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2176,"name":"GtkPopover","color":"#0033CC","description":"","text_color":"#FFFFFF","open_issues_count":30,"closed_issues_count":7,"open_merge_requests_count":2,"subscribed":false,"priority":null,"is_project_label":true},{"id":2261,"name":"GtkProgressBar","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":2,"closed_issues_count":3,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2163,"name":"GtkRange","color":"#0033CC","description":"","text_color":"#FFFFFF","open_issues_count":13,"closed_issues_count":7,"open_merge_requests_count":0,"subscribed":fals
e,"prior
ity":null,"is_project_label":true},{"id":11407,"name":"GtkRecentManager","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":2,"closed_issues_count":0,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2271,"name":"GtkRevealer","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":3,"closed_issues_count":4,"open_merge_requests_count":1,"subscribed":false,"priority":null,"is_project_label":true},{"id":1686,"name":"GtkScale","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":10,"closed_issues_count":9,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2301,"name":"GtkScrollbar","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":4,"closed_issues_count":2,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2019,"name":"GtkScrolledWindow"
,"color"
:"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":25,"closed_issues_count":13,"open_merge_requests_count":2,"subscribed":false,"priority":null,"is_project_label":true},{"id":6902,"name":"GtkSearchBar","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":1,"closed_issues_count":1,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":6855,"name":"GtkSearchEngine","color":"#428BCA","description":null,"text_color":"#FFFFFF","open_issues_count":0,"closed_issues_count":1,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":7153,"name":"GtkSettings","color":"#428BCA","description":null,"text_color":"#FFFFFF","open_issues_count":5,"closed_issues_count":6,"open_merge_requests_count":2,"subscribed":false,"priority":null,"is_project_label":true},{"id":6961,"name":"GtkShortcutsWindow","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issu
es_count
":10,"closed_issues_count":5,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2116,"name":"GtkSizeGroup","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":0,"closed_issues_count":1,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2052,"name":"GtkSpinButton","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":8,"closed_issues_count":2,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2115,"name":"GtkSpinner","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":4,"closed_issues_count":2,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":3034,"name":"GtkStack","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":1,"closed_issues_count":2,"open_merge_requests_count":0,"subscribed":false,
"priorit
y":null,"is_project_label":true},{"id":2168,"name":"GtkStatusBar","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":1,"closed_issues_count":1,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2179,"name":"GtkStatusIcon","color":"#0033CC","description":"","text_color":"#FFFFFF","open_issues_count":0,"closed_issues_count":5,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2166,"name":"GtkStyleContext","color":"#428BCA","description":"","text_color":"#FFFFFF","open_issues_count":10,"closed_issues_count":11,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":7094,"name":"GtkSwitch","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":1,"closed_issues_count":6,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":13259,"name":"GtkText","color":"#00
33CC","d
escription":null,"text_color":"#FFFFFF","open_issues_count":0,"closed_issues_count":0,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":1930,"name":"GtkTextView","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":19,"closed_issues_count":15,"open_merge_requests_count":2,"subscribed":false,"priority":null,"is_project_label":true},{"id":2165,"name":"GtkToolbar","color":"#0033CC","description":"","text_color":"#FFFFFF","open_issues_count":5,"closed_issues_count":0,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":8108,"name":"GtkToolButton","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":0,"closed_issues_count":1,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":5783,"name":"GtkTooltip","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":11,"closed_issues
_count":
8,"open_merge_requests_count":1,"subscribed":false,"priority":null,"is_project_label":true},{"id":9242,"name":"GtkTrayIcon","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":0,"closed_issues_count":3,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2360,"name":"GtkTreeModel","color":"#44AD8E","description":null,"text_color":"#FFFFFF","open_issues_count":2,"closed_issues_count":1,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2018,"name":"GtkTreeView","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":21,"closed_issues_count":17,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2170,"name":"GtkUiManager/Actions","color":"#428BCA","description":"","text_color":"#FFFFFF","open_issues_count":1,"closed_issues_count":2,"open_merge_requests_count":0,"subscribed":false,"priority":null,
"is_proj
ect_label":true},{"id":2316,"name":"GtkVideo","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":1,"closed_issues_count":1,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":1959,"name":"GtkWindow","color":"#0033CC","description":null,"text_color":"#FFFFFF","open_issues_count":37,"closed_issues_count":26,"open_merge_requests_count":3,"subscribed":false,"priority":null,"is_project_label":true},{"id":10933,"name":"Hackfest","color":"#A295D6","description":null,"text_color":"#333333","open_issues_count":0,"closed_issues_count":1,"open_merge_requests_count":1,"subscribed":false,"priority":null,"is_project_label":true},{"id":2108,"name":"HighContrast","color":"#FFECDB","description":null,"text_color":"#333333","open_issues_count":8,"closed_issues_count":4,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":1388,"name":"In
progress","color":"#428BCA","description":
"An issu
e that is currently being worked
on","text_color":"#FFFFFF","open_issues_count":0,"closed_issues_count":0,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":1404,"name":"Input","color":"#AD8D43","description":null,"text_color":"#FFFFFF","open_issues_count":105,"closed_issues_count":50,"open_merge_requests_count":12,"subscribed":false,"priority":null,"is_project_label":true},{"id":1689,"name":"Inspector","color":"#AD8D43","description":null,"text_color":"#FFFFFF","open_issues_count":3,"closed_issues_count":0,"open_merge_requests_count":1,"subscribed":false,"priority":null,"is_project_label":true},{"id":1394,"name":"Introspection","color":"#F0AD4E","description":null,"text_color":"#FFFFFF","open_issues_count":14,"closed_issues_count":11,"open_merge_requests_count":1,"subscribed":false,"priority":null,"is_project_label":true},{"id":7080,"name":"KWin/Plasma","color":"#A295D6","description":null,"text_color":"#333333","open_issues_coun
t":3,"cl
osed_issues_count":6,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":1390,"name":"Leak","color":"#7F8C8D","description":null,"text_color":"#FFFFFF","open_issues_count":4,"closed_issues_count":2,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2001,"name":"Localisation","color":"#A8D695","description":null,"text_color":"#333333","open_issues_count":14,"closed_issues_count":2,"open_merge_requests_count":1,"subscribed":false,"priority":null,"is_project_label":true},{"id":1397,"name":"MacOS","color":"#428BCA","description":"","text_color":"#FFFFFF","open_issues_count":35,"closed_issues_count":46,"open_merge_requests_count":3,"subscribed":false,"priority":null,"is_project_label":true},{"id":10934,"name":"Meeting","color":"#A295D6","description":null,"text_color":"#333333","open_issues_count":0,"closed_issues_count":0,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_p
roject_l
abel":true},{"id":2159,"name":"Other
Widgets","color":"#0033CC","description":"","text_color":"#FFFFFF","open_issues_count":65,"closed_issues_count":28,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":1537,"name":"Performance","color":"#FF0000","description":null,"text_color":"#FFFFFF","open_issues_count":10,"closed_issues_count":6,"open_merge_requests_count":1,"subscribed":false,"priority":null,"is_project_label":true},{"id":1387,"name":"Review
ready","color":"#D9534F","description":"An issue that is waiting for
review","text_color":"#FFFFFF","open_issues_count":10,"closed_issues_count":7,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":1965,"name":"Scaling/HiDPI","color":"#AD4363","description":null,"text_color":"#FFFFFF","open_issues_count":13,"closed_issues_count":6,"open_merge_requests_count":1,"subscribed":false,"priority":null,"is_project_label":true},{"id":11136,"name":"Sele
ctions",
"color":"#A295D6","description":null,"text_color":"#333333","open_issues_count":1,"closed_issues_count":0,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":2105,"name":"Stretch","color":"#44AD8E","description":"Long
term vision for the project. Approximately a four releases moving
target.","text_color":"#FFFFFF","open_issues_count":62,"closed_issues_count":14,"open_merge_requests_count":2,"subscribed":false,"priority":null,"is_project_label":false},{"id":1698,"name":"Tests","color":"#69D100","description":null,"text_color":"#FFFFFF","open_issues_count":6,"closed_issues_count":7,"open_merge_requests_count":1,"subscribed":false,"priority":null,"is_project_label":true},{"id":1602,"name":"Theme","color":"#FFECDB","description":null,"text_color":"#333333","open_issues_count":55,"closed_issues_count":65,"open_merge_requests_count":5,"subscribed":false,"priority":null,"is_project_label":true},{"id":1563,"name":"UI/UX
Design","color":"#A
8D695","
description":null,"text_color":"#333333","open_issues_count":25,"closed_issues_count":14,"open_merge_requests_count":2,"subscribed":false,"priority":null,"is_project_label":true},{"id":1664,"name":"Vulkan
Renderer","color":"#F0AD4E","description":null,"text_color":"#FFFFFF","open_issues_count":6,"closed_issues_count":0,"open_merge_requests_count":0,"subscribed":false,"priority":null,"is_project_label":true},{"id":1377,"name":"Wayland","color":"#D1D100","description":"","text_color":"#FFFFFF","open_issues_count":89,"closed_issues_count":61,"open_merge_requests_count":4,"subscribed":false,"priority":null,"is_project_label":true},{"id":1389,"name":"Windows","color":"#BADD05","description":"Related
to Win32 GDK backend or to GTK working on Windows operating
system","text_color":"#FFFFFF","open_issues_count":74,"closed_issues_count":30,"open_merge_requests_count":16,"subscribed":false,"priority":null,"is_project_label":true},{"id":1375,"name":"X11","color":"#34495E","description"
:null,"t
ext_color":"#FFFFFF","open_issues_count":51,"closed_issues_count":30,"open_merge_requests_count":5,"subscribed":false,"priority":null,"is_project_label":true}]
\ No newline at end of file
diff --git a/_data/api_fetch/issues-stats.json b/_data/api_fetch/issues_stats.json
similarity index 100%
rename from _data/api_fetch/issues-stats.json
rename to _data/api_fetch/issues_stats.json
diff --git a/_data/api_fetch/labels.json b/_data/api_fetch/labels.json
new file mode 100644
index 0000000..022a5ab
--- /dev/null
+++ b/_data/api_fetch/labels.json
@@ -0,0 +1,1302 @@
+[
+ {
+ "id": 339,
+ "name": "1. Bug",
+ "color": "#ccc063",
+ "description": "Problems, incorrect behavior or appearance",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1406,
+ "closed_issues_count": 1632,
+ "open_merge_requests_count": 50,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 402,
+ "name": "1. Crash",
+ "color": "#ccc063",
+ "description": "The issue is a crash in the software",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 450,
+ "closed_issues_count": 1024,
+ "open_merge_requests_count": 6,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 11196,
+ "name": "1. Enhancement",
+ "color": "#ccc063",
+ "description": "Issues that propose improvements to existing features",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 341,
+ "closed_issues_count": 161,
+ "open_merge_requests_count": 22,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 2106,
+ "name": "1. Epic",
+ "color": "#ccc063",
+ "description": "Initiatives and goals across modules and releases. Epics are scoped, prioritized (among
other initiatives) and doable. Epics are adviced to follow a Minimum Viable Change approach.",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 39,
+ "closed_issues_count": 11,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 329,
+ "name": "1. Feature",
+ "color": "#ccc063",
+ "description": "New features or capabilities to be added",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 2043,
+ "closed_issues_count": 684,
+ "open_merge_requests_count": 85,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 10446,
+ "name": "1. Regression",
+ "color": "#ccc063",
+ "description": "Issue is an unintended break of previous working behavior",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 30,
+ "closed_issues_count": 85,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 330,
+ "name": "1. Security",
+ "color": "#ccc063",
+ "description": "Security, privacy or safety issues",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 23,
+ "closed_issues_count": 22,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 9152,
+ "name": "2. Merge After Freeze",
+ "color": "#428BCA",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 0,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 3,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 332,
+ "name": "2. Needs Design",
+ "color": "#428BCA",
+ "description": "Needs an acceptable design solution to be identified",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 455,
+ "closed_issues_count": 92,
+ "open_merge_requests_count": 22,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 10443,
+ "name": "2. Needs Diagnosis",
+ "color": "#428BCA",
+ "description": "The issue needs more diagnosis to triage",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 50,
+ "closed_issues_count": 44,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 331,
+ "name": "2. Needs Information",
+ "color": "#428BCA",
+ "description": "Needs additional information to be diagnosed and/or resolved",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 877,
+ "closed_issues_count": 1325,
+ "open_merge_requests_count": 13,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 401,
+ "name": "2. RFC",
+ "color": "#428BCA",
+ "description": "Request For Comments and discussions from developers",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 88,
+ "closed_issues_count": 47,
+ "open_merge_requests_count": 6,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 333,
+ "name": "3. Expected Behavior",
+ "color": "#F0AD4E",
+ "description": "Issue describes something that does not need to be changed",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 27,
+ "closed_issues_count": 320,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 11360,
+ "name": "3. Not Actionable",
+ "color": "#F0AD4E",
+ "description": "Issue is too generic or is not actionable",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 2,
+ "closed_issues_count": 86,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 335,
+ "name": "3. Not GNOME",
+ "color": "#F0AD4E",
+ "description": "Issue belongs to non-GNOME software",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 14,
+ "closed_issues_count": 478,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 336,
+ "name": "3. Out of Scope",
+ "color": "#F0AD4E",
+ "description": "Requested changes don't align with current technologies, designs or plans",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 6,
+ "closed_issues_count": 345,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 337,
+ "name": "4. Help Wanted",
+ "color": "#8574cc",
+ "description": "Help is welcome to resolve the issue",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 335,
+ "closed_issues_count": 154,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 338,
+ "name": "4. Newcomers",
+ "color": "#8574cc",
+ "description": "Tasks that are good for new contributors",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 568,
+ "closed_issues_count": 446,
+ "open_merge_requests_count": 4,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 2178,
+ "name": "5. Debugging",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 5,
+ "closed_issues_count": 4,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1402,
+ "name": "5. FileChooser",
+ "color": "#7F8C8D",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 103,
+ "closed_issues_count": 56,
+ "open_merge_requests_count": 12,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1382,
+ "name": "5. PlacesSidebar",
+ "color": "#7F8C8D",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 17,
+ "closed_issues_count": 9,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1381,
+ "name": "5. PlacesView",
+ "color": "#7F8C8D",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 5,
+ "closed_issues_count": 2,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2162,
+ "name": "5. Printing",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 25,
+ "closed_issues_count": 8,
+ "open_merge_requests_count": 5,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2181,
+ "name": "5. Scene Graph",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 3,
+ "closed_issues_count": 2,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2158,
+ "name": "5. Widget: Gtklabel",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 5,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 324,
+ "name": "8. Accessibility",
+ "color": "#44AD8E",
+ "description": "Relates to accessibility and accessibility technologies",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 163,
+ "closed_issues_count": 47,
+ "open_merge_requests_count": 4,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 325,
+ "name": "8. Developer Docs",
+ "color": "#44AD8E",
+ "description": "Relates to developer documentation",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 68,
+ "closed_issues_count": 58,
+ "open_merge_requests_count": 2,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 326,
+ "name": "8. Translation",
+ "color": "#44AD8E",
+ "description": "Relates to translations into different languages",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 43,
+ "closed_issues_count": 109,
+ "open_merge_requests_count": 16,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 327,
+ "name": "8. User Docs",
+ "color": "#44AD8E",
+ "description": "Relates to user documentation",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 53,
+ "closed_issues_count": 67,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 574,
+ "name": "9. Engagement Material",
+ "color": "#D9534F",
+ "description": "Use this label for bring engagement team attention and possibly do PR or call for action
around a feature, fix or work. Newcomers fixes are also a good fit.",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 3,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 1314,
+ "name": "9. GSoC",
+ "color": "#D9534F",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 17,
+ "closed_issues_count": 3,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 8237,
+ "name": "9. High visibility",
+ "color": "#D9534F",
+ "description": "Features, fixes and changes that have high user visibility or impact. Intended for
tracking and communication with engagement team, users, etc.",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 21,
+ "closed_issues_count": 2,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 8167,
+ "name": "9. Initiative: AppIconRedesign",
+ "color": "#D9534F",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 4,
+ "closed_issues_count": 5,
+ "open_merge_requests_count": 3,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 9957,
+ "name": "9. Initiative: Mobile apps",
+ "color": "#D9534F",
+ "description": "Effort to support mobile for factors",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 11,
+ "closed_issues_count": 4,
+ "open_merge_requests_count": 5,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 13108,
+ "name": "9. Initiative: Platform Profiling",
+ "color": "#D9534F",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 11185,
+ "name": "9. Initiatives: AppData update",
+ "color": "#D9534F",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 9548,
+ "name": "9. Initiatives: app menu retirement",
+ "color": "#D9534F",
+ "description": "Remove all app menus by 3.32.0. See https://gitlab.gnome.org/GNOME/Initiatives/issues/4",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 4,
+ "closed_issues_count": 33,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 2118,
+ "name": "9. Initiatives: Flatpak CI",
+ "color": "#D9534F",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 8,
+ "closed_issues_count": 12,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 2107,
+ "name": "Adwaita",
+ "color": "#FFECDB",
+ "description": null,
+ "text_color": "#333333",
+ "open_issues_count": 23,
+ "closed_issues_count": 34,
+ "open_merge_requests_count": 2,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 11331,
+ "name": "Adwaita refresh",
+ "color": "#F0AD4E",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 0,
+ "closed_issues_count": 14,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1393,
+ "name": "API Design",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 29,
+ "closed_issues_count": 30,
+ "open_merge_requests_count": 5,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2092,
+ "name": "Broadway",
+ "color": "#F0AD4E",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 5,
+ "closed_issues_count": 5,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2156,
+ "name": "bugzilla",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 618,
+ "closed_issues_count": 203,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1391,
+ "name": "Build",
+ "color": "#CC0033",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 7,
+ "closed_issues_count": 30,
+ "open_merge_requests_count": 4,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2352,
+ "name": "Clipboard",
+ "color": "#A295D6",
+ "description": null,
+ "text_color": "#333333",
+ "open_issues_count": 7,
+ "closed_issues_count": 7,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1392,
+ "name": "CSS",
+ "color": "#5CB85C",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 41,
+ "closed_issues_count": 32,
+ "open_merge_requests_count": 5,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2104,
+ "name": "Deliverable",
+ "color": "#44AD8E",
+ "description": "Short term vision for the project. Approximately a two-releases moving target.",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 31,
+ "closed_issues_count": 33,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": false
+ },
+ {
+ "id": 8151,
+ "name": "Demos",
+ "color": "#004E00",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 3,
+ "closed_issues_count": 7,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2117,
+ "name": "Drag-and-drop",
+ "color": "#A295D6",
+ "description": null,
+ "text_color": "#333333",
+ "open_issues_count": 24,
+ "closed_issues_count": 9,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1940,
+ "name": "Flatpak",
+ "color": "#FFECDB",
+ "description": null,
+ "text_color": "#333333",
+ "open_issues_count": 2,
+ "closed_issues_count": 4,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 9534,
+ "name": "GdkCairo",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2164,
+ "name": "GdkDevice",
+ "color": "#428BCA",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 5,
+ "closed_issues_count": 3,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2354,
+ "name": "GdkDisplay",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 5,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 8109,
+ "name": "GdkEvent",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 4,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 11241,
+ "name": "GdkKeymap",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 2,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2413,
+ "name": "GdkMonitor",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 6,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 4,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 10395,
+ "name": "GdkScreen",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 0,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 5073,
+ "name": "GdkWindow/GdkSurface",
+ "color": "#428BCA",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 14,
+ "closed_issues_count": 5,
+ "open_merge_requests_count": 5,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1396,
+ "name": "GL Renderer",
+ "color": "#34495E",
+ "description": "The GTK+ 4 GSK OpenGL Renderer",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 3,
+ "closed_issues_count": 12,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1669,
+ "name": "GTK2",
+ "color": "#F0AD4E",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 14,
+ "closed_issues_count": 16,
+ "open_merge_requests_count": 2,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1373,
+ "name": "GTK3",
+ "color": "#44AD8E",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 234,
+ "closed_issues_count": 230,
+ "open_merge_requests_count": 38,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1374,
+ "name": "GTK4",
+ "color": "#004E00",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 165,
+ "closed_issues_count": 214,
+ "open_merge_requests_count": 30,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 11121,
+ "name": "GtkAboutDialog",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 2,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 8132,
+ "name": "GtkAdjustment",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2167,
+ "name": "GtkAppChooser",
+ "color": "#0033CC",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 3,
+ "closed_issues_count": 2,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2173,
+ "name": "GtkApplication",
+ "color": "#428BCA",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 10,
+ "closed_issues_count": 8,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2171,
+ "name": "GtkBox",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 3,
+ "closed_issues_count": 3,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2174,
+ "name": "GtkBuilder",
+ "color": "#428BCA",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 12,
+ "closed_issues_count": 3,
+ "open_merge_requests_count": 2,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2177,
+ "name": "GtkButton",
+ "color": "#0033CC",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 6,
+ "closed_issues_count": 10,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2161,
+ "name": "GtkCalendar",
+ "color": "#0033CC",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 4,
+ "closed_issues_count": 2,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2222,
+ "name": "GtkCellRenderer",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 8,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 5071,
+ "name": "GtkCellRendererAccel",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 3849,
+ "name": "GtkCellRendererSpin",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 3,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 5072,
+ "name": "GtkCellRendererText",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 4,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 9536,
+ "name": "GtkColorChooser",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 2,
+ "closed_issues_count": 3,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1398,
+ "name": "GtkComboBox",
+ "color": "#0033CC",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 37,
+ "closed_issues_count": 14,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 11637,
+ "name": "GtkDialog",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 4,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 2,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1690,
+ "name": "GtkEmojiChooser",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 9,
+ "closed_issues_count": 7,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1883,
+ "name": "GtkEntry",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 23,
+ "closed_issues_count": 18,
+ "open_merge_requests_count": 3,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 11150,
+ "name": "GtkEntryCompletion",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 2,
+ "closed_issues_count": 3,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 11135,
+ "name": "GtkEventBox",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 3033,
+ "name": "GtkEventController",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 3,
+ "closed_issues_count": 4,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 6871,
+ "name": "GtkExpander",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 3,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 7113,
+ "name": "GtkFixed",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 0,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 11122,
+ "name": "GtkFlowBox",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2076,
+ "name": "GtkFontChooser",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 8,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 3,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 9972,
+ "name": "GtkFrame",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2172,
+ "name": "GtkGesture",
+ "color": "#428BCA",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 5,
+ "closed_issues_count": 5,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2180,
+ "name": "GtkGLArea",
+ "color": "#0033CC",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 9,
+ "closed_issues_count": 3,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 10552,
+ "name": "GtkGrid",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2264,
+ "name": "GtkHeaderBar",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 9,
+ "closed_issues_count": 5,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 3755,
+ "name": "GtkIconTheme",
+ "color": "#428BCA",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 3,
+ "closed_issues_count": 4,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2169,
+ "name": "GtkIconView",
+ "color": "#0033CC",
+ "description": "",
+ "text_color": "#FFFFFF",
+ "open_issues_count": 5,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 9535,
+ "name": "GtkImage",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 2,
+ "closed_issues_count": 0,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 6868,
+ "name": "GtkInfoBar",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 1,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2262,
+ "name": "GtkLabel",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 6,
+ "closed_issues_count": 4,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 7114,
+ "name": "GtkLayout",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 0,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 13214,
+ "name": "GtkLayoutManager",
+ "color": "#44AD8E",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 0,
+ "closed_issues_count": 1,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 2944,
+ "name": "GtkListBox",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 13,
+ "closed_issues_count": 4,
+ "open_merge_requests_count": 0,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ },
+ {
+ "id": 1688,
+ "name": "GtkMenu",
+ "color": "#0033CC",
+ "description": null,
+ "text_color": "#FFFFFF",
+ "open_issues_count": 45,
+ "closed_issues_count": 27,
+ "open_merge_requests_count": 1,
+ "subscribed": false,
+ "priority": null,
+ "is_project_label": true
+ }
+]
\ No newline at end of file
diff --git a/_data/api_fetch/members-all.json b/_data/api_fetch/members_all.json
similarity index 100%
rename from _data/api_fetch/members-all.json
rename to _data/api_fetch/members_all.json
diff --git a/_data/api_fetch/tags.json b/_data/api_fetch/tags.json
new file mode 100644
index 0000000..6fa6c4d
--- /dev/null
+++ b/_data/api_fetch/tags.json
@@ -0,0 +1 @@
+[{"name":"3.24.10","message":"3.24.10","target":"1d25c38811c2ff12860cd6203dfb6d82f19a2cc0","commit":{"id":"3642629767ec54c4079f7d90a9ea780a225bfe5e","short_id":"36426297","created_at":"2019-07-03T20:25:10.000Z","parent_ids":["0f216525af6be01199c88d8a92712d9384f857fb"],"title":"3.24.10","message":"3.24.10\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2019-07-03T20:25:10.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2019-07-03T20:25:10.000Z"},"release":null},{"name":"3.24.9","message":"3.24.9","target":"fa767f03a3652c8e1e37c44df1b4dea16edca017","commit":{"id":"fee3a3066c019239035b9f8560d11bb4d5725b0c","short_id":"fee3a306","created_at":"2019-06-18T10:59:03.000Z","parent_ids":["cb7c994e82dff34bc59193c7ea48a7ed75f34360"],"title":"3.24.9","message":"3.24.9\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat com","authored_date":"2019-06-17T18:04:02.000Z","committer_name":"M
atthias
Clasen","committer_email":"mclasen redhat
com","committed_date":"2019-06-18T10:59:03.000Z"},"release":null},{"name":"3.96.0","message":"3.96.0","target":"f44c9fd2661491359209a878d375bd64f0233ce0","commit":{"id":"b01cf6be65a5fe3d6275c399e6e86c3944337193","short_id":"b01cf6be","created_at":"2019-05-07T03:27:04.000Z","parent_ids":["a0c6d88858f0a85fdeccd71ac7440e72165ae513"],"title":"3.96","message":"3.96\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2019-05-07T03:01:40.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2019-05-07T03:27:04.000Z"},"release":null},{"name":"3.24.8","message":"3.24.8","target":"3cf94a4403e447cbd4ed89b505c75adf3d7e859f","commit":{"id":"5428379fad31f1637c920d97a3d0303f606bfb6e","short_id":"5428379f","created_at":"2019-04-10T21:12:29.000Z","parent_ids":["08e20ce597c78e8455cf26fa09537d94bef478f1"],"title":"3.24.8","message":"3.24.8\n","author_name":"Matthias
Clasen"
,"author
_email":"mclasen redhat com","authored_date":"2019-04-10T21:12:29.000Z","committer_name":"Matthias
Clasen","committer_email":"mclasen redhat
com","committed_date":"2019-04-10T21:12:29.000Z"},"release":null},{"name":"3.24.7","message":"3.24.7","target":"e093bddf0b1759441f4ea3c128962834027400c3","commit":{"id":"d9a382d689b9159daca09e33510ea229a17d37be","short_id":"d9a382d6","created_at":"2019-03-12T20:25:10.000Z","parent_ids":["f88e8ea6fe77d366c0cab4a45b8f3843fb27c7c6"],"title":"3.24.7","message":"3.24.7\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2019-03-12T20:14:04.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2019-03-12T20:25:10.000Z"},"release":null},{"name":"3.24.6","message":"3.24.6","target":"abe33aa4c2224c86840876e1b9ec4f8d7e1a3a9c","commit":{"id":"34e64ce5c20ab6f73d037221294c0c127d0e88d9","short_id":"34e64ce5","created_at":"2019-03-12T18:54:36.000Z","parent_ids":["2ceff6df9
c47539f2
8d742e8c7d6d7d167633f7b"],"title":"3.24.6","message":"3.24.6\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2019-03-12T15:51:04.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2019-03-12T18:54:36.000Z"},"release":null},{"name":"3.24.5","message":"3.24.5","target":"5fb366ff1e7a87b941350b8f893ef99897c71df6","commit":{"id":"bf60bf15de4afd426304f9f42618eb95a92c2605","short_id":"bf60bf15","created_at":"2019-02-04T16:48:56.000Z","parent_ids":["224213dad6c5cf0ebe5bf3b5f3b370ac57592a74"],"title":"3.24.5","message":"3.24.5\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2019-02-04T16:47:37.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2019-02-04T16:48:56.000Z"},"release":null},{"name":"3.24.4","message":"3.24.4","target":"040878cba20222d43f4d4496a29f88f4b05fb822","commit":{"id":"a02de1c9d9ed99e51ae4470c2
8644d322
2a0bf8f","short_id":"a02de1c9","created_at":"2019-01-21T14:09:59.000Z","parent_ids":["f7df4853e8a8dc40cb32508d30839ab4da4b74a7"],"title":"More
updates","message":"More updates\n","author_name":"Matthias Clasen","author_email":"mclasen redhat
com","authored_date":"2019-01-21T14:09:59.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2019-01-21T14:09:59.000Z"},"release":null},{"name":"3.24.3","message":"3.24.3","target":"16093731401476d544b5ee22eb902757c3df4a1d","commit":{"id":"c9d09695f89c7470c2135ce581331179bd73a7df","short_id":"c9d09695","created_at":"2019-01-14T04:11:14.000Z","parent_ids":["97bac67546ceafcd8fb879d744d8297618b66cfb"],"title":"3.24.3","message":"3.24.3\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2019-01-14T04:11:14.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat com","committed_date":"2019-01-14T04:11:14.000Z"},"release":null},{"name":"3.24.
2","mess
age":"3.24.2","target":"edba66b354f6091e92c817de16f1e8986040b11b","commit":{"id":"363df54e54cfae7244bd155e4199af145bc13088","short_id":"363df54e","created_at":"2018-12-12T18:35:04.000Z","parent_ids":["38edc38f21951b33daf5cd593f74ffc30ade5d5b"],"title":"3.24.2","message":"3.24.2\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2018-12-12T17:11:48.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2018-12-12T18:35:04.000Z"},"release":null},{"name":"3.24.1","message":"3.24.1","target":"a9efdf3c7fa662083670bfba725dbeaf547e377b","commit":{"id":"f5ad1786e8b2b80408d8df6d2ac2c0748926b20c","short_id":"f5ad1786","created_at":"2018-09-19T01:42:55.000Z","parent_ids":["ac41c3895fba36507ab4cc22079fede9397c62b7"],"title":"3.24.1","message":"3.24.1\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2018-09-19T01:42:55.000Z","committer_name":"Matthias Clasen","committer_
email":"
mclasen redhat
com","committed_date":"2018-09-19T01:42:55.000Z"},"release":null},{"name":"3.24.0","message":"3.24.0","target":"29981d49c2c9e74591fa7ba47d27e4d2a5cdcb16","commit":{"id":"ef1a1b5cb1010977d631dc1131b0db45a1e1e15f","short_id":"ef1a1b5c","created_at":"2018-09-03T16:41:53.000Z","parent_ids":["51a64c52b7694b148dceebbd829270ed8f33e867"],"title":"3.24.0","message":"3.24.0\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2018-09-03T16:41:53.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2018-09-03T16:41:53.000Z"},"release":null},{"name":"3.23.3","message":"3.23.3","target":"51153afef6b92649d01c49116733a94a1f4c2c72","commit":{"id":"34c7eba642104e5eded877704b66cf9ba61b2c71","short_id":"34c7eba6","created_at":"2018-08-29T00:27:03.000Z","parent_ids":["79c6c944ecf42c259fc0192dbb530efd76048fbc"],"title":"3.23.3","message":"3.23.3\n","author_name":"Matthias
Clasen","author_email":"mclase
n@redhat
.com","authored_date":"2018-08-28T20:52:44.000Z","committer_name":"Matthias
Clasen","committer_email":"mclasen redhat
com","committed_date":"2018-08-29T00:27:03.000Z"},"release":null},{"name":"3.23.2","message":"3.23.2","target":"87dca6d85bb534cca3d8a86eaed9ff2f40a24b7c","commit":{"id":"06800b22ff986671794e7d55107da1cf1b9482d7","short_id":"06800b22","created_at":"2018-07-31T02:37:12.000Z","parent_ids":["9417389659c0054195b3e8324c1145cb077a3909"],"title":"window:
Fallback to CSD titlebar in focus-chain","message":"window: Fallback to CSD titlebar in focus-chain\n\nCSD
titlebar are included in the focus-chain. The logic used makes sure that the\ninitial focus avoids the
titlebar, but tabbing around will eventually get there.\nThis logic fails in case the window has no other
focusable widgets apart from\nthe ones in the header-bar. If this happens keynav focus will be lost. To
handle\nthe above scenario, we need to fallback to focus the header-bar (if any).\n\nFixes: https://gi
tlab.gno
me.org/GNOME/gnome-software/issues/404\n","author_name":"Andrea Azzarone","author_email":"azzaronea gmail
com","authored_date":"2018-07-26T08:16:32.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2018-07-31T02:37:12.000Z"},"release":null},{"name":"3.23.1","message":"3.23.1","target":"ccc03b44167caa986f80ca2ed445a22f1b3f03ca","commit":{"id":"f7f3939b048720aadc06c45465dea732456d212a","short_id":"f7f3939b","created_at":"2018-07-18T20:58:17.000Z","parent_ids":["13a36e81dc7c3a7f8f67fe86618f11c42a3cb20f"],"title":"3.23.1","message":"3.23.1\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2018-07-18T19:55:30.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2018-07-18T20:58:17.000Z"},"release":null},{"name":"3.94.0","message":"3.94.0","target":"385f52d7e8f5297be1eb2178307eded45db367c3","commit":{"id":"faba0f0145b1281facba20fb90699e3db594fbb0","sho
rt_id":"
faba0f01","created_at":"2018-06-25T23:55:04.000Z","parent_ids":["8755d884f3e5043f355d4c6403e954ea5ff0928f"],"title":"Bump
version to 3.94.0","message":"Bump version to 3.94.0\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2018-06-25T22:14:16.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2018-06-25T23:55:04.000Z"},"release":null},{"name":"3.23.0","message":"3.23.0","target":"5af1150c6996dca0c347204f4541938f8f8f1a3b","commit":{"id":"593edacb48849746f5541c72c021b50a12794ca1","short_id":"593edacb","created_at":"2018-06-23T20:14:01.000Z","parent_ids":["0997ffbc5b2ab721edd3d23b83d9d5147eb4bada"],"title":"gtk:
also recolor circle and ellipse in symbolic SVG icons.","message":"gtk: also recolor circle and ellipse in
symbolic SVG icons.\n","author_name":"Jehan","author_email":"jehan girinstud
io","authored_date":"2018-06-22T22:16:39.000Z","committer_name":"Matthias Clasen","committer_email":"
mclasen@
redhat.com","committed_date":"2018-06-23T20:14:01.000Z"},"release":null},{"name":"3.22.30","message":"3.22.30","target":"3abb1e5af489e9691c54cb169bf7a3da4da8a9e7","commit":{"id":"2e7ac262be15fb402c4103d28533c6c6d955bf65","short_id":"2e7ac262","created_at":"2018-04-16T18:06:02.000Z","parent_ids":["cb71d083ab07532a77dfbd46c807df160bd84dcc"],"title":"3.22.30","message":"3.22.30\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2018-04-16T18:06:02.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat
com","committed_date":"2018-04-16T18:06:02.000Z"},"release":null},{"name":"3.22.29","message":"3.22.29","target":"c0382e0114f9d39bce1c7d42803fe61e34f2fe15","commit":{"id":"9f6deab88cfbcfd7ebf5431495453adcab9f0639","short_id":"9f6deab8","created_at":"2018-03-13T02:22:05.000Z","parent_ids":["0f3396d7423d9f76506f91ac8a97adc1df5cf50f"],"title":"3.22.29","message":"3.22.29\n","author_name":"Matthias
Clasen","author_email":"mclase
n@redhat
.com","authored_date":"2018-03-12T21:34:03.000Z","committer_name":"Matthias
Clasen","committer_email":"mclasen redhat
com","committed_date":"2018-03-13T02:22:05.000Z"},"release":null},{"name":"3.22.28","message":"3.22.28","target":"722971e736d4be57e30590e224ff0892b8fab34e","commit":{"id":"463ee95136d519783e55acbd092bc8ba1dd16832","short_id":"463ee951","created_at":"2018-02-14T17:48:01.000Z","parent_ids":["c6901a8b950f156aaddf2ee8f8fb39440b7b9cfd"],"title":"3.22.28","message":"3.22.28\n","author_name":"Matthias
Clasen","author_email":"mclasen redhat
com","authored_date":"2018-02-14T17:48:01.000Z","committer_name":"Matthias Clasen","committer_email":"mclasen
redhat com","committed_date":"2018-02-14T17:48:01.000Z"},"release":null}]
\ No newline at end of file
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]