[gtk-web/new-website: 144/191] added gitlab api responses



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 
“&lt;constraints&gt;” element:</p>\n<pre>  &lt;object class=\"GtkConstraintLayout\"&gt;\r\n    
&lt;constraints&gt;\r\n      &lt;constraint target=\"button1\" target-attribute=\"width\"\r\n                 
    relation=\"eq\"\r\n                     source=\"button2\" source-attribute=\"width\" /&gt;\r\n      
&lt;constraint target=\"button2\" target-attribute=\"start\"\r\n                     relation=\"eq\"\r\n      
               source=\"button1\" source-attribute=\"end\"\r\n                     constant=\"12\" /&gt;\r\n  
    &lt;constraint target=\"button1\" target-attribute=\"st
 art\"\r\
 n                     relation=\"eq\"\r\n                     source=\"super\" 
source-attribute=\"start\"\r\n                     constant=\"12\" /&gt;\r\n      &lt;constraint 
target=\"button2\" target-attribute=\"end\"\r\n                     relation=\"eq\"\r\n                     
source=\"super\" source-attribute=\"end\"\r\n                     constant=\"-12\"/&gt;\r\n    
&lt;/constraints&gt;\r\n  &lt;/object&gt;\r\n</pre>\n<p>You can also describe a guide, using the 
“&lt;guide&gt;” custom element:</p>\n<pre>  &lt;constraints&gt;\r\n    &lt;guide min-width=\"100\" 
max-width=\"500\" /&gt;\r\n  &lt;/constraints&gt;\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(&lt;=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]