Download source code

dialer: Work around GtkGrid row homogeneity.
Puts the buttons into a vertical size group rather than making the rows
homogeneous. This prevents a bug from GtkGrid to make the buttons too
tall when the action buttons are hidden.

dialog: Don't warn if the titlebar isn't a GtkHeaderBar.
Using another widget is perfectly valid, so we should just return
instead.

dialog: Refactor the transient-for workaround.
This will make introducing new properties simpler.

dialog: Add the narrow property.

header-bar: Show a back button in a narrow HdyDialog.
If a header bar is in a narrow HdyDialog, it will display a back button
at its start in place of its usual window decorations.

examples: Add a complex HdyDialog example.
This shows how to use HdyHeaderBar and HdyDialog to create a more
complex adaptive dialog.

header-bar: Show a back button on small non-sovereign windows.
This will show the back button not only in small HdyDialog but in all
small windows that are not sovereign.

meson: Set the log domain.
This makes the log messages from libhandy look like Handy-Debug: …
rather than ** Debug: …, making them easier to distinguish.

README.md: Update the documentation URL.
It's on the developer.puri.sm now.

squeezer: Support animation disablement.
This will animate the child transitions only if animations are enabled.

preferences-group: Use the h4 style class.
Use the h4 style class instead of hardcoding the bold style for the
preferences group title, and implement a fallback making the font bold.
This is needed by elementary to use their own style.

animation: Make some functions public.
This makes hdy_get_enable_animations() and hdy_ease_out_cubic() public.

view-switcher-button: Don't make transparent on hover.
This doesn't make the background transparent when hovering and apply the
same style as non-hovered buttons on hovered buttons in a headerbar.

[ Gabriele Musco ]

Added Unifydmin to Python 3 examples

Add HydraPaper to Python 3 examples

[ Ting-Wei Lan ]

Don't require GNU sed

[ Jeremy Bicha ]

Debian packaging improvements

[ Guido Günther ]

debian: Ship example program and files

Release libhandy 0.0.11

[ Alexander Mikhaylenko ]

search-bar: Hide start and end boxes instead of close button.

glade: Update catalog dtd.

Add new HdySwipeTracker widget.
This will be used to implement swipes in new widgets.

Add new HdyPaginator widget.
Display set of pages with swipe based navigation.

Download artifacts

Previous Artifacts

arrows: Refresh HdyArrowsDirection docs.
This moves the HdyArrowsDirection documentation to the C file and
removes the final period from the values definitions, like for all other
enums documentations.

docs: Add section for new symbols in 0.0.10

view-switcher: Fix stack children callbacks.
This fixes the callbacks when a child is added or removed from the view
switcher's stack.

view-switcher-button: Make an active button's label bold.
This makes the view switcher easier to read.
It uses multiple labels with or without the specific style rather than a
single label with the style toggled on and off to ensure the size
requests don't change depending on whether the button is active or not.

Add HdySqueezer.
This can be used to automatically hide a widget like a HdyViewSwitcher
in a header bar when there is not enough space for it and show a title
label instead.
Fixes #100

examples: Use a HdySqueezer.
Use a HdySqueezer in the view switcher window to show either the view
switcher in the header bar, or a window title and a view switcher bar
depending on the window's width.

view-switcher-button: Allow to elipsize in narrow mode.
This will be used to let HdyViewSwitcherBar reach even narrower widths.

view-switcher: Allow to elipsize in narrow mode.
This will be used to let HdyViewSwitcherBar reach even narrower widths.

Add private GtkWindow functions.
Add the private GtkWindow functions _gtk_window_toggle_maximized()
and gtk_window_get_icon_for_size() which will be used in the next commit
by HdyHeaderBar.

Add HdyHeaderBar.
Fork GtkHeaderBar to help fixing shortcomings caused by adaptive designs
or coming from GtkHeaderBar itself as features are not accepted into GTK
3 anymore.
Fixes #102

examples: Use HdyHeaderBar in the View Switcher page.
This correctly centers the view switcher and demoes HdyHeaderBar.

view-switcher: Recommend to use a HdyHeaderBar.
This will help users of HdyViewSwitcher to know how to make it look
good in a header bar.

examples: Drop un unused signal connection.
This avoids a run time warning.

docs: Add images for HdyViewSwitcher and HdyViewSwitcherBar

preferences-window: Strictly center the header bar.
This makes the header bar's widgets look better by ensuring they are
always centered, even if it means they will be narrower.

conbo-row: Make the popover relative to the arrow.
Consistently point to the arrow rather than sometimes to the arrow and
sometimes to the invisible box containing the current value.

combo-row: Add HdyComboRowGetName.
Replace HdyComboRowCreateLabelData by HdyComboRowGetName and keep a
reference to in the combo row to allow accessing it externally. It will
be needed to automatically handle converting the value into a name to
display as the subtitle of the row.

combo-row: Add the use-subtitle property.
Allow to display the current value as the subtitle rather than at the
end of the row.
Fixes #95

Add HdyViewSwitcherButton.
This will be used in the next commit by HdyViewSwitcher.

Add HdyViewSwitcher.
This more modern and adaptive take on GtkStackSwitcher helps building
adaptive UIs for phones.
Fixes #64

Add HdyViewSwitcherBar.
This action bar offers a HdyViewSwitcher and is designed to be put at
the bottom of windows. It is designed to be revealed when the header bar
doesn't have enough room to fit a HdyViewSwitcher, helping the windows
to reach narrower widths.

examples: Add the View Switcher page.
This example presents a HdyViewSwitcher and a HdyViewSwitcherBar in
their own window. Currently both are visible at the same time, a later
commit should make only one visible at a time, depending on the
available width.

[ Aearil ]

Update components list for the external projects in the README

[ Mohammed Sadiq ]

dialog: Fix typos in documentation

demo-window: Fix typo in property name

[ Oliver Galvin ]

Change GTK+ to GTK

Fix a few typos and grammatical mistakes

Expand the visual overview.
Add more widgets and a comparison of HdyDialog

Download source code

glade: Mark ActionRow properties as translatable/icon.
Without this, it is impossible to set the translatable flag in glade,
making it hard to create proper UI definitions.

[ Bastien Nocera ]

Use correct i18n include.
From the Internationalization section of the GLib API docs:
In order to use these macros in an application, you must include
<glib/gi18n.h>. For use in a library, you must include <glib/gi18n-lib.h>
after defining the GETTEXT_PACKAGE macro suitably for your library

examples: Update the Flatpak command.
The command should changed with the demo application name.

leaflet: Improve the slide child transition description.
This makes the slide child transition description match the one of the
slide mode transition one.

action-row: Upcast self to check the activated row.
Upcast the HdyActionRow rather than downcasting the activated row to
compare their pointers. This prevents error messages when a sibbling row
that isn't a HdyActionRow is activated. Also use a simple cast rather
than a safe cast as it is there only to please the compiler and is
useless for a pointer comparison and it's faster.

Drop 'dialer' from the UI resources path.
This makes the UI file paths more correct and simpler.

leaflet: Add hdy_leaflet_stop_child_transition()
This makes the code clearer by encapsulating child mode transition
cancellation into its own function.

leaflet: Factorize bin window move and resize.
This ensures we move or resize it consistently.

leaflet: Move the bin window on child transition cancellation.
This avoids the children to be drawn out of place when a mode transition
is triggered while a child transition was ongoing.
Fixes #93

Add HDY_STYLE_PROVIDER_PRIORITY.
Add and use HDY_STYLE_PROVIDER_PRIORITY to help ensuring custom styling
is applied consistently and correctly accross all the library.

expander-row: Move the custom style to a resource.
This makes the code cleaner, easier to read, and simnpler to modify.

combo-row: Move the custom style to a resource.
This makes the code cleaner, easier to read, and simnpler to modify.

expander-row: Add the expanded property.
This can be used to reveal external widgets depending on the state of
the row.

value-object: Add an object to stuff a GValue into a GListModel.
This is useful to store arbitrary (but simple) values inside a
HdyComboRow.

example: Use value object rather.
The code was storing strings in labels, just to extract them again.
Also, the code was leaking the labels as g_list_store_insert does not
sink the reference of the passed object.

tests: Add tests for HdyValueObject

action-row: Destroy the contained widget.
The GtkBox that contains everything is an internal child which must be
destroyed explicitly.

[ Guido Günther ]

run.in: Set GLADE_MODULE_SEARCH_PATH as well.
This makes sure we're using the freshly built module when running
from the source tree.

Download source code

glade: Add row widgets to the widget classes. They are missing and don't
appear in Glade.

glade: Add that HdySearchBar. It's in libhandy since 0.0.6

action-row: Handle show_all()
This avoids an empty image, an empty subtitle and an empty prefixes box
to be visible when calling show_all(), as they are handled by the row
itself.

action-row: Add the Since annotation to properties

example: Make the row with no action non-activatable

tests: Init libhandy.
This ensures we run the test the same way applications are expected to
run libhandy.

docs: Add section for new symbols in 0.0.7

action-row: Add the activatable-widget property.
This allows to bind the activation of the row by a click or a mnemonic
to the activation of a widget.

action-row: Chain up the parent dispose method

combo-row: Release the model on dispose.
This avoids errors when trying to disconnect signals on finalization.

combo-box: Rename selected_position to selecxted_index.
This will better match the name for its accessors which will be added in
the next commit.

combo-row: Add the selected-index property.
This allows to access the selected item.

main: Explicitely load the resources in hdy_init()
This is mandatory to use resources of a static version of libhandy, and
is hence mandatory to allow to build libhandy as a static library.

meson: Bump Meson to 0.47.0.
This is required to use the feature option type in the next commit.

meson: Make introspection and the Glade catalog features.
This avoids having to disable them when their dependencies aren't
available and it will allow to disable them properly when libhandy will
be allowed to be built as a static library in the next commit.

meson: Allow to build as a static library.
This also disables the Glade catalog as it doesn't work with a static
libhandy.

examples: Make the Dialog section look nicer.
This improves the spacing, adds and icon and adds a description to the
Dialog section.

dialog: Close when pressing the back button.
Close the dialog instead of destroying it when clicking the back button.
This is the same behavior as when pressing escape or clicking the close
button and allows the dialog to be reused as some applications like to
do.
Fixes #70

[ louib ]

Add GNOME Contacts as example

[ Guido Günther ]

HdyComboRow: Don't use g_autoptr for GEnumClass
g_autoptr for GEnumClass was added post 2.56, so using it makes it
harder for people to package for distros. Not using g_autoptr there
doesn't make the code much less readable.

HdyDialer: Don't use class method slot for 'delete'
We used the one of 'submit' so far due to a c'n'p error. (Closes: #67)

HdyComboRow: hdy_combo_row_get_model: Add missing scope annotation

gitlab-ci: Build static library.
The library build is sufficiently different that we want to run the
build and tests.

combo-row: Rework selected-index property setting and notification.
The notify::selected-index signal was not selected in most cases. Rework
the selection handling to ensure that it is always emited when it changes
or if the module is replaced.
Also fixed are a few checks on whether the selection index is valid.

Download source code

Set relevant ATK roles.
This will help the widgets to be more accessible.

doc: Rephrase the unstability ack section.
Rephrase the documentation explaining how to include libhandy in a way
that could include other languages such as Vala.

doc: Document the unstability ack for Vala

Guard header inclusions with #pragma once.
This standardizes the header inclusion guards to #pragma once, which
shouldn't be a problem as we already were using it in some files.

hacking: Document header inclusion guard preferences

example: Disable more libhandy options in Flatpak.
Disable generation of the GObject Introspection files, the VAPI and the
tests in the example Flatpak as they are not used by it.

arrow: Use a measure() method.
This will simplify porting to GTK+ 4.

column: Use a measure() method.
This will simplify porting to GTK+ 4.

dialer-button: Use a measure() method.
This will simplify porting to GTK+ 4.

leaflet: Use a measure() method.
This will simplify porting to GTK+ 4.

init: Make the arguments optional.
Annotate the arguments of hdy_init() with (optional) to specify that NULL
arguments are valid. This also replaces the deprecated (allow-none) by
(nullable) to specify that the array pointed at by argv can be NULL.

init: Document that libhandy can't be reinitialized

Normalize and document private header guards

Add HdySearchBar.
This is similar to GtkSearchBar except it allows the central widget
(typically a GtkEntry) to fill all the available space. This is needed to
manage an entry's width via a HdyColumn, letting the entry (and by
extention the search bar) have a limited maximum width while allowing it to
shrink to accomodate smaller windows.

example: Add the 'Search bar' page.
This adds a demo of HdySearchBar.

example: Put the content in a scrolled window.
This ensures the example can fit windows of any height. This also makes
the stack containing the content non vertically homogeneous so the
scrollbar appears only on examples needing it, while keeping it
horizontally homogeneous for to keep when the leaflets will be folded
consistent.

build: Set the shared object install directory.
This is required for Meson subprojects to work as intended.

build: Do not install hdy-public-types.c.
There is no point in installing this generated C file.

leaflet: Allow editing the children list when looping through it.
This avoids potential crashes when destroying a leaflet and this avoids
leaks as not all children where looped through as the children list was
edited while being looped through when destroying the leaflet. This fixes
#42.

Add hdy_list_box_separator_header()
This list box header update function is commonly used by many applications
and is going to be used by HdyComboRow which is going to be added to
libhandy later.This makes it available for everyone.

examples: Use hdy_list_box_separator_header()
This makes the code simpler.

Add HdyActionRow.
This implements a very commonly used list box row pattern and make it
convenient to use. It is going to be used as the base class for many
other commonly used row types.

examples: Use HdyRow.
This makes the code simpler and demoes the widget.

Add HdyExpanderRow

Add HdyEnumValueObject.
This will be used in the next commit to use enumeration values in a
GListModel.

Add HdyComboRow

examples: Add the Lists page.
This page presents GtkListBox related widgets like HdyRow and its
descendants.

examples: Put the scrolled window in the end pane size group.
This fixes the fold synchronization of the leaflets in the example
application's window.

[ Guido Günther ]

hdy-enums: Make build reproducible.
Use @basename@ instead of @filename@ since the later uses the full
path which varies across builds.

HACKING: Clarify braces in if-else.
Document common practice in the other files.

spec: Sort dependencies

spec: Build-depend on libgladeui-2.0

gitlab-ci: Deduplicate tags

gitlab-ci: Build on Fedora as well.
This gives us more confidence that we build succesfully and without
warnings on an OS much used by GNOME developers. It also makes sure we
validate the spec file.

gitlab-ci: Switch to clang-tools
clang-3.9 does not contain scan-build anymore.

HdyHeaderGroup: Cleanup references to header bars in dispose.
The dispose heandler is meant to break refs to other objects, not
finalize.

HdyHeaderGroup: Disconnect from header bar's signals during dispose. The
header bars might still emit signals which leads to CRITICALS or actual
crashes. Fixes parts of #56

docs: Add section for new symbols in 0.0.6

Annotate APIs new in 0.0.6

Release libhandy 0.0.6

[ Alexander Mikhaylenko ]

init: Add (transfer none) to argv parameter.
This allows to call the function from Vala more easily.

header-group: Ref itself instead of header bars.
When adding a header bar, ref the header group and connect to 'destroy'
signal of the header bar. When a header bar is destroyed or
hdy_header_group_remove_header_bar() is called, unref the header bar and
remove it from the list.
This way, a non-empty header group is only destroyed after every header
bar it contains has been removed from the group or destroyed.
Fixes #56

Revert "HdyHeaderGroup: Disconnect from header bar's signals during
dispose"
Since commit c5bf27d4 header bars are
destroyed before header group, so when destroying the header group, the
list of header bars is always empty, so there's nothing to unref anymore.
Reverts commit 14e5fc7b.

[ tallero ]

build: Don't use -fstack-protector-strong on mingw64.
This unbreaks compilation on that platform. (Closes: #64)

dialer: Handle delete button long press.
Make the delete button clear the whole user input on long press

[ Alexander Mikhaylenko ]

example: Remove sidebar border less aggressively.
Applying the style to every element inside 'stacksidebar' also removes
border from unrelated elements such as scrollbars. Hence only remove it
from lists.

[ Adrien Plazas ]

leaflet: Add the folded property.
This is a boolean equivalent of the fold property, it is a needed
convenience as is can be used in GtkBuilder declarations while the fold
property is more convenient to use from C as it enables stronger typing.

example: Bind back and close buttons visibility to fold.
Directly bind whether the back button and the close button are visible
to whether the headerbar is folded.

Add HdyHeaderGroup

example: Use a HdyHeaderGroup.
This automatically updates the headerbars' window decoration layout.

dialer-button: Replace digit and letters by symbols.
Unify the digit and the letters of a dialer button as its symbols. This
allows to make the code simpler by limiting the number of special cases.
digit. This also handles Unicode characters.

dialer-cycle-button: Don't make the secondary label dim.
This helps making it clear that these symbols are available, contrary to
the dim ones from a regular dialer button.

dialer-button: Make the secondary label smaller.
Makes the secondary text smaller to better match the mockups for Calls.

Add CSS names to the widgets

leaflet: Document the fold and folded properties

dialer: Set buttons checked instead setting relief.
When digit keys are pressed, check the buttons state to checked rather
than changing the relief.

dialer: Add the relief property.
This allows to set the relief of the dialer buttons.

header-group: Sanitize the decoration layout.
Checks whether the decoration layout is NULL, empty or has at least one
colon.
Fixes #44

header-group: Better handle references of header bars.
Take a reference when adding a header bar, release them on destruction
and don't take extra references on the focused child. This avoids using
pointers to dead header bars or to leak them.

header-group: Fix the type of the focus property.
This also fixes the types of the accessor functions.
Fixes #46

header-group: Fix the docs of the focus property.
This also improves the documentation of its accessor functions.

header-group: Guard the focused header bar setter.
Better guard the focused header bar setter by checking that the set
header bar actually is one and is part of the group.

meson: Require GTK+ 3.24.1 or newer.
GTK+ 3.24.1 received style fixes required for HdyTitleBar to work as
expected.

[ Felix Pojtinger ]

docs: Format README to enable syntax highlighting.
This also adds code fences and blanks around headers.

[ Guido Günther ]

Depend on generated headers.
If tests or examples are built early we want that hdy-enums.h is alread
there.

docs: Add HdyFold.
This makes sure it can be linked to by HdyLeaflet.

HdyLealflet: Use glib-mkenums.
This makes the enums clickable in the HdyLeaflet documentation
and makes the code smaller.

HdyFold: Use glib-mkenums.
This makes the enums clickable in the HdyLeaflet documentation,
HdyFold usable in GtkBuild and makes the code smaller.