aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pages/develop/guides/c/eina/futures.md.txt2
-rw-r--r--pages/develop/guides/csharp/core/events.md.txt5
-rw-r--r--pages/develop/guides/csharp/ui/sizing.md.txt8
-rw-r--r--pages/develop/setup/csharp/start.md.txt2
-rw-r--r--pages/develop/tutorials/csharp/hello-world-cs.md.txt3
-rw-r--r--pages/develop/tutorials/csharp/hello-world-gui-cs.md.txt179
-rw-r--r--pages/develop/tutorials/csharp/texteditor-cs.md.txt52
-rw-r--r--pages/download-latest.txt4
-rw-r--r--pages/incl/efl-deps-src.txt4
-rw-r--r--pages/incl/start-release.txt2
-rw-r--r--pages/news/2019-03-31-terminology-1.4.0.txt27
-rw-r--r--pages/news/efl-1.22.0-alpha1.txt99
-rw-r--r--pages/news/efl-1.22.0-beta1.txt49
-rw-r--r--pages/news/efl-1.22.0-beta2.txt37
-rw-r--r--pages/news/efl-1.22.0.txt120
-rw-r--r--pages/news/efl-1.22.1.txt19
16 files changed, 481 insertions, 131 deletions
diff --git a/pages/develop/guides/c/eina/futures.md.txt b/pages/develop/guides/c/eina/futures.md.txt
index b9a231e71..cbfe7b2be 100644
--- a/pages/develop/guides/c/eina/futures.md.txt
+++ b/pages/develop/guides/c/eina/futures.md.txt
@@ -30,7 +30,7 @@ The following sections explain how to use ``Eina_Promise`` and ``Eina_Future`` a
## Creating a Promise ##
-The code returning the delayed value (the promise of a value) creates an ``Eina_promise`` using ``eina_promise_new()`` like so:
+The code returning the delayed value (the promise of a value) creates an ``Eina_Promise`` using ``eina_promise_new()`` like so:
```c
Efl_Loop *loop;
diff --git a/pages/develop/guides/csharp/core/events.md.txt b/pages/develop/guides/csharp/core/events.md.txt
index 0797d1cfd..1dc7ccb7d 100644
--- a/pages/develop/guides/csharp/core/events.md.txt
+++ b/pages/develop/guides/csharp/core/events.md.txt
@@ -86,10 +86,7 @@ public class Example
mainloop.PollHighEvt += PollCb;
// This timer will control events fired by the main loop
- var timer = new Efl.LoopTimer(mainloop, (Efl.LoopTimer etimer) => {
- // Trigger every 100ms
- etimer.SetInterval(0.1);
- });
+ var timer = new Efl.LoopTimer(mainloop, 0.1);
timer.SetName("Timer");
// To count number of timer triggers
int tick_count = 0;
diff --git a/pages/develop/guides/csharp/ui/sizing.md.txt b/pages/develop/guides/csharp/ui/sizing.md.txt
index aaf246b01..acd14fe34 100644
--- a/pages/develop/guides/csharp/ui/sizing.md.txt
+++ b/pages/develop/guides/csharp/ui/sizing.md.txt
@@ -20,23 +20,23 @@ You can find an usage example in the [EFL examples repository](https://git.enlig
## Setting a Widget's Minimum Size ##
-When a widget's **minimum** size is defined with `SetHintMin()`, resizing the rest of the UI will not shrink the widget below the size you set. You can use it to create elements which are bigger than normal, as well as prevent the UI from becoming too small:
+When a widget's **minimum** size is defined with `SetHintSizeMin()`, resizing the rest of the UI will not shrink the widget below the size you set. You can use it to create elements which are bigger than normal, as well as prevent the UI from becoming too small:
```csharp
button = new Efl.Ui.Button(win);
button.SetText("Big button");
-button.SetHintMin(new Eina.Size2D(100,100));
+button.SetHintSizeMin(new Eina.Size2D(100,100));
box.DoPack(button);
```
## Setting a Widget's Maximum Size ##
-When a widget's **maximum** size is defined with `SetHintMax()`, resizing the rest of the UI will not expand the widget beyond the size you set. Use it to create elements that are smaller than normal or that will not expand past a given point when the UI grows.
+When a widget's **maximum** size is defined with `SetHintSizeMax()`, resizing the rest of the UI will not expand the widget beyond the size you set. Use it to create elements that are smaller than normal or that will not expand past a given point when the UI grows.
```csharp
button = new Efl.Ui.Button(win);
button.SetText("Small");
-button.SetHintMax(new Eina.Size2D(50,50));
+button.SetHintSizeMax(new Eina.Size2D(50,50));
box.DoPack(button);
```
diff --git a/pages/develop/setup/csharp/start.md.txt b/pages/develop/setup/csharp/start.md.txt
index 46ab4a777..ab2fa9f92 100644
--- a/pages/develop/setup/csharp/start.md.txt
+++ b/pages/develop/setup/csharp/start.md.txt
@@ -60,7 +60,7 @@ sudo make install
> If you cannot solve the problem by yourself, try [contacting the community](/contact).
> **NOTE**
-> If you are using Visual Studio to write EFL C# applications, you should copy to the build directory or have them in the PATH environment libraries: libeflcustomexportsmono.dll, libefl_mono.dll and if you want to use Intellisense also libefl_mono.xml. These libraries and XML file will be found at lib sub-directory of the prefix you install the library.
+> If you are using Visual Studio to write EFL C# applications, you should copy to the build directory or have them in the `PATH` environment libraries: `libeflcustomexportsmono.dll`, `libefl_mono.dll` and if you want to use Intellisense also `libefl_mono.xml`. These libraries and XML file will be found at lib sub-directory of the prefix you install the library.
## Building EFL C# Applications ##
diff --git a/pages/develop/tutorials/csharp/hello-world-cs.md.txt b/pages/develop/tutorials/csharp/hello-world-cs.md.txt
index f91eb5293..bdf293543 100644
--- a/pages/develop/tutorials/csharp/hello-world-cs.md.txt
+++ b/pages/develop/tutorials/csharp/hello-world-cs.md.txt
@@ -120,7 +120,7 @@ Observe how the window is created as a child of `Efl.App.AppMain`, the applicati
Also, note the further customization of the Window object:
* The window title is set to `Hello World`.
-* The `autohide` flag is set to true. This means that the window will automatically be hidden when the user closes it. The default behavior for an app when all its windows are hidden is to quit.
+* The `Autohide` flag is set to true. This means that the window will automatically be hidden when the user closes it. The default behavior for an app when all its windows are hidden is to quit.
### The Window Size ###
@@ -167,7 +167,6 @@ In this tutorial you have learned:
The following tutorial adds some text and a button to the UI, and shows how to react to a button press.
-
## Further Reading ##
[Setting Up a C# Development Environment](/develop/setup/csharp/)
diff --git a/pages/develop/tutorials/csharp/hello-world-gui-cs.md.txt b/pages/develop/tutorials/csharp/hello-world-gui-cs.md.txt
index 6fe9e837a..f837757a1 100644
--- a/pages/develop/tutorials/csharp/hello-world-gui-cs.md.txt
+++ b/pages/develop/tutorials/csharp/hello-world-gui-cs.md.txt
@@ -26,10 +26,11 @@ using System;
public class Example
{
// Callback to quit the application
- public static void QuitCb(object sender, EventArgs e)
+ public static void QuitCb(object sender, Efl.Gfx.EntityVisibilityChangedEvt_Args e)
{
// Exit the EFL main loop
- efl.ui.Config.Exit();
+ if (e.arg == false)
+ Efl.Ui.Config.Exit();
}
#if WIN32
@@ -38,55 +39,51 @@ public class Example
public static void Main()
{
// Initialize EFL and all UI components
- efl.All.Init(efl.Components.Ui);
+ Efl.All.Init(Efl.Components.Ui);
// Create a window and initialize it
- efl.ui.IWin win = new efl.ui.Win(efl.App.GetLoopMain(), (efl.ui.IWin ewin) => {
- // Set the window's title
- ewin.SetText("Hello World");
- // Request that the window is automatically hidden when the "close"
- // button is pressed
- ewin.SetAutohide(true);
- // Hook to the Hide event
- ewin.HideEvt += QuitCb;
- });
+ Efl.Ui.Win win = new Efl.Ui.Win(Efl.App.AppMain);
+ // Set the window's title
+ win.SetText("Hello World");
+ // Request that the window is automatically hidden when the "close"
+ // button is pressed
+ win.SetAutohide(true);
+ // Hook to the Hide event
+ win.VisibilityChangedEvt += QuitCb;
// Create a box container
- efl.ui.IBox box = new efl.ui.Box(win, (efl.ui.IBox ebox) => {
- // Set its minimum size
- ebox.SetHintMin(new eina.Size2D(360, 240));
- // Set the box as the content for the window
- // The window size will adapt to the box size
- win.SetContent(ebox);
- });
+ var box = new Efl.Ui.Box(win);
+ // Set its minimum size
+ box.SetHintSizeMin(new Eina.Size2D(360, 240));
+ // Set the box as the content for the window
+ // The window size will adapt to the box size
+ win.SetContent(box);
// Create a text label widget
- new efl.ui.Text(box, (efl.ui.IText etext) => {
- // Set its content and customize it
- etext.SetText("Hello World. This is an Efl.Ui application!");
- etext.SetSelectionAllowed(false);
- etext.SetHintWeight(1.0, 0.9);
- etext.SetHintAlign(0.5, 0.5);
- // Add the text to the box container
- box.DoPack(etext);
- });
+ var label = new Efl.Ui.Text(box);
+ // Set its content and customize it
+ label.SetText("Hello World. This is an Efl.Ui application!");
+ label.SetSelectionAllowed(false);
+ label.SetHintWeight(1.0, 0.9);
+ label.SetHintAlign(0.5, 0.5);
+ // Add the text to the box container
+ box.DoPack(label);
// Create a button widget
- new efl.ui.Button(box, (efl.ui.IButton ebutton) => {
- // Customize it
- ebutton.SetText("Quit");
- ebutton.SetHintWeight(1.0, 0.1);
- // Set the method to be called when the button is pressed
- ebutton.ClickedEvt += QuitCb;
- // Add the button to the box container
- box.DoPack(ebutton);
- });
+ var button = new Efl.Ui.Button(box);
+ // Customize it
+ button.SetText("Quit");
+ button.SetHintWeight(1.0, 0.1);
+ // Set the method to be called when the button is pressed
+ button.ClickedEvt += (object sender, EventArgs e) => { Efl.Ui.Config.Exit(); };
+ // Add the button to the box container
+ box.DoPack(button);
// Start the EFL main loop
- efl.ui.Config.Run();
+ Efl.Ui.Config.Run();
// Shutdown EFL
- efl.All.Shutdown();
+ Efl.All.Shutdown();
}
}
```
@@ -105,24 +102,23 @@ Take a look at the window instantiation:
```csharp
// Create a window and initialize it
- efl.ui.IWin win = new efl.ui.Win(efl.App.GetLoopMain(), (efl.ui.IWin ewin) => {
- // Set the window's title
- ewin.SetText("Hello World");
- // Request that the window is automatically hidden when the "close"
- // button is pressed
- ewin.SetAutohide(true);
- // Hook to the Hide event
- ewin.HideEvt += QuitCb;
- });
+ Efl.Ui.Win win = new Efl.Ui.Win(Efl.App.AppMain);
+ // Set the window's title
+ win.SetText("Hello World");
+ // Request that the window is automatically hidden when the "close"
+ // button is pressed
+ win.SetAutohide(true);
+ // Hook to the Hide event
+ win.VisibilityChangedEvt += QuitCb;
```
-This creates a new window, making it a child of the application's Main Loop, and customizing it with an initialization method. In this case, the initialization method is a lambda function which:
+This creates a new window, making it a child of the application's Main Loop, and customizes it:
* Sets the window title to `Hello World`.
-* Sets the `autohide` flag to `true` (see the [previous tutorial](hello-world-cs.md)).
-* Connects an event handler to the window's `Hide Event`. This event will be emitted whenever the window is closed, because of the `autohide` flag above.
+* Sets the `Autohide` flag to `true` (see the [previous tutorial](hello-world-cs.md)).
+* Connects an event handler to the window's `Visibility Changed Event`. This event will be emitted every time the window is shown or hidden. In particular, it will be emitted when the window is closed due to the `Autohide` flag above.
-All event handlers in EFL have the same signature:
+All event handlers in EFL have a common signature:
```csharp
public static void Handler(object sender, EventArgs e);
@@ -130,17 +126,21 @@ All event handlers in EFL have the same signature:
Where `sender` is the object that emitted the event, and `e` contains any additional information, which depends on the type of the event.
-> **NOTE:**
-> `e` must be cast to the correct type to be able to extract this information. For example, when connecting to the `efl.input.Interface.KeyDownEvt` to be informed of key presses, you must cast `e` to `efl.input.Interface.KeyDownEvt_Args` to retrieve the actual key.
+If you want to retrieve any additional information, though, you have to use the appropriate `EventArgs` subclass. For instance, in this tutorial:
+```csharp
+ public static void QuitCb(object sender, Efl.Gfx.EntityVisibilityChangedEvt_Args e);
+```
+where you can retrieve the new visibility status of the window in the `e.arg` parameter (`true` for window shown or `false` for window hidden).
-This tutorial simply quits the application whenever the window is closed:
+This tutorial simply quits the application whenever the window is hidden:
```csharp
// Callback to quit the application
- public static void QuitCb(object sender, EventArgs e)
+ public static void QuitCb(object sender, Efl.Gfx.EntityVisibilityChangedEvt_Args e)
{
// Exit the EFL main loop
- efl.ui.Config.Exit();
+ if (e.arg == false)
+ Efl.Ui.Config.Exit();
}
```
@@ -158,20 +158,19 @@ This tutorial uses a *box* container:
```csharp
// Create a box container
- efl.ui.IBox box = new efl.ui.Box(win, (efl.ui.IBox ebox) => {
- // Set its minimum size
- ebox.SetHintMin(new eina.Size2D(360, 240));
- // Set the box as the content for the window
- // The window size will adapt to the box size
- win.SetContent(ebox);
- });
+ var box = new Efl.Ui.Box(win);
+ // Set its minimum size
+ box.SetHintSizeMin(new Eina.Size2D(360, 240));
+ // Set the box as the content for the window
+ // The window size will adapt to the box size
+ win.SetContent(box);
```
A box container can be vertical or horizontal, and by default it is vertical. All widgets inside a vertical box container will have the same width as the container, and their heights will be automatically chosen so that they cover the whole surface of the container from top to bottom (Imagine a stack of pizza boxes neatly fitting inside your oven). By default, all widgets will have the same height, but that can be customized as you will see in a moment.
-In the initialization method of the box above you can see calls to:
+In the snippet above you can see calls to:
-* `SetHintMin()`: This sets the **minimum** size for the box. You can resize the window and the box will grow or shrink as needed, but it will never go below this size.
+* `SetHintSizeMin()`: This sets the **minimum** size for the box. You can resize the window and the box will grow or shrink as needed, but it will never go below this size.
* `SetContent()`: This method specifies the **one** widget which will be the content of the window (Windows can only have one content set at any given time). If you want to have more than one widget in your window, you will need to wrap them in a container and set that as the content of the window. As shown above, the box container is set as the content of the window.
@@ -181,24 +180,23 @@ So far the tutorial has created a window and an invisible container, it is about
```csharp
// Create a text label widget
- new efl.ui.Text(box, (efl.ui.IText etext) => {
- // Set its content and customize it
- etext.SetText("Hello World. This is an Efl.Ui application!");
- etext.SetSelectionAllowed(false);
- etext.SetHintWeight(1.0, 0.9);
- etext.SetHintAlign(0.5, 0.5);
- // Add the text to the box container
- box.DoPack(etext);
- });
+ var label = new Efl.Ui.Text(box);
+ // Set its content and customize it
+ label.SetText("Hello World. This is an Efl.Ui application!");
+ label.SetSelectionAllowed(false);
+ label.SetHintWeight(1.0, 0.9);
+ label.SetHintAlign(0.5, 0.5);
+ // Add the text to the box container
+ box.DoPack(label);
```
-This instantiates an `efl.ui.Text` object, as a child of the box container. Quite sensibly, this is the widget used to display text on screen. The initialization above is worth a careful look:
+This instantiates an `Efl.Ui.Text` object, as a child of the box container. Quite sensibly, this is the widget used to display text on screen. The snippet above is worth a careful look:
* `SetText()`: Specifies the text string to display in the widget.
* `SetSelectionAllowed()`: This disables selecting the text (by dragging over it with the mouse, for example). Just to showcase a bit the EFL's capabilities.
-* `SetHintWeight()`: This one controls the widget's size, but, instead of setting it explicitly as `SetHintMin()` did, it does so indirectly by giving the widget a **weight**. The container holding this widget decides the size for all its held widgets according to their relative weights (If all widgets have the same weight, they all have the same size. If you double the weight of one of the widgets, its size will be double that of the other widgets). This is a complex topic explained in its own tutorial (*coming soon*).
+* `SetHintWeight()`: This one controls the widget's size, but, instead of setting it explicitly as `SetHintSizeMin()` did, it does so indirectly by giving the widget a **weight**. The container holding this widget decides the size for all its held widgets according to their relative weights (If all widgets have the same weight, they all have the same size. If you double the weight of one of the widgets, its size will be double that of the other widgets). This is a complex topic explained in its own tutorial (*coming soon*).
- In the code above, the text widget is given a weight of `1.0` in the horizontal direction and `0.9` in the vertical direction (both directions are treated separately). The effect of this on the final widget size depends on the other widgets' weights, so it is explained in the next section.
+ In the code above, the text widget is given a weight of `1.0` in the horizontal direction and `0.9` in the vertical direction (both directions are treated separately). The effect of this on the final widget size depends on the other widgets' weights, so it is explained in the next section after all widgets have been created.
* `SetHintAlign()`: Once the container has allocated space for each widget according to its weight, if the actual widget is smaller, it has room to be aligned. This command controls horizontal and vertical alignment in this way: `0` means left (or top), `1` means right (or bottom), and intermediate values are possible, meaning intermediate positions. For example, `0.5` means centered, as used in the code.
@@ -206,27 +204,24 @@ This instantiates an `efl.ui.Text` object, as a child of the box container. Quit
>
> If you want to vertically align the text inside a vertical box, you have to align the text **inside** the text widget using `SetValign(0.5)` (or `SetHalign(0.5)`). This is a complex topic explained in it own tutorial (*coming soon*).
-* `Efl.ui.Box.DoPack()`: This adds the text widget to the box container. The order in which widgets are added to a container dictates the order in which they are placed on the screen.
+* `Efl.Ui.Box.DoPack()`: This adds the text widget to the box container. The order in which widgets are added to a container dictates the order in which they are placed on the screen.
Besides being a child of the box object, the text widget also needs to be *packed* into the box with `DoPack()`.
-It is worth noting that, as hinted in the [previous tutorial](hello-world-cs.md), no variable is needed to store the widget: after its construction, it is already fully initialized (customized) and a reference has been handled to a parent which will take care of its destruction. This results in a very compact way to build user interfaces!
-
### Adding a Button ###
Let's now add a button below the text label:
```csharp
// Create a button widget
- new efl.ui.Button(box, (efl.ui.IButton ebutton) => {
- // Customize it
- ebutton.SetText("Quit");
- ebutton.SetHintWeight(1.0, 0.1);
- // Set the method to be called when the button is pressed
- ebutton.ClickedEvt += QuitCb;
- // Add the button to the box container
- box.DoPack(ebutton);
- });
+ var button = new Efl.Ui.Button(box);
+ // Customize it
+ button.SetText("Quit");
+ button.SetHintWeight(1.0, 0.1);
+ // Set the method to be called when the button is pressed
+ button.ClickedEvt += (object sender, EventArgs e) => { Efl.Ui.Config.Exit(); };
+ // Add the button to the box container
+ box.DoPack(button);
```
This instantiates a button as a child of the box and initializes it so:
@@ -236,7 +231,7 @@ This instantiates a button as a child of the box and initializes it so:
> **NOTE**: You could also use `1` and `9` for the weights, or `10` and `90`, to achieve the same results. Remember that the weights are relative.
-* It connects the `QuitCb()` event handler to the `Clicked` event. In this way, when the button is pressed, the application will exit.
+* It defines a lambda function to be used as event handler for the `Clicked` event. In this way, when the button is pressed, the application will exit.
* Adds the button to the box (besides being a child of the box object, the button also needs to be *packed* into the box with `DoPack()`).
## Summary ##
@@ -245,7 +240,7 @@ At the end of this tutorial you have learned:
* How to react to **events** like window a being closed or a button being clicked.
* How to use **container** widgets to take care of other widget's position and size.
-* How to further customize a widget's position and size using **weight** and **alignment** hints.
+* How to further customize a widget's position and size using **size**, **weight** and **alignment** hints.
## Further Reading ##
diff --git a/pages/develop/tutorials/csharp/texteditor-cs.md.txt b/pages/develop/tutorials/csharp/texteditor-cs.md.txt
index 9228e1c23..046e6bbe6 100644
--- a/pages/develop/tutorials/csharp/texteditor-cs.md.txt
+++ b/pages/develop/tutorials/csharp/texteditor-cs.md.txt
@@ -60,9 +60,10 @@ public class TextEditor
"texteditor_example.txt");
// Quits the application
- private void GUIQuitCb(object sender, EventArgs ea)
+ private void GUIQuitCb(object sender, Efl.Gfx.EntityVisibilityChangedEvt_Args ea)
{
- Efl.Ui.Config.Exit();
+ if (ea.arg == false)
+ Efl.Ui.Config.Exit();
}
// Enables or disables buttons on the toolbar as required
@@ -174,17 +175,17 @@ public class TextEditor
bar.DoPack(box);
// "Quit" button
- GUIToolbarButtonAdd(bar, "Quit", "application-exit", GUIQuitCb);
+ GUIToolbarButtonAdd(bar, "Quit", "application-exit", (object sender, EventArgs e) => { Efl.Ui.Config.Exit(); } );
}
// Builds the user interface for the text editor
public TextEditor()
{
// Create a window and initialize it
- win = new Efl.Ui.Win(Efl.App.AppMain);
+ win = new Efl.Ui.Win(parent: Efl.App.AppMain);
win.SetText("Text Editor");
win.SetAutohide(true);
- win.HideEvt += GUIQuitCb;
+ win.VisibilityChangedEvt += GUIQuitCb;
// Create a vertical box container
Efl.Ui.Box box = new Efl.Ui.Box(win);
@@ -196,10 +197,10 @@ public class TextEditor
// Create the main text entry
editorTextBox = new Efl.Ui.Text(box);
editorTextBox.SetFont("Mono", 14);
- editorTextBox.SetMultiline(true);
- editorTextBox.SetEditable(true);
- editorTextBox.SetScrollable(true);
- editorTextBox.SetHintMin(new Eina.Size2D(360, 240));
+ editorTextBox.Multiline = true;
+ editorTextBox.Editable = true;
+ editorTextBox.Scrollable = true;
+ editorTextBox.SetHintSizeMin(new Eina.Size2D(360, 240));
editorTextBox.ChangedEvt += EditorChangedCb;
editorTextBox.ChangedUserEvt += EditorChangedCb;
box.DoPack(editorTextBox);
@@ -308,18 +309,19 @@ First, a window is created as explained in previous tutorials:
public TextEditor()
{
// Create a window and initialize it
- win = new Efl.Ui.Win(Efl.App.AppMain);
+ win = new Efl.Ui.Win(parent: Efl.App.AppMain);
win.SetText("Text Editor");
win.SetAutohide(true);
- win.HideEvt += GUIQuitCb;
+ win.VisibilityChangedEvt += GUIQuitCb;
```
-Then the vertical container box is created and set as the content for the window:
+The `parent` parameter is named explicitly in the argument list to `new Efl.Ui.Win()` just for example purposes. Some widgets accept multiple parameters in their constructors so sometimes it is handy to name them explicitly.
+Then the vertical container box is created and set as the content for the window:
```csharp
// Create a vertical box container
- Efl.Ui.IBox box = new Efl.Ui.Box(win);
+ Efl.Ui.Box box = new Efl.Ui.Box(win);
win.SetContent(box);
```
@@ -336,24 +338,28 @@ Finally, the text entry area is added. This is the main feature of the text edit
// Create the main text entry
editorTextBox = new Efl.Ui.Text(box);
editorTextBox.SetFont("Mono", 14);
- editorTextBox.SetMultiline(true);
- editorTextBox.SetEditable(true);
- editorTextBox.SetScrollable(true);
- editorTextBox.SetHintMin(new Eina.Size2D(360, 240));
+ editorTextBox.Multiline = true;
+ editorTextBox.Editable = true;
+ editorTextBox.Scrollable = true;
+ editorTextBox.SetHintSizeMin(new Eina.Size2D(360, 240));
editorTextBox.ChangedEvt += EditorChangedCb;
editorTextBox.ChangedUserEvt += EditorChangedCb;
box.DoPack(editorTextBox);
```
+For convenience, some widget's properties can be accessed through regular C# properties besides the `Set()` and `Get()` methods used so far. For instance, the `Editable` flag (explained below) can be manipulated through the `Efl.Ui.Text.Editable` property besides the `Efl.Ui.Text.SetEditable()` and `Efl.Ui.Text.GetEditable()` methods.
+
+Let's take a closer look:
+
* `Efl.Ui.Text.SetFont()` sets the font family and size for the text area. The font string has to follow `fontconfig`'s convention for naming fonts, as it is the underlying library used to query system fonts (see the output of the `fc-list` command). Alternatively, you can use the full path to a font file.
-* `Efl.Ui.Text.SetMultiline()` selects whether the text area will support more than one line of text (`true` is customary for a text editor).
+* `Efl.Ui.Text.Multiline` selects whether the text area will support more than one line of text (`true` is customary for a text editor).
-* `Efl.Ui.Text.SetEditable()` sets whether the text can be modified by the user or it is only meant for output. If set to `true` all editing facilities (like keyboard input handling and caret positioning) will be enabled.
+* `Efl.Ui.Text.Editable` sets whether the text can be modified by the user or it is only meant for output. If set to `true` all editing facilities (like keyboard input handling and caret positioning) will be enabled.
-* `Efl.Ui.SetScrollable()` selects whether the text area should automatically use scroll bars to accommodate text longer than can be shown in the window. If enabled, the caret will always be kept visible when typing. If disabled, when typing beyond the edge of the window you won't see the new characters.
+* `Efl.Ui.Scrollable` selects whether the text area should automatically use scroll bars to accommodate text longer than can be shown in the window. If enabled, the caret will always be kept visible when typing. If disabled, when typing beyond the edge of the window you won't see the new characters.
-* `Efl.Ui.SetHintMin()` sets a minimum size for the text area, as seen in previous tutorials.
+* `Efl.Ui.SetHintSizeMin()` sets a minimum size for the text area, as seen in previous tutorials.
Furthermore, handlers are installed for two events: `ChangedUserEvt` is triggered when the text content changes in response to user actions (for example, a key has been pressed). `ChangedEvt` is triggered when the text content changes for any other reason (both events are never triggered together).
@@ -378,7 +384,7 @@ The following sections describe each part of the user interface in more detail .
This is done in the `GUIToolbarSetup()` method:
```csharp
- private void GUIToolbarSetup(Efl.Ui.IBox parent)
+ private void GUIToolbarSetup(Efl.Ui.Box parent)
{
// Create a horizontal box container for the buttons
var bar = new Efl.Ui.Box(parent);
@@ -530,7 +536,7 @@ Applications typically convey important informational or error messages through
![Popup message](/_media/playground/texteditor-app/image02.png)
-To achieve this EFL uses the `Efl.Ui.Popup` class and its derivatives, for instance, the `Efl.Ui.Text_Alert_Popup` used in this tutorial. This class implements a popup that contains text and optional configurable buttons.
+To achieve this EFL uses the `Efl.Ui.Popup` class and its derivatives, for instance, the `Efl.Ui.TextAlertPopup` used in this tutorial. This class implements a popup that contains text and optional configurable buttons.
This is how it's used in this tutorial, in the `ShowMessage()` method:
diff --git a/pages/download-latest.txt b/pages/download-latest.txt
index e984371d9..ab3590972 100644
--- a/pages/download-latest.txt
+++ b/pages/download-latest.txt
@@ -1,9 +1,9 @@
<const>
-efl_v = 1.21.1
+efl_v = 1.22.1
python_efl_v = 1.21.0
enlightenment_v = 0.22.4
-terminology_v = 1.3.2
+terminology_v = 1.4.0
rage_v = 0.3.0
econnman_v = 1.1
ephoto_v = 1.5
diff --git a/pages/incl/efl-deps-src.txt b/pages/incl/efl-deps-src.txt
index 16ede63ef..f5ebb9935 100644
--- a/pages/incl/efl-deps-src.txt
+++ b/pages/incl/efl-deps-src.txt
@@ -27,6 +27,8 @@
* libpulse ([[https://wiki.freedesktop.org/www/Software/PulseAudio/|pulseaudio]]'s library)
* [[http://www.mega-nerd.com/libsndfile/|libsndfile]]
* [[http://www.freedesktop.org/software/systemd/libudev/|libudev]] //(for eeze udev support)//
+ * [[https://www.freedesktop.org/wiki/Software/systemd/|systemd]]
+ * [[http://fribidi.org/|fribidi]]
* libblkid & libmount **OR** libutil-linux
* [[http://gstreamer.freedesktop.org/|libgstreamer]] //(1.0 or better)//
* [[https://www.videolan.org/vlc/|vlc]] //(for emotion_generic_players)//
@@ -36,7 +38,7 @@
* [[https://www.openssl.org/|openssl]]
* opengl //(mesa or vendor supplied desktop OpenGL or OpenGL-ES2)//
* [[https://wiki.freedesktop.org/www/Software/libspectre/|libspectre]] //(for evas_generic_loaders)//
- * [[http://poppler.freedesktop.org/|poppler]] //(for evas_generic_loaders)//
+ * [[http://poppler.freedesktop.org/|poppler]] (poppler-cpp for some distros) //(for evas_generic_loaders)//
* [[https://wiki.gnome.org/action/show/Projects/LibRsvg?action=show&redirect=LibRsvg|librsvg]] //(for evas_generic_loaders)//
* [[http://www.libraw.org/|libraw]] //(for evas_generic_laoders)//
* [[https://www.xine-project.org/home|libxine]] //(for emotion xine back-end support - optional)//
diff --git a/pages/incl/start-release.txt b/pages/incl/start-release.txt
index 601d886f9..9405bf268 100644
--- a/pages/incl/start-release.txt
+++ b/pages/incl/start-release.txt
@@ -1,3 +1,3 @@
<note>
-EFL 1.21.0 and [[https://www.enlightenment.org/news/e0.22.4_release|Enlightenment 0.22.4]] are out - go to our [[/download]] page.
+EFL 1.22.1 and [[https://www.enlightenment.org/news/e0.22.4_release|Enlightenment 0.22.4]] are out - go to our [[/download]] page.
</note>
diff --git a/pages/news/2019-03-31-terminology-1.4.0.txt b/pages/news/2019-03-31-terminology-1.4.0.txt
new file mode 100644
index 000000000..00e11c217
--- /dev/null
+++ b/pages/news/2019-03-31-terminology-1.4.0.txt
@@ -0,0 +1,27 @@
+=== Terminology 1.4.0 Release ===
+ * //2019-03-31 - by Boris Faure//
+In the northern hemisphere, it is already spring. The flowers are starting to bloom again, trees are budding… It is also a time to start fresh and release those 250+ commits written during long winter nights. I am thus proud to release Terminology 1.4.0 today!
+
+== Additions ==
+ * Add Continuous Integration on every push to the git repository
+ * Add a test framework on escape code parsing and interpreting
+ * Add more than 120 test files
+ * Add support, along with tests, for the following escape codes: ''DSR-DIR'', ''DSR-KBD'', ''DSR-MSR'', ''DSR-DECCKSR'', ''DSR-OS'', ''DSR-PP'', ''DSR-UDK'', ''DECSCLM'', ''DECBI'', ''DECFI'', ''DECSACE'', ''DECRARA'', ''DECCRARA'', ''DECIC'', ''DECDC'', ''DECCRA'', ''DECST8C'', ''DA3'', ''DECSWBV''
+ * Add finer configuration on whether to activate links
+ * Set environment variable ''WINDOWID''
+== Improvements ==
+ * Selections only disappear if the underlying content changes
+ * When pasting a buffer, skip control characters as a security measure
+== Fixes ==
+ * Fixes, along with tests, on handling the following escape codes: ''VPR'', ''DECERA'', ''DECFRA'', ''DSR-CPR'', ''DCH'', ''DECALN'', ''DECAWM'', ''IL'', ''DL''
+ * Fixes, along with tests, on mouse reporting
+ * Fixes on issues spotted by Coverity
+
+
+
+== Download ==
+
+^ ** LINK ** ^ ** SHA256 ** ^
+| [[ https://download.enlightenment.org/rel/apps/terminology/terminology-1.4.0.tar.xz | Terminology 1.4.0 XZ]] | ''ed5904ba5eb11c67790964306ec260b4134e2a443ef5abd5105610d9943b3e60'' |
+{{:blank.png?nolink&100|}}
+~~DISCUSSIONS~~ \ No newline at end of file
diff --git a/pages/news/efl-1.22.0-alpha1.txt b/pages/news/efl-1.22.0-alpha1.txt
new file mode 100644
index 000000000..f5eefeaae
--- /dev/null
+++ b/pages/news/efl-1.22.0-alpha1.txt
@@ -0,0 +1,99 @@
+=== EFL 1.22.0 alpha 1 ===
+ * //2019-03-04 - by Stefan Schmidt//
+
+This alpha release for 1.22 starts the freeze period and stabilization phase for the 1.22 release cycle. There are still problems to fix and we appreciate any tester of this to let us know about problems seen. This goes for packaging, testing with efl based applications, integration into your systems, etc.
+
+For packagers we have one bonus item to test. 1.22 will be the last release using our autotools build system. From 1.23 onwards we will use meson, which is already in place and working well for developers. To ensure early on testing for packagers as well we produced a tarball with meson for this alpha release as well. Find it [[https://download.enlightenment.org/rel/libs/efl/efl-1.22.0-alpha1-meson.tar.xz|here]] ([[https://download.enlightenment.org/rel/libs/efl/efl-1.22.0-alpha1-meson.tar.xz.sha256|sha256 sum]]). The official tarball for 1.22 will still be produced with autotools and the link can be found below.
+
+**Download**
+
+|LINK| SHA256|
+| http://download.enlightenment.org/rel/libs/efl/efl-1.22.0-alpha1.tar.xz | 453fc38a6b0d275cb7a872dbfc3a07feba6869180f0341162c14755c374fa177 |
+
+**Features:**
+ * evas textblock: add/apply cursor cluster APIs based on grapheme cluster
+ * efl_ui_spin_button: Addded direction feature.
+ * scroller: refactory a momentum scroll animator
+ * elementary textpath: support legacy APIs
+ * elementary transit: add a convenient API.
+ * elementary transit: add a new api - elm_transit_progress_value_set()
+ * Text: add markup_range_get
+ * Canvas layout: support more Efl.Text.* with efl_part
+ * efl: Add support to elput for using elogind instead of systemd
+ * eina: add locale-independent eina_convert_strtod_c function
+ * elm perf tool - bring one back to efl
+ * eina: add locale-independent eina_convert_strtod_c function
+ * elm perf tool - bring one back to efl
+ * efl gfx_path: introduce efl_gfx_path_reserve()
+ * efl gfx_path: remove EFL_GFX_PATH_EVENT_CHANGED
+ * efl gfx_path: remove EFL_GFX_PATH_EVENT_CHANGED
+ * gfx: Add size hint fill (EO) (T3912)
+ * efl_app: add "standby" event (T5494)
+ * edje_cc: fail upon detecting invalid part description references in programs (T7016)
+ * elput: Add API to allow settings tap-to-click on pointer device
+ * ecore_drm2: Add API to allow settings tap-to-click on pointer device
+ * efl_ui_win: add 'exit_on_all_windows_closed' class property and unit test (T5494)
+ * efl_ui_win: add 'exit_on_close' property and unit test (T5494)
+ * eo: implement class overriding (+unit tests) (T7516)
+ * eolian gen: initial support for reflection api
+ * efl_ui_relative_layout: introduce new relative container (T5487)
+ * eolian: introduce typed slice types
+ * eolian: add support for inlist structs
+
+**Fixes:**
+ * ecore_wl2_dmabuf: Link with ecore_wl2 (T7327)
+ * ecore_wl2_dmabuf: Depend on ecore_wl2 (T7327)
+ * efl selection manager - avoid multiple selection get callbacks for req
+ * evas image: fix a bug in image preloading.
+ * evas canvas: fix null possibility of evas_object_above_get().
+ * edje: Remove hack code
+ * efl gfx_path: prevent buffer overflow.
+ * ecore_main: fix the invalid return value
+ * eina_vpath: fix the memory leak
+ * elementary: remove meaningless memory allocation and leaking
+ * elementary: fix memory leak from Efl.Ui.Layout.Object
+ * evas gl: fix invalid image size.
+ * elementary entry: apply scale to all edje objects
+ * eina debug: fix a double unlock issue
+ * elm_theme: fix return value when default style fallback is done
+ * evas vg: fix memory leak.
+ * devas vg: return default root node if possible.
+ * evas vg: fix memory leak at gradient.
+ * evas filter: remove critical messages from Evas Filter
+ * elementary transit: fix wrong pausing time calculation.
+ * Canvas text: fix line_jump_by logic
+ * cxx: explicitly require c++11 and fix tests to conform
+ * edje: fix an overflow issue for state values
+ * evas textblock: remove white space after line-break by a next item
+ * evas ector: fix memory leaks.
+ * evas vg: update render properly.
+ * ector software: make a pair of ref/unref.
+ * evas gl: recover current program state.
+ * ecore_evas - fix aninmator based frame render ticking to full framerate
+ * ecore evas - buffer - init ecore event evas as many times as shutdown
+ * eina: fix a build failure caused by missing 'locale_t' from OSX
+ * ecore_con: handle timeout of the attempt to connect.
+ * ecore_evas - fix aninmator based frame render ticking to full framerate
+ * ecore evas - buffer - init ecore event evas as many times as shutdown
+ * eina: fix a build failure caused by missing 'locale_t' from OSX
+ * ecore_con: handle timeout of the attempt to connect.
+ * evas gl - make GLintptr etc. also ndefed for GL_VERSION_1_5 fix typedef (T7502)
+ * ecore-drm2: Fix drmModeSetCrtc call during fb flip
+ * textblock: Fix crash with filters
+ * edje - stop trying to access ready deleted exrt/group swallow objects
+ * evas: remove memory leaks from deleted Textblock objects
+ * elm - dnd - restore to working as drop targets
+ * elm_config: Free data returned from eet_read
+ * ui/flip: fix efl_pack usage
+ * elm_entry: make file loading succeed on 0-sized files (T6562)
+ * theme: fix odd state setting on some items for list/genlist/gengrid
+ * theme: correct part name in program for elm/hover/base/main_menu_submenu/default (T6219)
+ * theme: remove a ton of invalid part description references in various programs (T6873)
+ * ecore-evas/extn: use evas from events when updating key masks (T5536)
+ * edje: apply maps to textblock cursors and backgrounds (T4977)
+ * ecore drm2 - work around kms/drm bug seemingly when no flip event comes
+ * elm textpath: reduces differences between actual pos and modified pos
+ * elm_map: Make more robust elm_map (T7443)
+
+{{:blank.png?nolink&100|}}
+~~DISCUSSIONS~~ \ No newline at end of file
diff --git a/pages/news/efl-1.22.0-beta1.txt b/pages/news/efl-1.22.0-beta1.txt
new file mode 100644
index 000000000..1823d0c0e
--- /dev/null
+++ b/pages/news/efl-1.22.0-beta1.txt
@@ -0,0 +1,49 @@
+=== EFL 1.22.0 beta 1 ===
+ * //2019-03-12 - by Stefan Schmidt//
+
+A bit delayed for various small reason we are pleased to announce the beta 1 release for the 1.22 release cycle. From this point forward the focus is on ironing out bugs in the code base to make a solid release. Please help by testing and fixing bugs.
+
+For meson tarball for testing purpose has also been updated [[https://download.enlightenment.org/rel/libs/efl/efl-1.22.0-alpha1-meson.tar.xz|here]]. ([[https://download.enlightenment.org/rel/libs/efl/efl-1.22.0-alpha1-meson.tar.xz.sha256|sha256 sum]]).
+
+**Download**
+
+|LINK| SHA256|
+| http://download.enlightenment.org/rel/libs/efl/efl-1.22.0-beta1.tar.xz | a06316c7f859d4ea15eea6bd8409fba1b32996cf85a3232dad82ab4279f09846 |
+
+**Fixes:**
+ * ecore-con/proxy_helper: fix in-tree run path (T6713)
+ * efreet: simplify and fix efreetd launch (T6713)
+ * build: always check for fork() and clearenv()
+ * popup: fix popup sizing when scroll enabled. (T6886)
+ * evas gl-x11 engine - nvidia driver - fix performance drop
+ * canvas vg_loader: close opened file after using it.
+ * elm/win: correctly track and set x11 shaped state
+ * evas textblock: adds missing legacy types
+ * canvas render: stop render_pre/post cb if it didn't render.
+ * Evas text textblock: call evas_font_free even on null fonts
+ * emile image: close file properly.
+ * examples/evas: do not attempt to free animator on window delete (T7000)
+ * ecore_evas: when window resized in ecore_evas, check evas rotate state.
+ * elm_code: (cherry-pick) Fix cusor pos after newline when indenting with tabs
+ * ecore x - fix vsync to not block amdgpu drivers
+ * elm_code_widget: resize cursor at time of font change. (T6470)
+ * evas canvas: fix not to trigger unnecessary events.
+ * build: fix rpath for binaries which use ecore-x dependencies
+ * elm/genlist: remove conditional in _calc_job for verifying show_item code (T6368)
+ * elementary image: don't calc size using empty ones.
+ * evas image: fix screen flickering issue at partial + image preloading
+ * edje_cc: change .mo file write location to be relative to the .edj file
+ * theme: add programs for deferred naviframe push/pop signals
+ * edje: unset internal _need_imf flag on shutdown
+ * elm_panel: return instead of EINA_SAFETY_ON_FALSE_RETURN (T7265)
+ * build: fix evas static build of gl engines
+ * ecore/main: only update loop_time during loop iteration if the change is monotonic
+ * evas gl: fix missing map texture target.
+ * elm_code: fix crash on backspace and selection delete. (T7259)
+ * Fix leak in elm atspi
+ * eina_file: set errno on open fail for win32 build
+ * evas-gl-drm: Fix issue of rotation not actually rotating (T7690)
+ * solve neon rotation issue by moving to the tiled rotator
+
+{{:blank.png?nolink&100|}}
+~~DISCUSSIONS~~ \ No newline at end of file
diff --git a/pages/news/efl-1.22.0-beta2.txt b/pages/news/efl-1.22.0-beta2.txt
new file mode 100644
index 000000000..0302d6347
--- /dev/null
+++ b/pages/news/efl-1.22.0-beta2.txt
@@ -0,0 +1,37 @@
+=== EFL 1.22.0 beta 2 ===
+ * //2019-03-19 - by Stefan Schmidt//
+
+We are pleased to announce the beta 2 release for the 1.22 release cycle. One week after beta1, but still some days delayed from the original schedule. Please help by testing and fixing bugs.
+
+For meson tarball for testing purpose has also been updated [[https://download.enlightenment.org/rel/libs/efl/efl-1.22.0-beta2-meson.tar.xz|here]]. ([[https://download.enlightenment.org/rel/libs/efl/efl-1.22.0-beta2-meson.tar.xz.sha256|sha256 sum]]).
+
+**Download**
+
+|LINK| SHA256|
+| http://download.enlightenment.org/rel/libs/efl/efl-1.22.0-beta2.tar.xz | 7e1b44481c0bfd398c337a32bc4464b7b7eb82148514445f347985bc6e303b9e|
+
+**Fixes:**
+
+ * eo: Fix missing varags cleanup (CID1399080)
+ * efl_core_command_line: Fix logically dead code (CID1399106)
+ * efl_ui_widget_common: Fix potential resource leak (CID1399088)
+ * efl_ui_selection_manager: Fix unchecked return value (CID1399092)
+ * evas_device: Fix dereferencing null pointer (CID1399091)
+ * efl_ui_stack: Fix dereference null return value (CID1399082)
+ * efl_ui_datepicker: Fix uninitialized scalar value (CID1397006)
+ * efl_ui_grid: Fix dereferencing null pointer (CID1397000)
+ * ecore_con: Fix dereferencing of null pointer (CID1396990)
+ * elm_atspi_bridge: Fix resource leak (CID1399429)
+ * efl_ui_win: Fix dereference null return value (CID1399428)
+ * efl_ui_win: Fix dereference null return (CID1399427)
+ * efl_ui_win: Fix dereference null return (CID1399426)
+ * efl_ui_win: Fix dereference null return value (CID1399425)
+ * efreet: Fix resource leak (CID1399090)
+ * efl_ui_text: Fix resource leak (CID1396998)
+ * eldbus: Fix dereference after null check (CID1399422)
+ * efl_ui_focus_manager_calc: Fix resource leaks (CID1396984, CID1396965)
+ * elm_focus_legacy: Fix resource leaks (CID1399096, CID1399095)
+ * eldbus: Fix resource leak (CID1399097)
+
+{{:blank.png?nolink&100|}}
+~~DISCUSSIONS~~ \ No newline at end of file
diff --git a/pages/news/efl-1.22.0.txt b/pages/news/efl-1.22.0.txt
new file mode 100644
index 000000000..75853c018
--- /dev/null
+++ b/pages/news/efl-1.22.0.txt
@@ -0,0 +1,120 @@
+=== Enlightenment Foundation Libraries 1.22 Release ===
+ * //2019-04-05 - by Mike Blumenkrantz //
+
+This is version 1.22 of the Enlightenment Foundation Libraries, featuring over 2000 patches from developers around the world.
+
+== Download ==
+
+| LINK | SHA256 |
+| [[http://download.enlightenment.org/rel/libs/efl/efl-1.22.0.tar.xz | efl-1.22.tar.xz ]] | 6ac87450cb55a5948c550dbeb05464f5fc1b0616c52dcb1cb2efbda73999c8ef |
+
+----
+
+== What's New ==
+
+The primary focus of this release has been stabilizing the EO library as well
+as an initial set of unified API which is based on it. This release also includes
+work on language bindings for EFL in C# and C++.
+
+Please see the NEWS file for more details.
+
+----
+
+== Statistics ==
+
+(git log --pretty=oneline v1.21.0..v1.22.0 | wc -l) \\
+Number of commits in 1.22: 2152 \\
+Number of commits in 1.21: 4954 \\
+
+(git shortlog -ns v1.21.0..v1.22.0 | wc -l) \\
+Number of authors in 1.22: 55 \\
+Number of authors in 1.21: 96 \\
+
+(git diff --stat v1.20.1..v1.21.0 | tail -1) \\
+3154 files changed, 169564 insertions(+), 79861 deletions(-) \\
+3217 files changed, 281935 insertions(+), 137611 deletions(-) in 1.21 \\
+
+----
+
+==Building and Dependencies==
+
+If you have an existing EFL or Elementary install, you may wish to delete its header files and libraries before compiling and installing to avoid possible conflicts during compilation. Please refer to the README for a full list of dependencies, explanations on configure flags and other relevant information. Default dependencies are:
+
+ * bullet
+ * libpng
+ * libjpeg
+ * gstreamer (1.x, 0.10 support optional. Ensure all codecs you want are installed.)
+ * zlib
+ * luajit (lua 5.1 or 5.2 support optional)
+ * libtiff
+ * openssl
+ * curl
+ * dbus
+ * libc
+ * fontconfig
+ * freetype2
+ * fribidi
+ * libpulse
+ * libsndfile
+ * libx11
+ * libxau
+ * libxcomposite
+ * libxdamage
+ * libxdmcp
+ * libxext
+ * libxfixes
+ * libxinerama
+ * libxrandr
+ * libxrender
+ * libxss
+ * libxtst
+ * libxcursor
+ * libxp
+ * libxi (2.2 or newer)
+ * libgl (opengl/glx or opengl-es2/egl)
+ * giflib
+ * util-linux (limbount + libblkid)
+ * systemd / libudev
+ * poppler / poppler-cpp
+ * libraw
+ * libspectre
+ * librsvg
+
+Recommended requirements (highly recommended):
+
+ * harfbuzz
+ * libwebp
+ * libunwind (where available)
+
+Enable these with configure options:
+
+<file>
+--enable-xinput22 \
+--enable-systemd \
+--enable-image-loader-webp \
+--enable-harfbuzz \
+--enable-multisense \
+--enable-liblz4
+</file>
+
+On linux to get framebuffer support you may want to also do:
+
+<file>
+--enable-fb
+--disable-tslib
+</file>
+
+If you want wayland support also add:
+
+<file>
+--enable-wayland \
+--enable-elput \
+--enable-drm
+</file>
+
+At runtime if you want thumbnailing for DOC/PPT/XLS etc. files also provide:
+libreoffice
+
+{{:blank.png?nolink&100|}}
+~~DISCUSSIONS~~
+
diff --git a/pages/news/efl-1.22.1.txt b/pages/news/efl-1.22.1.txt
new file mode 100644
index 000000000..df745a487
--- /dev/null
+++ b/pages/news/efl-1.22.1.txt
@@ -0,0 +1,19 @@
+=== EFL 1.22.1 release ===
+ * //2019-04-17 - by Mike Blumenkrantz//
+
+Our first update on the 1.22 release series.
+
+==Fixes:==
+
+ * remove vpath test for user dir the test was broken and fixing is insane (T7728)
+ * tests - fix check header to always include eina due to windows
+ * evas - fix crash/junk pixel content but with tiled rotate at 270 + neon
+ * tests - remove one of the eina strtod tests as libc is failing
+ * ecore_imf: do not loop forever on shutdown when there is no more a display
+ * efl_ui_list: fix to delete sub objects in efl_object_invalidate
+ * efl_ui_widget: Fix disabled set calling without meaning. (T7799)
+
+==Download:==
+
+^ ** LINK ** ^ ** SHA256 ** ^
+| [[http://download.enlightenment.org/rel/libs/efl/efl-1.22.1.tar.xz | efl-1.22.1.tar.xz ]] | 20d3e5e945d54ae46ec916c7341b5dec24f904b6c0123b4d3ecb8cd8d596ae12 | \ No newline at end of file