Compare commits

...

66 Commits

Author SHA1 Message Date
Daniel Rusek
7f9f29b7d1 Update Czech translation 2023-08-16 19:39:03 +00:00
Nart Tlisha
cfdbacbc96 Update Abkhazian translation 2023-04-05 09:02:18 +00:00
Matthias Clasen
ac5f95f856 Merge branch 'allocation-fixes-4-8' into 'gtk-4-8'
[4.8] Backport size allocation fixes

See merge request GNOME/gtk!5635
2023-03-10 23:41:30 +00:00
Matthias Clasen
6af8a31893 widget: Skip popovers in allocation
Native widgets get allocated via their surface,
so can skip them here. This avoids criticals when
re-mapping a popover for the second time, as can
be seen e.g. in the 'Selections' demo in gtk4-demo.
2023-03-11 00:17:00 +02:00
Matthias Clasen
4e0633a6ef widget: Stop propagating alloc_needed beyond popovers
This should not be necessary, since popovers get
their new size from present_popup via the compositor.
2023-03-11 00:16:39 +02:00
Benjamin Otte
7b0c6b6c9c widget: Remove goto usage in widget_allocate() 2023-03-11 00:16:19 +02:00
Benjamin Otte
76c7602b92 widget: Split out gtk_widget_ensure_allocate_on_children()
allocate() should not be calling into ensure_allocate(), they do a similar job.
In the end, the code does the same work, but it should be easier to follow now.
2023-03-11 00:15:59 +02:00
Matthias Clasen
d671fdab7c widget: Simplify size allocation
Don't call ensure_allocate if we've just
done size_allocate. This makes criticals
from reshowing popovers go away.
2023-03-11 00:15:35 +02:00
Ivan Molodetskikh
fc4044bbce combobox: Avoid extra queue_resize()
width-request already ensures it's above the minimum width, so avoid an
extra queue_resize() when setting size request to (-1, -1).

This is the same way as GtkDropDown works. This also unbreaks
GtkComboBox after the recent allocation fix in
75a417e337.

Incidentally, this also makes GtkComboBox actually resize its popup as
intended (that was broken before).

I don't think this is ultimately the final fix, sometimes I still get
allocation warnings. But the proper fix will probably involve changing
some more allocation machinery around popovers. This is good enough for
now.
2023-03-11 00:14:12 +02:00
Marek Černocký
770e5460d2 Update Czech translation 2023-03-06 11:59:19 +00:00
Matthias Clasen
2c5784977a Merge branch 'revert-undo-4-8' into 'gtk-4-8'
[4.8] Revert "text: Make editable API irreversible"

See merge request GNOME/gtk!5578
2023-03-01 12:28:02 +00:00
Mat
6c88cc7215 Revert "text: Fix disabling of history"
This reverts commit 45d6ffcce8.
2023-03-01 14:06:16 +02:00
Mat
ea1bb79566 Revert "text: Make editable API irreversible"
This reverts commit 08479ae4b2.
2023-03-01 14:04:34 +02:00
Matthias Clasen
d0e3dc7ce0 Merge branch 'textbuffer-foreground-property-4-8' into 'gtk-4-8'
[4.8] textbuffer: Use correct foreground color property

See merge request GNOME/gtk!5575
2023-03-01 11:05:08 +00:00
Matthias Clasen
fec951c2b2 Merge branch 'cherry-pick-4-8' into 'gtk-4-8'
Cherry-pick changes from main for 4.8

See merge request GNOME/gtk!5573
2023-03-01 11:04:13 +00:00
Lukáš Tyrychtr
d84dab39b9 Don't tell the screen reader that a button is related to an image which has no useful label 2023-03-01 06:24:35 +02:00
Mat
40ff1f442b textbuffer: Use correct foreground color property
The 'foreground-rgba' property should be used instead of 'foreground',
since the latter is not readable.
2023-03-01 04:49:44 +02:00
Corey Berla
c8b4f0c8e8 columnviewtitle: Prevent header clicks from propagating
The header in GtkColumnView has multiple event handlers
there is a ::pressed handler in GtkColumnView for
resizing the columns in CAPTURE as well as a motion
and drag controller.  The ::release handler is in
GtkColumnViewTitle.   We can't claim the event in the
existing handlers because then the ::release handler will
never get called.  Currently, however, all clicks get propagated
to the ColumnView from the header which can be problematic.
Since we don't usually want the clicks from the header
handled on the view, claim it in the BUBBLE phase.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5425
2023-03-01 01:38:18 +02:00
Alexander Mikhaylenko
52f7afeecd builderparser: Don't exit too early on nested custom tags
Currently nested custom tags work only as long as the element names differ
from the root one. If it's same, for example:

<condition type="any">
  <condition type="max-width">600</condition>
  <condition type="max-height">600</condition>
</condition>

then it will fail. Meanwhile the same tags wrapped into <conditions> would
work.

The problem is that custom tag parsing is considered finished as soon as we
encounter a closing tag with the same element name. So instead, track the
nesting level.
2023-03-01 01:20:48 +02:00
Ivan Molodetskikh
370ab8aa52 widget: Reset alloc_needed_on_child before allocating children
Reset alloc_needed_on_child *before* allocating the children. This is
because some child's size_allocate() may call queue_allocate(), which
will bubble up alloc_needed_on_child. An example of this happening is
with GtkScrollable implementations, which are supposed to configure
their adjustments in size_allocate(), which will cause GtkScrollbar's
GtkRange to notice and queue_allocate() on itself.

If we reset alloc_needed_on_child after this happens, then our children
will have a lingering alloc_needed_on_child and will not receive an
allocation.

This commit fixes widgets occasionally losing an allocation when this
scenario happens.
2023-03-01 01:20:17 +02:00
Matthias Clasen
08479ae4b2 text: Make editable API irreversible
Programmatic changes to the entry contents should
not become part of the undo history.

Sadly, the editable implementations are also used
in the code paths that we use for user-initiated changes,
so we have to be careful to only set them as
irreversible if we are not already in a user action.

Fixes: #5622
2023-03-01 01:19:54 +02:00
Matthias Clasen
45d6ffcce8 text: Fix disabling of history
Keep a separate boolean for enable-undo, and
disable the history if it is false, or the entry
is not using visible text, or isn't editable.

Related to: #5622
2023-03-01 01:19:34 +02:00
Lukáš Tyrychtr
f3b09a8725 GtkNotebook: Improve the labels of notebook pages for a11y 2023-03-01 01:18:05 +02:00
Matthias Clasen
d6d5a22306 filechooser: Fix paned limits
The intention of the ui file was to not let
the paned shrink both children down to nothing,
but using <child> for the children effectively
overrides the setting of the shrink properties.
Fix that by using child properties instead of
<child>.
2023-03-01 01:17:50 +02:00
Carlos Garnacho
512dec54d3 gdk/x11: Also grab keyboard during XDnD grabs
The drag source must handle events and messaging, this also
includes keyboard handling for accessibility and cancellation.

Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5604
2023-03-01 01:15:26 +02:00
Alexandros Theodotou
5cf5b9c7f5 Remove timeout when disposing GtkEditableLabel
Fixes: #5584
2023-03-01 01:11:46 +02:00
Matthias Clasen
c4ddf47d8f placessidebar: Make all rows ellipsize
Otherwise, we end up with a single long row
pushing the content of all the other rows
off to the left, which is much worse than
ellipsizing.

Fixes: #4710
2023-03-01 01:10:38 +02:00
Arjan Molenaar
fb36c167e1 wayland: Fix button mask for button 2 and 3
Wayland and GTK order mouse button 2 and 3 differently.

Fixes #5561.
2023-03-01 01:09:24 +02:00
Arjan Molenaar
d221d314b5 Allow all mouse buttons to be used for the drawingarea demo
So we can test if the drag gesture works with all mouse buttons.
2023-03-01 01:09:10 +02:00
Matthias Clasen
069fef6f99 passwordentry: Fix an asymmetry
When connecting a signal in realize,
we should disconnect in unrealize.

Fixes: #5285
2023-03-01 01:06:14 +02:00
Matthias Clasen
5caecf16ac tooltip: Prevent too-wide tooltip windows
Set the label to expand, so it actually fills
the width that we allocated for it, instead
of shrinking back to the minimum width for
its height.

Fixes: #5521
2023-03-01 01:05:45 +02:00
Matthias Clasen
8203b69e74 tooltip: Don't play games with max-width-chars
Setting max-width-chars to the number of characters
in the string works ok only as long as the average
char width we get from Pango matches reality. Sadly
that seems not always the case, and this code was
causing short Chinese tooltips to always be broken
into two lines.

Fixes: #4470
2023-03-01 01:05:27 +02:00
Sophie Herold
189c1dd306 scrolledWindow: Propagate event for no scrolling 2023-03-01 01:00:06 +02:00
Christian Hergert
a4512a4c95 istring: fix istring_prepend() on malloc transition
When transitioning from internal to malloc, the strings were placed in
the wrong order to g_strconcat(). This fixes an issue with undo where
if you hit the boundary in just the right way, your undo stack will do
unexpected things.

Fixes #5506
2023-03-01 00:53:03 +02:00
Corey Berla
ce01d7d7a3 gtkmodelbutton: Ensure that accel label is always aligned to end
When the model button just has a text label and accel text,
the button fills and the accel label is implicitly aigned to end.
When there's also a icon, even though it's not shown (because
icons are only shown if there's no text), the button doesn't fill
and the accel ends up not aligned (assuming one of the other buttons
is longer). Ensure that the accel label is aligned to the end.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5504
2023-03-01 00:51:30 +02:00
Barnabás Pőcze
a4758db75e a11y: Use fallback logic when GApplication has no DBus object path
Use the fallback logic to generate the base path for the GtkAtSpiRoot
if the GApplication has no DBus object path to guarantee that
the base path will not stay NULL.
2023-03-01 00:51:00 +02:00
Barnabás Pőcze
6a991cf05a a11y: Check if path is NULL when removing from cache
`gtk_at_spi_cache_add_context()` checks if the GtkAtSpiContext's path
is NULL before inserting the context object into the hash table.
Do the same in `gtk_at_spi_cache_remove_context()` to avoid a NULL
pointer dereference in `g_str_hash()` during the hash table lookup
if a context with NULL path is removed. That can happen when the
GtkAtSpiRoot::base_path is NULL, which, in turn, can happen if
`g_application_get_dbus_object_path()` returns NULL.

  ==394047==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7fd1966f8b84 bp 0x7fff11e3ded0 sp 0x7fff11e3de58 T0)
  ==394047==The signal is caused by a READ memory access.
  ==394047==Hint: address points to the zero page.
      #0 0x7fd1966f8b84 in g_str_hash (/usr/lib/libglib-2.0.so.0+0x37b84)
      #1 0x7fd1966f9c09 in g_hash_table_contains (/usr/lib/libglib-2.0.so.0+0x38c09)
      #2 0x7fd196062c10 in gtk_at_spi_cache_remove_context ../gtk/a11y/gtkatspicache.c:447
      #3 0x7fd19606e0a9 in gtk_at_spi_root_unregister ../gtk/a11y/gtkatspiroot.c:653
      #4 0x7fd196067f58 in gtk_at_spi_context_unrealize ../gtk/a11y/gtkatspicontext.c:1559
      #5 0x7fd195ced97f in gtk_at_context_unrealize ../gtk/gtkatcontext.c:668
      #6 0x7fd195f5576e in gtk_widget_unroot_at_context ../gtk/gtkwidget.c:2399
      #7 0x7fd195f55bd2 in gtk_widget_unroot ../gtk/gtkwidget.c:2499
      ...
2023-03-01 00:50:49 +02:00
robxnano
0c83807a5a filechoosernativewin32: Set default extension 2023-03-01 00:49:42 +02:00
Corey Berla
254eca269a calendar: Set marked days immediately
The marked days are set only as part of gtk_calendar_select_day().
This is insufficient, especially because the day-selected signal
is emitted after the marked days are set in gtk_calendar_select_day().
2023-03-01 00:48:05 +02:00
Corey Berla
a59bf6e3cc calendar: Only apply the marked_day to the current month
The marked day gets applied to the current month, and either the previous
or subsequent month if they are visible within the current month.
This doesn't make any sense and likely was an accidental regression
in a6f9052cf1.  Clarify the docs.
2023-03-01 00:47:36 +02:00
Corey Berla
b06294d5d7 calendar: Add css style for marked days
As part of a6f9052cf1, marked days lost
their style, essentially making that function worthless.  Previously,
they were simply bolded, but that doesn't give them proper justice.
2023-03-01 00:47:06 +02:00
Arjan Molenaar
3f9b7dd863 macos: Command should not come from gettext
Instead, just provide the right character.

See also
https://gitlab.gnome.org/GNOME/gtk/-/blob/main/gtk/gtkaccelgroup.c#L916.
2023-03-01 00:45:27 +02:00
Arjan Molenaar
3b36459630 macos: Use Command key symbol for meta
Show the Apple Command symbol ⌘ as keyboard shortcut for the Meta key on macos,
similar to GtkAccelGroup.
2023-03-01 00:45:09 +02:00
Corey Berla
5c4f3a1943 gtkdroptarget: Notify value property on local drag
The value property is only getting notified when it's unset
or when it's set from gdk_drop_real_value_async().  Make sure
to always notify :value when its changed
2023-03-01 00:39:41 +02:00
Lukáš Tyrychtr
b53bd5b670 Don't present GTK class names to assistive technologies even as a fallback
A screen reader user is not interested in GTK internals, for example,
he does not care whether a button is an image button or not,
and a screen reader will report the fact that it is a button anyway.
Same applies for GtkEntry widgets, for example.

This actually is sufficient to fix gnome-control-center#2244.
And, according to the discussion in #5145, it should be fine.
2023-03-01 00:36:07 +02:00
Matthias Clasen
6257243574 Merge branch 'revert-font-chooser-filter-4-8' into 'gtk-4-8'
Revert "Fix an assertion in GtkFontChooserWidget when setting a filter."

See merge request GNOME/gtk!5568
2023-02-28 13:00:35 +00:00
Akira TAGOH
e18e99209e Revert "Fix an assertion in GtkFontChooserWidget when setting a filter."
Actually this filter hasn't ported to 4.8 branch and
the merge request GNOME/gtk!5514 has been accidentally merged.

This reverts commit f4768f16c8.
2023-02-28 21:42:00 +09:00
Matthias Clasen
8e9e32abaf Merge branch 'fix-font-chooser-filter-4-8' into 'gtk-4-8'
Fix an assertion in GtkFontChooserWidget when setting a filter.

See merge request GNOME/gtk!5514
2023-02-15 03:54:38 +00:00
Akira TAGOH
f4768f16c8 Fix an assertion in GtkFontChooserWidget when setting a filter.
(cherry-picked from commit 4532c3020b)
2023-02-14 15:12:52 +09:00
Matthias Clasen
790b9d59ad Merge branch 'cherry-pick-824e9833' into 'gtk-4-8'
[4.8.x] gdk/x11: Reset all scroll valuators on enter

See merge request GNOME/gtk!5480
2023-02-07 02:34:50 +00:00
Carlos Garnacho
37843ec941 gdk/x11: Reset all scroll valuators on enter
We no longer need to make much distinction between multiple logical
devices, plus it breaks esp. with the Xwayland input device distribution.
Just iterate across all devices and reset their scroll valuators.

Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4160


(cherry picked from commit 824e983372)
2023-02-04 11:37:01 -05:00
Sabri Ünal
1ef03e6eb8 Update Turkish translation 2023-01-15 22:43:19 +00:00
Matteo Percivaldi
1ff3a26c96 gtkcssanimatedstyle: Fix return of new_advance()
This was causing animation and transition to stop randomly and reset
their state to initial state.

This issue has existed since commit
7b68bdb831.

Closes #4426
2023-01-13 15:15:10 -05:00
Matthias Clasen
92ebf8ab13 fontchooser: Drop a few errant translations
No point in translating these properties, they
are not strings.

Fixes: #5146
2023-01-12 18:38:44 -05:00
Matthias Clasen
7169d346ec build: Use a stable harfbuzz
We don't need the latest harfbuzz.
Stick to 4.0 for now.
2023-01-12 18:37:50 -05:00
Matthias Clasen
162b061ad2 Merge branch 'cherry-pick-e7f798dc' into 'gtk-4-8'
[4.8 cherry-pick] gdk/surface: Handle clicks outside client surfaces

See merge request GNOME/gtk!5373
2023-01-11 18:14:03 +00:00
Emin Tufan Çetin
83284e6a9d Update Turkish translation 2023-01-11 06:59:32 +00:00
Sabri Ünal
4a38d5d1d5 Update Turkish translation 2023-01-11 05:31:28 +00:00
Matthias Clasen
a87b3f63ec Merge branch 'cherry-pick-b4db4893' into 'gtk-4-8'
Fix building `tests/mountoperation.c` on Windows (backport MR!5126 to gtk-4-8)

See merge request GNOME/gtk!5408
2023-01-09 10:58:46 +00:00
Matthias Clasen
66091f8139 Merge branch 'fix-windows-build-testmountoperation' into 'main'
tests/testmountoperation.c: Fix build on Windows

See merge request GNOME/gtk!5126

(cherry picked from commit b4db48935d)

1a5a65ac tests/testmountoperation.c: Fix build on Windows
2023-01-09 05:08:56 -05:00
Matthias Clasen
46eebcb2ac Merge branch 'cherry-pick-188f9269' into 'gtk-4-8'
Cherrypick to 4.8: listitemwidget: Setup factory only once the widget is visible

See merge request GNOME/gtk!5378
2023-01-07 15:06:05 +00:00
Nart Tlisha
1e27563425 Update Abkhazian translation 2023-01-05 12:23:44 +00:00
Benjamin Otte
2aaefd9ff6 Merge branch 'wip/corey/list-item-visible' into 'main'
listitemwidget: Setup factory only once the widget is visible

See merge request GNOME/gtk!5374

(cherry picked from commit 188f9269b7)

7ad693f8 gtkcolumnviewcolumn: Only create cells when the column is visible
2022-12-30 19:45:00 -05:00
Carlos Garnacho
826030dcc2 gdk/surface: Handle clicks outside client surfaces
The owner_events=TRUE grab makes GDK on X11 see events happening
outside every client window as received on the grab window.
Additionally check that the pointer is inside the grab window
(i.e. it received GDK_CROSSING_NORMAL crossing events for the
core pointer) in order to handle clicks happening outside client
windows.

These new paths are expected to be a no-op on Wayland, and to
also work for touchscreen input on X11, due to emulated pointer
events.
2022-12-29 13:21:07 +11:00
Matthias Clasen
748b68d58b Fix typo in NEWS 2022-12-22 23:05:37 -05:00
Matthias Clasen
74ed1b9e35 Post-release version bump 2022-12-22 14:12:14 -05:00
43 changed files with 4807 additions and 649 deletions

5
NEWS
View File

@@ -1,4 +1,7 @@
Overview of Changes in 4.8.3, 12-22-2022
Overview of Changes in 4.8.4, xx-xx-xxxx
========================================
Overview of Changes in 4.8.3, 22-12-2022
========================================
* GtkText:

View File

@@ -362,7 +362,7 @@ do_drawingarea (GtkWidget *do_widget)
G_CALLBACK (scribble_resize), NULL);
drag = gtk_gesture_drag_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (drag), GDK_BUTTON_PRIMARY);
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (drag), 0);
gtk_widget_add_controller (da, GTK_EVENT_CONTROLLER (drag));
g_signal_connect (drag, "drag-begin", G_CALLBACK (drag_begin), da);

View File

@@ -2789,9 +2789,10 @@ check_autohide (GdkEvent *event)
{
GdkDisplay *display;
GdkDevice *device;
GdkSurface *grab_surface;
GdkSurface *grab_surface, *event_surface;
GdkEventType evtype = gdk_event_get_event_type (event);
switch ((guint) gdk_event_get_event_type (event))
switch ((guint) evtype)
{
case GDK_BUTTON_PRESS:
#if 0
@@ -2810,13 +2811,15 @@ check_autohide (GdkEvent *event)
device = gdk_event_get_device (event);
if (gdk_device_grab_info (display, device, &grab_surface, NULL))
{
GdkSurface *event_surface;
event_surface = gdk_event_get_surface (event);
if (event_surface->autohide &&
!event_surface->has_pointer)
event_surface = NULL;
if (grab_surface != event_surface &&
grab_surface != event_surface->parent &&
grab_surface->autohide)
if (grab_surface->autohide &&
(!event_surface ||
(grab_surface != event_surface &&
grab_surface != event_surface->parent)))
{
GdkSurface *surface = grab_surface;
@@ -2831,6 +2834,13 @@ check_autohide (GdkEvent *event)
}
}
break;
case GDK_ENTER_NOTIFY:
case GDK_LEAVE_NOTIFY:
event_surface = gdk_event_get_surface (event);
if (event_surface->autohide &&
gdk_crossing_event_get_mode (event) == GDK_CROSSING_NORMAL)
event_surface->has_pointer = evtype == GDK_ENTER_NOTIFY;
break;
default:;
}

View File

@@ -77,6 +77,7 @@ struct _GdkSurface
guint autohide : 1;
guint shortcuts_inhibited : 1;
guint request_motion : 1;
guint has_pointer : 1;
guint request_motion_id;

View File

@@ -1720,7 +1720,18 @@ pointer_handle_button (void *data,
gdk_wayland_seat_set_frame_event (seat, event);
modifier = (GDK_BUTTON1_MASK << (button - BUTTON_BASE - 1)) & ALL_BUTTONS_MASK;
switch (button)
{
case BTN_RIGHT:
modifier = GDK_BUTTON3_MASK;
break;
case BTN_MIDDLE:
modifier = GDK_BUTTON2_MASK;
break;
default:
modifier = (GDK_BUTTON1_MASK << (button - BUTTON_BASE - 1)) & ALL_BUTTONS_MASK;
break;
}
if (state)
seat->pointer_info.button_modifiers |= modifier;

View File

@@ -2064,19 +2064,10 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
xev->detail != XINotifyInferior && xev->mode != XINotifyPassiveUngrab &&
GDK_IS_TOPLEVEL (surface))
{
if (gdk_x11_device_xi2_get_device_type ((GdkX11DeviceXI2 *) device) != GDK_X11_DEVICE_TYPE_LOGICAL)
_gdk_device_xi2_reset_scroll_valuators (GDK_X11_DEVICE_XI2 (source_device));
else
{
GList *physical_devices, *l;
GList *l;
physical_devices = gdk_device_list_physical_devices (source_device);
for (l = physical_devices; l; l = l->next)
_gdk_device_xi2_reset_scroll_valuators (GDK_X11_DEVICE_XI2 (l->data));
g_list_free (physical_devices);
}
for (l = device_manager->devices; l; l = l->next)
_gdk_device_xi2_reset_scroll_valuators (GDK_X11_DEVICE_XI2 (l->data));
}
event = gdk_crossing_event_new (ev->evtype == XI_Enter

View File

@@ -1912,7 +1912,7 @@ drag_grab (GdkDrag *drag)
root = GDK_DISPLAY_XROOTWIN (display);
seat = gdk_device_get_seat (gdk_drag_get_device (drag));
capabilities = GDK_SEAT_CAPABILITY_ALL_POINTING;
capabilities = GDK_SEAT_CAPABILITY_ALL_POINTING | GDK_SEAT_CAPABILITY_KEYBOARD;
cursor = gdk_drag_get_cursor (drag, x11_drag->current_action);
g_set_object (&x11_drag->cursor, cursor);

View File

@@ -444,6 +444,9 @@ gtk_at_spi_cache_remove_context (GtkAtSpiCache *self,
g_return_if_fail (GTK_IS_AT_SPI_CONTEXT (context));
const char *path = gtk_at_spi_context_get_context_path (context);
if (path == NULL)
return;
if (!g_hash_table_contains (self->contexts_by_path, path))
return;

View File

@@ -690,7 +690,8 @@ gtk_at_spi_root_constructed (GObject *gobject)
/* No need to validate the path */
self->base_path = g_strconcat (app_path, "/a11y", NULL);
}
else
if (self->base_path == NULL)
{
const char *program_name = g_get_prgname ();

View File

@@ -902,31 +902,6 @@ gtk_at_context_get_accessible_relation (GtkATContext *self,
return gtk_accessible_attribute_set_get_value (self->relations, relation);
}
static gboolean
is_structural_role (GtkAccessibleRole role)
{
/* Keep the switch small while avoiding the compiler warning for
* unhandled enumeration values
*/
switch ((int) role)
{
case GTK_ACCESSIBLE_ROLE_FORM:
case GTK_ACCESSIBLE_ROLE_GROUP:
case GTK_ACCESSIBLE_ROLE_GENERIC:
case GTK_ACCESSIBLE_ROLE_LANDMARK:
case GTK_ACCESSIBLE_ROLE_LIST_ITEM:
case GTK_ACCESSIBLE_ROLE_REGION:
case GTK_ACCESSIBLE_ROLE_SEARCH:
case GTK_ACCESSIBLE_ROLE_SEPARATOR:
return TRUE;
default:
break;
}
return FALSE;
}
/* See the WAI-ARIA § 4.3, "Accessible Name and Description Computation" */
static void
gtk_at_context_get_name_accumulate (GtkATContext *self,
@@ -998,13 +973,6 @@ gtk_at_context_get_name_accumulate (GtkATContext *self,
return;
}
/* This fallback is in place only for unlabelled elements */
if (names->len != 0)
return;
/* Ignore structural elements, namely: generic containers */
if (self->accessible != NULL && !is_structural_role (role))
g_ptr_array_add (names, (char *)G_OBJECT_TYPE_NAME (self->accessible));
}
static void

View File

@@ -1608,6 +1608,7 @@ create_subparser (GObject *object,
subparser->object = object;
subparser->child = child;
subparser->tagname = g_strdup (element_name);
subparser->level = 1;
subparser->start = element_name;
subparser->parser = g_memdup2 (parser, sizeof (GtkBuildableParser));
subparser->data = user_data;
@@ -1638,6 +1639,8 @@ subparser_start (GtkBuildableParseContext *context,
if (subparser->start)
{
subparser->level++;
if (subparser->parser->start_element)
subparser->parser->start_element (context,
element_name, names, values,
@@ -1653,6 +1656,8 @@ subparser_end (GtkBuildableParseContext *context,
ParserData *data,
GError **error)
{
data->subparser->level--;
if (data->subparser->parser->end_element)
data->subparser->parser->end_element (context, element_name,
data->subparser->data, error);
@@ -1660,9 +1665,11 @@ subparser_end (GtkBuildableParseContext *context,
if (*error)
return;
if (strcmp (data->subparser->start, element_name) != 0)
if (data->subparser->level > 0)
return;
g_assert (strcmp (data->subparser->start, element_name) == 0);
gtk_buildable_custom_tag_end (GTK_BUILDABLE (data->subparser->object),
data->builder,
data->subparser->child,

View File

@@ -165,6 +165,7 @@ struct _GtkBuildableParseContext {
typedef struct {
GtkBuildableParser *parser;
char *tagname;
int level;
const char *start;
gpointer data;
GObject *object;

View File

@@ -969,10 +969,6 @@ gtk_button_set_icon_name (GtkButton *button,
gtk_image_set_from_icon_name (GTK_IMAGE (priv->child), icon_name);
}
gtk_accessible_update_relation (GTK_ACCESSIBLE (button),
GTK_ACCESSIBLE_RELATION_LABELLED_BY, priv->child, NULL,
-1);
gtk_button_set_child_type (button, ICON_CHILD);
g_object_notify_by_pspec (G_OBJECT (button), props[PROP_ICON_NAME]);
}

View File

@@ -1438,7 +1438,8 @@ gtk_calendar_select_day (GtkCalendar *calendar,
else
gtk_widget_remove_css_class (label, "other-month");
if (calendar->marked_date[day-1])
if (calendar->marked_date[day-1] &&
calendar->day_month[y][x] == MONTH_CURRENT)
gtk_widget_set_state_flags (label, GTK_STATE_FLAG_CHECKED, FALSE);
else
gtk_widget_unset_state_flags (label, GTK_STATE_FLAG_CHECKED);
@@ -1524,6 +1525,14 @@ gtk_calendar_clear_marks (GtkCalendar *calendar)
g_return_if_fail (GTK_IS_CALENDAR (calendar));
for (int y = 0; y < 6; y ++)
for (int x = 0; x < 7; x ++)
{
GtkWidget *label = calendar->day_number_labels[y][x];
gtk_widget_unset_state_flags (label, GTK_STATE_FLAG_CHECKED);
}
for (day = 0; day < 31; day++)
{
calendar->marked_date[day] = FALSE;
@@ -1533,12 +1542,33 @@ gtk_calendar_clear_marks (GtkCalendar *calendar)
calendar_queue_refresh (calendar);
}
static void
update_mark_state (GtkCalendar *calendar,
guint day,
gboolean mark)
{
for (int y = 0; y < 6; y ++)
for (int x = 0; x < 7; x ++)
{
GtkWidget *label = calendar->day_number_labels[y][x];
if (day != calendar->day[y][x])
continue;
if (mark && calendar->marked_date[day-1] &&
calendar->day_month[y][x] == MONTH_CURRENT)
gtk_widget_set_state_flags (label, GTK_STATE_FLAG_CHECKED, FALSE);
else
gtk_widget_unset_state_flags (label, GTK_STATE_FLAG_CHECKED);
}
}
/**
* gtk_calendar_mark_day:
* @calendar: a `GtkCalendar`
* @day: the day number to mark between 1 and 31.
*
* Places a visual marker on a particular day.
* Places a visual marker on a particular day of the current month.
*/
void
gtk_calendar_mark_day (GtkCalendar *calendar,
@@ -1550,6 +1580,7 @@ gtk_calendar_mark_day (GtkCalendar *calendar,
{
calendar->marked_date[day - 1] = TRUE;
calendar->num_marked_dates++;
update_mark_state (calendar, day, TRUE);
calendar_invalidate_day_num (calendar, day);
}
}
@@ -1592,6 +1623,7 @@ gtk_calendar_unmark_day (GtkCalendar *calendar,
{
calendar->marked_date[day - 1] = FALSE;
calendar->num_marked_dates--;
update_mark_state (calendar, day, FALSE);
calendar_invalidate_day_num (calendar, day);
}
}

View File

@@ -65,10 +65,11 @@ gtk_column_list_item_factory_setup (GtkListItemFactory *factory,
{
GtkColumnViewColumn *column = g_list_model_get_item (columns, i);
gtk_column_list_item_factory_add_column (self,
widget,
column,
FALSE);
if (gtk_column_view_column_get_visible (column))
gtk_column_list_item_factory_add_column (self,
widget,
column,
FALSE);
g_object_unref (column);
}

View File

@@ -551,7 +551,8 @@ gtk_column_view_column_remove_header (GtkColumnViewColumn *self)
static void
gtk_column_view_column_ensure_cells (GtkColumnViewColumn *self)
{
if (self->view && gtk_widget_get_root (GTK_WIDGET (self->view)))
if (self->view && gtk_widget_get_root (GTK_WIDGET (self->view)) &&
gtk_column_view_column_get_visible (self))
gtk_column_view_column_create_cells (self);
else
gtk_column_view_column_remove_cells (self);
@@ -787,8 +788,6 @@ void
gtk_column_view_column_set_visible (GtkColumnViewColumn *self,
gboolean visible)
{
GtkColumnViewCell *cell;
g_return_if_fail (GTK_IS_COLUMN_VIEW_COLUMN (self));
if (self->visible == visible)
@@ -802,10 +801,7 @@ gtk_column_view_column_set_visible (GtkColumnViewColumn *self,
if (self->header)
gtk_widget_set_visible (GTK_WIDGET (self->header), visible);
for (cell = self->first_cell; cell; cell = gtk_column_view_cell_get_next (cell))
{
gtk_widget_set_visible (GTK_WIDGET (cell), visible);
}
gtk_column_view_column_ensure_cells (self);
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_VISIBLE]);
}

View File

@@ -250,6 +250,18 @@ click_released_cb (GtkGestureClick *gesture,
show_menu (self, x, y);
}
static void
click_pressed_cb (GtkGestureClick *gesture,
int n_press,
double x,
double y,
GtkColumnView *self)
{
/* Claim the state here to prevent propagation, the event controllers in
* GtkColumView have already been handled in the CAPTURE phase */
gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED);
}
static void
gtk_column_view_title_init (GtkColumnViewTitle *self)
{
@@ -272,6 +284,7 @@ gtk_column_view_title_init (GtkColumnViewTitle *self)
gesture = gtk_gesture_click_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), 0);
g_signal_connect (gesture, "released", G_CALLBACK (click_released_cb), self);
g_signal_connect (gesture, "pressed", G_CALLBACK (click_pressed_cb), self);
gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture));
}

View File

@@ -362,7 +362,6 @@ gtk_combo_box_size_allocate (GtkWidget *widget,
{
GtkComboBox *combo_box = GTK_COMBO_BOX (widget);
GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box);
int menu_width;
gtk_widget_size_allocate (priv->box,
&(GtkAllocation) {
@@ -370,17 +369,8 @@ gtk_combo_box_size_allocate (GtkWidget *widget,
width, height
}, baseline);
gtk_widget_set_size_request (priv->popup_widget, -1, -1);
if (priv->popup_fixed_width)
gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1,
&menu_width, NULL, NULL, NULL);
else
gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1,
NULL, &menu_width, NULL, NULL);
gtk_widget_set_size_request (priv->popup_widget,
MAX (width, menu_width), -1);
gtk_widget_set_size_request (priv->popup_widget, width, -1);
gtk_widget_queue_resize (priv->popup_widget);
gtk_popover_present (GTK_POPOVER (priv->popup_widget));
}

View File

@@ -937,9 +937,12 @@ gtk_css_animated_style_new_advance (GtkCssAnimatedStyle *source,
gtk_internal_return_val_if_fail (GTK_IS_CSS_ANIMATED_STYLE (source), NULL);
gtk_internal_return_val_if_fail (GTK_IS_CSS_STYLE (base_style), NULL);
if (timestamp == 0 || timestamp == source->current_time)
if (timestamp == 0)
return g_object_ref (source->style);
if (timestamp == source->current_time)
return g_object_ref (GTK_CSS_STYLE (source));
gtk_internal_return_val_if_fail (timestamp > source->current_time, NULL);
animations = NULL;

View File

@@ -292,9 +292,13 @@ gtk_drop_target_load_local (GtkDropTarget *self,
if (gdk_content_provider_get_value (gdk_drag_get_content (drag),
&self->value,
NULL))
return TRUE;
{
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_VALUE]);
return TRUE;
}
g_value_unset (&self->value);
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_VALUE]);
return FALSE;
}

View File

@@ -72,6 +72,8 @@ struct _GtkEditableLabel
GtkWidget *stack;
GtkWidget *label;
GtkWidget *entry;
guint stop_editing_soon_id;
};
struct _GtkEditableLabelClass
@@ -196,10 +198,12 @@ static gboolean
stop_editing_soon (gpointer data)
{
GtkEventController *controller = data;
GtkWidget *widget = gtk_event_controller_get_widget (controller);
GtkEditableLabel *self = GTK_EDITABLE_LABEL (gtk_event_controller_get_widget (controller));
if (!gtk_event_controller_focus_contains_focus (GTK_EVENT_CONTROLLER_FOCUS (controller)))
gtk_editable_label_stop_editing (GTK_EDITABLE_LABEL (widget), TRUE);
gtk_editable_label_stop_editing (self, TRUE);
self->stop_editing_soon_id = 0;
return FALSE;
}
@@ -208,7 +212,8 @@ static void
gtk_editable_label_focus_out (GtkEventController *controller,
GtkEditableLabel *self)
{
g_timeout_add (100, stop_editing_soon, controller);
if (self->stop_editing_soon_id == 0)
self->stop_editing_soon_id = g_timeout_add (100, stop_editing_soon, controller);
}
static void
@@ -361,6 +366,8 @@ gtk_editable_label_dispose (GObject *object)
self->entry = NULL;
self->label = NULL;
g_clear_handle_id (&self->stop_editing_soon_id, g_source_remove);
G_OBJECT_CLASS (gtk_editable_label_parent_class)->dispose (object);
}

View File

@@ -600,6 +600,10 @@ filechooser_win32_thread (gpointer _data)
if (FAILED (hr))
g_warning_hr ("Can't set file types", hr);
hr = IFileDialog_SetDefaultExtension (pfd, L"");
if (FAILED (hr))
g_warning_hr ("Can't set default extension", hr);
if (data->self->current_filter)
{
GListModel *filters;

View File

@@ -133,7 +133,7 @@ istring_prepend (IString *str,
if (!istring_is_inline (str))
old = str->u.str;
str->u.str = g_strconcat (istring_str (str), istring_str (other), NULL);
str->u.str = g_strconcat (istring_str (other), istring_str (str), NULL);
str->n_bytes += other->n_bytes;
str->n_chars += other->n_chars;

View File

@@ -812,6 +812,8 @@ update_accel (GtkModelButton *self,
"css-name", "accelerator",
NULL);
gtk_widget_insert_before (self->accel_label, GTK_WIDGET (self), NULL);
gtk_widget_set_hexpand (self->accel_label, TRUE),
gtk_widget_set_halign (self->accel_label, GTK_ALIGN_END);
}
gtk_accelerator_parse (accel, &key, &mods);

View File

@@ -4034,9 +4034,6 @@ gtk_notebook_insert_notebook_page (GtkNotebook *notebook,
g_signal_connect (controller, "enter", G_CALLBACK (gtk_notebook_tab_drop_enter), page);
g_signal_connect (controller, "leave", G_CALLBACK (gtk_notebook_tab_drop_leave), page);
gtk_widget_add_controller (page->tab_widget, controller);
gtk_accessible_update_property (GTK_ACCESSIBLE (page->tab_widget),
GTK_ACCESSIBLE_PROPERTY_LABEL, _("Tab"),
-1);
page->expand = FALSE;
page->fill = TRUE;
@@ -4338,6 +4335,11 @@ gtk_notebook_update_labels (GtkNotebook *notebook)
text = page->tab_text;
else
text = string;
gtk_accessible_update_property (GTK_ACCESSIBLE (page->tab_widget),
GTK_ACCESSIBLE_PROPERTY_LABEL, text,
-1);
if (notebook->show_tabs)
{
if (page->default_tab)

View File

@@ -253,14 +253,25 @@ gtk_password_entry_realize (GtkWidget *widget)
}
}
static void
gtk_password_entry_unrealize (GtkWidget *widget)
{
GtkPasswordEntry *entry = GTK_PASSWORD_ENTRY (widget);
if (entry->keyboard)
{
g_signal_handlers_disconnect_by_func (entry->keyboard, caps_lock_state_changed, entry);
entry->keyboard = NULL;
}
GTK_WIDGET_CLASS (gtk_password_entry_parent_class)->unrealize (widget);
}
static void
gtk_password_entry_dispose (GObject *object)
{
GtkPasswordEntry *entry = GTK_PASSWORD_ENTRY (object);
if (entry->keyboard)
g_signal_handlers_disconnect_by_func (entry->keyboard, caps_lock_state_changed, entry);
if (entry->entry)
gtk_editable_finish_delegate (GTK_EDITABLE (entry));
@@ -451,6 +462,7 @@ gtk_password_entry_class_init (GtkPasswordEntryClass *klass)
object_class->set_property = gtk_password_entry_set_property;
widget_class->realize = gtk_password_entry_realize;
widget_class->unrealize = gtk_password_entry_unrealize;
widget_class->measure = gtk_password_entry_measure;
widget_class->size_allocate = gtk_password_entry_size_allocate;
widget_class->mnemonic_activate = gtk_password_entry_mnemonic_activate;

View File

@@ -1239,6 +1239,10 @@ captured_scroll_cb (GtkEventControllerScroll *scroll,
gtk_scrolled_window_cancel_deceleration (scrolled_window);
if (!may_hscroll (scrolled_window) &&
!may_vscroll (scrolled_window))
return GDK_EVENT_PROPAGATE;
if (priv->smooth_scroll)
{
scrolled_window_scroll (scrolled_window, delta_x, delta_y, scroll);
@@ -1429,6 +1433,10 @@ scroll_controller_scroll (GtkEventControllerScroll *scroll,
GtkScrolledWindowPrivate *priv =
gtk_scrolled_window_get_instance_private (scrolled_window);
if (!may_hscroll (scrolled_window) &&
!may_vscroll (scrolled_window))
return GDK_EVENT_PROPAGATE;
if (!priv->smooth_scroll)
scrolled_window_scroll (scrolled_window, delta_x, delta_y, scroll);

View File

@@ -144,7 +144,11 @@ get_labels (guint key, GdkModifierType modifier, guint *n_mods)
if (modifier & GDK_HYPER_MASK)
labels[i++] = C_("keyboard label", "Hyper");
if (modifier & GDK_META_MASK)
#ifndef GDK_WINDOWING_MACOS
labels[i++] = C_("keyboard label", "Meta");
#else
labels[i++] = "";
#endif
*n_mods = i;

View File

@@ -278,11 +278,6 @@ gtk_sidebar_row_set_property (GObject *object,
case PROP_SECTION_TYPE:
self->section_type = g_value_get_enum (value);
if (self->section_type == GTK_PLACES_SECTION_COMPUTER ||
self->section_type == GTK_PLACES_SECTION_OTHER_LOCATIONS)
gtk_label_set_ellipsize (GTK_LABEL (self->label_widget), PANGO_ELLIPSIZE_NONE);
else
gtk_label_set_ellipsize (GTK_LABEL (self->label_widget), PANGO_ELLIPSIZE_END);
break;
case PROP_PLACE_TYPE:

View File

@@ -5332,7 +5332,7 @@ gtk_text_buffer_get_run_attributes (GtkTextBuffer *buffer,
GdkRGBA *rgba;
char *value;
g_object_get (tag, "foreground", &rgba, NULL);
g_object_get (tag, "foreground-rgba", &rgba, NULL);
value = g_strdup_printf ("%u,%u,%u",
(guint) rgba->red * 65535,
(guint) rgba->green * 65535,

View File

@@ -401,27 +401,6 @@ gtk_tooltip_window_new (void)
return g_object_new (GTK_TYPE_TOOLTIP_WINDOW, NULL);
}
static void
update_label_width (GtkLabel *label)
{
const char *text;
text = gtk_label_get_text (label);
if (strchr (text, '\n'))
{
gtk_label_set_wrap (label, FALSE);
}
else
{
int len;
len = g_utf8_strlen (text, -1);
gtk_label_set_max_width_chars (label, MIN (len, 50));
gtk_label_set_wrap (label, TRUE);
}
}
void
gtk_tooltip_window_set_label_markup (GtkTooltipWindow *window,
const char *markup)
@@ -429,7 +408,6 @@ gtk_tooltip_window_set_label_markup (GtkTooltipWindow *window,
if (markup != NULL)
{
gtk_label_set_markup (GTK_LABEL (window->label), markup);
update_label_width (GTK_LABEL (window->label));
gtk_widget_show (window->label);
}
else
@@ -445,7 +423,6 @@ gtk_tooltip_window_set_label_text (GtkTooltipWindow *window,
if (text != NULL)
{
gtk_label_set_text (GTK_LABEL (window->label), text);
update_label_width (GTK_LABEL (window->label));
gtk_widget_show (window->label);
}
else

View File

@@ -3854,6 +3854,29 @@ gtk_widget_adjust_size_allocation (GtkWidget *widget,
}
}
static void
gtk_widget_ensure_allocate_on_children (GtkWidget *widget)
{
GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
GtkWidget *child;
g_assert (!priv->resize_needed);
g_assert (!priv->alloc_needed);
if (!priv->alloc_needed_on_child)
return;
priv->alloc_needed_on_child = FALSE;
for (child = _gtk_widget_get_first_child (widget);
child != NULL;
child = _gtk_widget_get_next_sibling (child))
{
if (gtk_widget_should_layout (child))
gtk_widget_ensure_allocate (child);
}
}
/**
* gtk_widget_allocate:
* @widget: A `GtkWidget`
@@ -4020,56 +4043,58 @@ gtk_widget_allocate (GtkWidget *widget,
size_changed = (priv->width != adjusted.width) || (priv->height != adjusted.height);
if (!alloc_needed && !size_changed && !baseline_changed)
goto skip_allocate;
priv->width = adjusted.width;
priv->height = adjusted.height;
priv->baseline = baseline;
if (priv->layout_manager != NULL)
{
gtk_layout_manager_allocate (priv->layout_manager, widget,
priv->width,
priv->height,
baseline);
gtk_widget_ensure_allocate_on_children (widget);
}
else
else
{
GTK_WIDGET_GET_CLASS (widget)->size_allocate (widget,
priv->width,
priv->height,
baseline);
}
priv->width = adjusted.width;
priv->height = adjusted.height;
priv->baseline = baseline;
/* Size allocation is god... after consulting god, no further requests or allocations are needed */
priv->alloc_needed_on_child = FALSE;
if (priv->layout_manager != NULL)
{
gtk_layout_manager_allocate (priv->layout_manager, widget,
priv->width,
priv->height,
baseline);
}
else
{
GTK_WIDGET_GET_CLASS (widget)->size_allocate (widget,
priv->width,
priv->height,
baseline);
}
/* Size allocation is god... after consulting god, no further requests or allocations are needed */
#ifdef G_ENABLE_DEBUG
if (GTK_DISPLAY_DEBUG_CHECK (_gtk_widget_get_display (widget), GEOMETRY) &&
gtk_widget_get_resize_needed (widget))
{
g_warning ("%s %p or a child called gtk_widget_queue_resize() during size_allocate().",
gtk_widget_get_name (widget), widget);
}
if (GTK_DISPLAY_DEBUG_CHECK (_gtk_widget_get_display (widget), GEOMETRY) &&
gtk_widget_get_resize_needed (widget))
{
g_warning ("%s %p or a child called gtk_widget_queue_resize() during size_allocate().",
gtk_widget_get_name (widget), widget);
}
#endif
gtk_widget_ensure_resize (widget);
priv->alloc_needed = FALSE;
priv->alloc_needed_on_child = FALSE;
gtk_widget_ensure_resize (widget);
priv->alloc_needed = FALSE;
gtk_widget_update_paintables (widget);
gtk_widget_update_paintables (widget);
if (size_changed)
gtk_accessible_bounds_changed (GTK_ACCESSIBLE (widget));
if (size_changed)
gtk_accessible_bounds_changed (GTK_ACCESSIBLE (widget));
skip_allocate:
if (size_changed || baseline_changed)
gtk_widget_queue_draw (widget);
else if (transform_changed && priv->parent)
if (size_changed || baseline_changed)
gtk_widget_queue_draw (widget);
}
if (transform_changed && priv->parent)
gtk_widget_queue_draw (priv->parent);
out:
if (priv->alloc_needed_on_child)
gtk_widget_ensure_allocate (widget);
gtk_widget_pop_verify_invariants (widget);
}
@@ -10498,7 +10523,10 @@ gtk_widget_set_alloc_needed (GtkWidget *widget)
break;
if (GTK_IS_NATIVE (widget))
gtk_native_queue_relayout (GTK_NATIVE (widget));
{
gtk_native_queue_relayout (GTK_NATIVE (widget));
return;
}
widget = priv->parent;
if (widget == NULL)
@@ -10546,18 +10574,9 @@ gtk_widget_ensure_allocate (GtkWidget *widget)
priv->allocated_size_baseline,
gsk_transform_ref (priv->allocated_transform));
}
else if (priv->alloc_needed_on_child)
else
{
GtkWidget *child;
priv->alloc_needed_on_child = FALSE;
for (child = _gtk_widget_get_first_child (widget);
child != NULL;
child = _gtk_widget_get_next_sibling (child))
{
gtk_widget_ensure_allocate (child);
}
gtk_widget_ensure_allocate_on_children (widget);
}
}

View File

@@ -3478,6 +3478,10 @@ calendar {
@extend %selected_items;
border-radius: 3px;
}
&:checked {
background-color: gtkalpha($selected_bg_color, 0.3);
}
}
> label.day-number.other-month {

View File

@@ -14,7 +14,7 @@
<property name="shrink-start-child">0</property>
<property name="resize-start-child">0</property>
<property name="vexpand">1</property>
<child>
<property name="start-child">
<object class="GtkPlacesSidebar" id="places_sidebar">
<property name="show-other-locations">1</property>
<property name="show-trash">0</property>
@@ -25,8 +25,8 @@
<signal name="show-error-message" handler="places_sidebar_show_error_message_cb" swapped="no"/>
<signal name="show-other-locations-with-flags" handler="places_sidebar_show_other_locations_with_flags_cb" swapped="no"/>
</object>
</child>
<child>
</property>
<property name="end-child">
<object class="GtkBox">
<property name="orientation">1</property>
<child>
@@ -326,7 +326,7 @@
</object>
</child>
</object>
</child>
</property>
</object>
</child>
</object>

View File

@@ -188,7 +188,7 @@
<property name="tooltip-text" translatable="yes">Preview Font</property>
<child>
<object class="GtkEventControllerScroll">
<property name="flags" translatable="yes">horizontal</property>
<property name="flags">horizontal</property>
<signal name="scroll" handler="resize_by_scroll_cb"/>
</object>
</child>
@@ -217,7 +217,7 @@
<property name="round-digits">0</property>
<child>
<object class="GtkEventControllerScroll">
<property name="flags" translatable="yes">horizontal</property>
<property name="flags">horizontal</property>
<signal name="scroll" handler="resize_by_scroll_cb"/>
</object>
</child>

View File

@@ -25,6 +25,7 @@
<object class="GtkLabel" id="label_widget">
<property name="hexpand">1</property>
<property name="xalign">0</property>
<property name="ellipsize">end</property>
<style>
<class name="sidebar-label"/>
</style>

View File

@@ -13,7 +13,9 @@
</child>
<child>
<object class="GtkLabel" id="label">
<property name="hexpand">1</property>
<property name="wrap">1</property>
<property name="max-width-chars">50</property>
</object>
</child>
</object>

View File

@@ -1,5 +1,5 @@
project('gtk', 'c',
version: '4.8.3',
version: '4.8.4',
default_options: [
'buildtype=debugoptimized',
'warning_level=1',

4307
po/ab.po

File diff suppressed because it is too large Load Diff

619
po/cs.po

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
# Turkish translations of gtk+.
# Copyright (C) 1999-2003, 2004, 2006, 2007 Free Software Foundation, Inc.
# Copyright (C) 2008-2022 gtk+'s COPYRIGHT HOLDER
# Copyright (C) 2008-2023 gtk+'s COPYRIGHT HOLDER
# This file is distributed under the same licence as the gtk+ package.
#
# Arman Aksoy <armish@linux-sevenler.de, 2003.
@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk+\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2022-10-01 14:56+0000\n"
"POT-Creation-Date: 2023-01-02 15:10+0000\n"
"PO-Revision-Date: 2022-10-01 17:55+0300\n"
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
@@ -121,12 +121,12 @@ msgstr "Diğer uygulamalardan sürükle ve bırak desteklenmemektedir."
msgid "No compatible formats to transfer contents."
msgstr "İçerikleri aktarmak için uyumlu biçim yok."
#: gdk/gdkglcontext.c:394 gdk/x11/gdkglcontext-glx.c:604
#: gdk/gdkglcontext.c:394 gdk/x11/gdkglcontext-glx.c:610
msgid "No GL API allowed."
msgstr "İzin verilen GP API yok."
#: gdk/gdkglcontext.c:418 gdk/win32/gdkglcontext-win32-wgl.c:611
#: gdk/x11/gdkglcontext-glx.c:638
#: gdk/x11/gdkglcontext-glx.c:644
msgid "Unable to create a GL context"
msgstr "GL bağlamı oluşturulamadı"
@@ -576,7 +576,7 @@ msgid "Reading data failed at row %d"
msgstr "Veri okunurken %d. satırda hata"
#: gdk/macos/gdkmacosclipboard.c:557 gdk/wayland/gdkclipboard-wayland.c:240
#: gdk/wayland/gdkdrop-wayland.c:208 gdk/wayland/gdkprimary-wayland.c:335
#: gdk/wayland/gdkdrop-wayland.c:208 gdk/wayland/gdkprimary-wayland.c:336
#: gdk/win32/gdkdrop-win32.c:1018 gdk/win32/gdkdrop-win32.c:1063
#: gdk/x11/gdkclipboard-x11.c:805 gdk/x11/gdkdrop-x11.c:235
msgid "No compatible transfer format found"
@@ -773,15 +773,15 @@ msgstr "Pano yöneticisi seçimi depolayamadı."
msgid "Cannot store clipboard. No clipboard manager is active."
msgstr "Pano depolanamadı. Aktif pano yöneticisi yok."
#: gdk/x11/gdkglcontext-glx.c:754
#: gdk/x11/gdkglcontext-glx.c:760
msgid "No GLX configurations available"
msgstr "Kullanılabilir GLX yapılandırması yok"
#: gdk/x11/gdkglcontext-glx.c:827
#: gdk/x11/gdkglcontext-glx.c:833
msgid "No GLX configuration with required features found"
msgstr "Gerekli özellikleri olan GLX yapılandırması bulunamadı"
#: gdk/x11/gdkglcontext-glx.c:901
#: gdk/x11/gdkglcontext-glx.c:907
msgid "GLX is not supported"
msgstr "GLX desteklenmiyor"
@@ -2101,10 +2101,10 @@ msgstr "Bu adda dosya zaten var"
#: gtk/gtkfilechoosernative.c:509 gtk/gtkfilechoosernative.c:580
#: gtk/gtkfilechooserwidget.c:1210 gtk/gtkfilechooserwidget.c:5800
#: gtk/gtkmessagedialog.c:166 gtk/gtkmessagedialog.c:175
#: gtk/gtkmountoperation.c:608 gtk/gtkpagesetupunixdialog.c:283
#: gtk/gtkmountoperation.c:604 gtk/gtkpagesetupunixdialog.c:283
#: gtk/gtkprintbackend.c:637 gtk/gtkprinteroptionwidget.c:721
#: gtk/gtkprintunixdialog.c:651 gtk/gtkprintunixdialog.c:807
#: gtk/gtkwindow.c:6116 gtk/inspector/css-editor.c:248
#: gtk/gtkwindow.c:6152 gtk/inspector/css-editor.c:248
#: gtk/inspector/recorder.c:1723 gtk/ui/gtkappchooserdialog.ui:45
#: gtk/ui/gtkassistant.ui:52 gtk/ui/gtkcolorchooserdialog.ui:33
#: gtk/ui/gtkfontchooserdialog.ui:24
@@ -2195,7 +2195,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "Eğer bir öge silerseniz kalıcı olarak kaybolur."
#: gtk/gtkfilechooserwidget.c:1211 gtk/gtkfilechooserwidget.c:1827
#: gtk/gtklabel.c:5652 gtk/gtktext.c:6049 gtk/gtktextview.c:8966
#: gtk/gtklabel.c:5652 gtk/gtktext.c:6065 gtk/gtktextview.c:8966
msgid "_Delete"
msgstr "_Sil"
@@ -2490,19 +2490,19 @@ msgstr "Karakter Değişkeleri"
msgid "OpenGL context creation failed"
msgstr "OpenGL içerik oluşturulması başarısız oldu"
#: gtk/gtklabel.c:5649 gtk/gtktext.c:6037 gtk/gtktextview.c:8954
#: gtk/gtklabel.c:5649 gtk/gtktext.c:6053 gtk/gtktextview.c:8954
msgid "Cu_t"
msgstr "Ke_s"
#: gtk/gtklabel.c:5650 gtk/gtktext.c:6041 gtk/gtktextview.c:8958
#: gtk/gtklabel.c:5650 gtk/gtktext.c:6057 gtk/gtktextview.c:8958
msgid "_Copy"
msgstr "_Kopyala"
#: gtk/gtklabel.c:5651 gtk/gtktext.c:6045 gtk/gtktextview.c:8962
#: gtk/gtklabel.c:5651 gtk/gtktext.c:6061 gtk/gtktextview.c:8962
msgid "_Paste"
msgstr "_Yapıştır"
#: gtk/gtklabel.c:5657 gtk/gtktext.c:6058 gtk/gtktextview.c:8987
#: gtk/gtklabel.c:5657 gtk/gtktext.c:6074 gtk/gtktextview.c:8987
msgid "Select _All"
msgstr "_Tümünü Seç"
@@ -2612,7 +2612,7 @@ msgid "%d:%02d"
msgstr "%d.%02d"
#: gtk/gtkmessagedialog.c:158 gtk/gtkmessagedialog.c:176
#: gtk/gtkprintbackend.c:638 gtk/gtkwindow.c:6117
#: gtk/gtkprintbackend.c:638 gtk/gtkwindow.c:6153
msgid "_OK"
msgstr "_Tamam"
@@ -2624,73 +2624,73 @@ msgstr "_Hayır"
msgid "_Yes"
msgstr "_Evet"
#: gtk/gtkmountoperation.c:609
#: gtk/gtkmountoperation.c:605
msgid "Co_nnect"
msgstr "Ba_ğlan"
#: gtk/gtkmountoperation.c:675
#: gtk/gtkmountoperation.c:671
msgid "Connect As"
msgstr "Olarak Bağlan"
#: gtk/gtkmountoperation.c:684
#: gtk/gtkmountoperation.c:680
msgid "_Anonymous"
msgstr "_Anonim"
#: gtk/gtkmountoperation.c:691
#: gtk/gtkmountoperation.c:687
msgid "Registered U_ser"
msgstr "Kayıtlı K_ullanıcı"
#: gtk/gtkmountoperation.c:701
#: gtk/gtkmountoperation.c:697
msgid "_Username"
msgstr "_Kullanıcı Adı"
#: gtk/gtkmountoperation.c:706
#: gtk/gtkmountoperation.c:702
msgid "_Domain"
msgstr "_Alan"
#: gtk/gtkmountoperation.c:715
#: gtk/gtkmountoperation.c:711
msgid "Volume type"
msgstr "Birim türü"
#: gtk/gtkmountoperation.c:725
#: gtk/gtkmountoperation.c:721
msgid "_Hidden"
msgstr "_Gizli"
#: gtk/gtkmountoperation.c:728
#: gtk/gtkmountoperation.c:724
msgid "_Windows system"
msgstr "_Windows sistemi"
#: gtk/gtkmountoperation.c:731
#: gtk/gtkmountoperation.c:727
msgid "_PIM"
msgstr "_PIM"
#: gtk/gtkmountoperation.c:737
#: gtk/gtkmountoperation.c:733
msgid "_Password"
msgstr "_Parola"
#: gtk/gtkmountoperation.c:759
#: gtk/gtkmountoperation.c:755
msgid "Forget password _immediately"
msgstr "Parolayı _anında unut"
#: gtk/gtkmountoperation.c:769
#: gtk/gtkmountoperation.c:765
msgid "Remember password until you _logout"
msgstr "Parolayııkış yapana dek anımsa"
#: gtk/gtkmountoperation.c:780
#: gtk/gtkmountoperation.c:776
msgid "Remember _forever"
msgstr "_Sürekli anımsa"
#: gtk/gtkmountoperation.c:1206
#: gtk/gtkmountoperation.c:1260
#, c-format
msgid "Unknown Application (PID %d)"
msgstr "Bilinmeyen Uygulama (İşlem Kimliği %d)"
#: gtk/gtkmountoperation.c:1405
#: gtk/gtkmountoperation.c:1421
#, c-format
msgid "Unable to end process"
msgstr "İşlem sonlandırılamadı"
#: gtk/gtkmountoperation.c:1435
#: gtk/gtkmountoperation.c:1571
msgid "_End Process"
msgstr "İşlemi _Sonlandır"
@@ -2700,27 +2700,27 @@ msgid "Cannot kill process with PID %d. Operation is not implemented."
msgstr "%d işlem kimlikli süreç öldürülemiyor. İşlem gerçekleştirilemedi."
#. translators: this string is a name for the 'less' command
#: gtk/gtkmountoperation-x11.c:984
#: gtk/gtkmountoperation-x11.c:987
msgid "Terminal Pager"
msgstr "Uçbirim Sayfalayıcı"
#: gtk/gtkmountoperation-x11.c:985
#: gtk/gtkmountoperation-x11.c:988
msgid "Top Command"
msgstr "Üst Komut"
#: gtk/gtkmountoperation-x11.c:986
#: gtk/gtkmountoperation-x11.c:989
msgid "Bourne Again Shell"
msgstr "Bourne Again Kabuğu"
#: gtk/gtkmountoperation-x11.c:987
#: gtk/gtkmountoperation-x11.c:990
msgid "Bourne Shell"
msgstr "Bourne Kabuğu"
#: gtk/gtkmountoperation-x11.c:988
#: gtk/gtkmountoperation-x11.c:991
msgid "Z Shell"
msgstr "Z Kabuğu"
#: gtk/gtkmountoperation-x11.c:1085
#: gtk/gtkmountoperation-x11.c:1091
#, c-format
msgid "Cannot end process with PID %d: %s"
msgstr "%d işlem kimlikli işlem durdurulamıyor: %s"
@@ -3484,7 +3484,7 @@ msgctxt "accessibility"
msgid "Sidebar"
msgstr "Kenar Çubuğu"
#: gtk/gtktext.c:6063 gtk/gtktextview.c:8992
#: gtk/gtktext.c:6079 gtk/gtktextview.c:8992
msgid "Insert _Emoji"
msgstr "_Emoji Ekle"
@@ -3519,12 +3519,12 @@ msgctxt "volume percentage"
msgid "%d%%"
msgstr "%% %d"
#: gtk/gtkwindow.c:6104
#: gtk/gtkwindow.c:6140
#, c-format
msgid "Do you want to use GTK Inspector?"
msgstr "GTK Denetleyicisi kullanmak istiyor musunuz?"
#: gtk/gtkwindow.c:6106
#: gtk/gtkwindow.c:6142
#, c-format
msgid ""
"GTK Inspector is an interactive debugger that lets you explore and modify "
@@ -3535,7 +3535,7 @@ msgstr ""
"izin veren etkileşimli hata ayıklayıcıdır. Bunun kullanılması uygulamanın "
"kesilmesine ya da çökmesine neden olabilir."
#: gtk/gtkwindow.c:6111
#: gtk/gtkwindow.c:6147
msgid "Dont show this message again"
msgstr "Bu iletiyi yeniden gösterme"
@@ -6094,7 +6094,7 @@ msgstr "Yazı tipi adı ara"
#: gtk/ui/gtkfontchooserwidget.ui:79
msgid "Filter by"
msgstr "_Süzgeç"
msgstr "Süzgeç"
#: gtk/ui/gtkfontchooserwidget.ui:89
msgid "Monospace"

View File

@@ -2,5 +2,5 @@
directory=harfbuzz
url=https://github.com/harfbuzz/harfbuzz.git
push-url=git@github.com:harfbuzz/harfbuzz.git
revision=main
revision=4.0.0
depth=1

View File

@@ -148,11 +148,11 @@ main (int argc, char *argv[])
GPid pid;
pids = g_array_new (TRUE, FALSE, sizeof (GPid));
pid = 1000;
pid = (GPid)1000;
g_array_append_val (pids, pid);
pid = 2000;
pid = (GPid)2000;
g_array_append_val (pids, pid);
pid = 3000;
pid = (GPid)3000;
g_array_append_val (pids, pid);
g_signal_emit_by_name (op, "show-processes", "Foo\nbar", pids, choices);