[Pkg-xfce-commits] [Git][xfce-team/desktop/libxfce4ui][upstream/latest] New upstream version 4.19.3.
Unit 193 (@unit193)
gitlab at salsa.debian.org
Fri Nov 10 01:45:52 GMT 2023
Unit 193 pushed to branch upstream/latest at xfce / desktop / libxfce4ui
Commits:
ad0da535 by Unit 193 at 2023-11-09T20:35:48-05:00
New upstream version 4.19.3.
- - - - -
28 changed files:
- ChangeLog
- NEWS
- configure
- configure.ac
- docs/reference/html/XfceTitledDialog.html
- docs/reference/html/api-index-deprecated.html
- docs/reference/html/index.html
- docs/reference/html/libxfce4ui-libxfce4ui-config.html
- docs/reference/html/libxfce4ui.devhelp2
- docs/reference/html/style.css
- libxfce4kbd-private/xfce-shortcut-dialog.c
- libxfce4kbd-private/xfce-shortcuts-grabber.c
- libxfce4ui/libxfce4ui-config.h
- libxfce4ui/xfce-spawn.c
- libxfce4ui/xfce-titled-dialog.c
- libxfce4ui/xfce-titled-dialog.h
- po/da.gmo
- po/da.po
- po/el.gmo
- po/el.po
- po/libxfce4ui.pot
- po/pt_BR.gmo
- po/pt_BR.po
- xfce4-about/about-dialog-ui.h
- xfce4-about/main.c
- xfce4-about/system-info.c
- xfce4-about/system-info.h
- xfce4-about/xfce4-about-dialog.glade
Changes:
=====================================
ChangeLog
=====================================
@@ -1,3 +1,235 @@
+commit 87033dac4532b6a222c657e34c785fa4c568b9a3
+Author: Elliot <cheeseeboi at mailo.com>
+Date: Thu Oct 12 14:43:25 2023 +0000
+
+ titled-dialog: Ensure a single icon on the left when CSD is used (#92)
+
+commit 56d8fb63c05989028eebef05dff783d2db621709
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Mon Oct 9 12:12:04 2023 +0200
+
+ wayland: Reduce verbosity
+
+commit 138e2fca04820c731b8f0b36917ea15f33132db2
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Thu Oct 5 15:55:21 2023 +0200
+
+ Remove remaining uses of xfce_titled_dialog_create_action_area()
+
+ Completes: !108
+
+commit 6153be02aef821ef0a9561f811c7e49b419ad40b
+Author: Irfan Bagus <irfanbagus at gmail.com>
+Date: Tue Oct 3 13:53:26 2023 +0000
+
+ titled-dialog : Deprecate xfce_titled_dialog_create_action_area()
+
+ Optimize XfceTitledDialog action area related code.
+ xfce_titled_dialog_create_action_area() no longer needed and can be
+ deprecated. xfce_titled_dialog_repack_dialog() also not needed anymore.
+
+ Fixes: #94
+ Completes: !107
+
+commit a9ce3cf86768428b752329904ea1092ec7ac61f2
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Sun Oct 1 13:02:22 2023 +0200
+
+ titled-dialog: Ensure action area is shown when using CSD
+
+ Another necessary thing after b84f25b0. Signal disconnection avoids a
+ warning about adding widgets to the action area.
+
+ Related: !107
+
+commit 01d67a5e8cdd599fc9da8e7d53c0dee5f5b24592
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Thu Sep 28 18:05:46 2023 +0200
+
+ titled-dialog: Ensure action widget can default
+
+ Necessary after b84f25b0 for some reason, e.g. with the "add item" panel
+ dialog.
+
+ Related: !107
+
+commit b84f25b0f8ec0c3cf8b2b8eb8ddfebb097cac6dd
+Author: Irfan Bagus <irfanbagus at gmail.com>
+Date: Thu Sep 28 10:39:25 2023 +0000
+
+ Fix xfce_titled_dialog action area margin
+
+ Buttons created with xfce_titled_dialog_add_button have smaller margin.
+ xfce_titled_dialog creates its own action_area but does not create
+ action_box, and does not apply default margin settings. We can avoid
+ creating new action area and use gtk_dialog action area instead.
+
+ Fixes: #93
+
+commit 5890f873e57fe72792784a00991f773d3a10561a
+Author: Anonymous <noreply at xfce.org>
+Date: Wed Sep 13 00:45:22 2023 +0200
+
+ I18n: Update translation da (100%).
+
+ 208 translated messages.
+
+ Transifex (https://explore.transifex.com/xfce/).
+
+commit 273bfdaa2e7f5fbfd12d6b32bd03f32c4c8b5033
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Thu Sep 7 17:54:55 2023 +0200
+
+ shortcuts-grabber: Implement refcounted grabs as a set
+
+commit 4c671b3c5e8f259347e1a65ec6a39812487df3ec
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Thu Sep 7 16:32:17 2023 +0200
+
+ shortcuts-grabber: Formatting
+
+commit 04a42334285ed1a5d5cbb57a6c75f41ef151582b
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Thu Sep 7 16:26:17 2023 +0200
+
+ shortcuts-grabber: Remove dead code, useless casts and declarations
+
+commit 746c1e02ffb6a51aab2e19fd100f2586be0d16e9
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Thu Sep 7 16:15:48 2023 +0200
+
+ shortcuts-grabber: Variable renaming
+
+commit 26037503b743fe0453f3b06343b7f1b8a4ff5bd8
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Thu Sep 7 16:06:01 2023 +0200
+
+ shortcuts-grabber: Clarify keys management in _grab*() funcs
+
+ get_entries_for_keyval() and _xfce_shortcuts_grabber_grab() ensures that
+ n_keys == 0 iff keys == NULL.
+
+commit 492f50e8906b8bbe36e8629c7e73a13ad60aacf1
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Thu Sep 7 15:59:22 2023 +0200
+
+ shortcuts-grabber: Avoid duplicate code in _grab*() funcs
+
+commit a8b89e2226776e3506120659149a9ac9744a6111
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Thu Sep 7 13:49:44 2023 +0200
+
+ shortcuts-grabber: Remove constructed()
+
+ There's no reason why init() can't do what constructed() does here. This
+ also avoids forgetting to chain-up to parent in constructed(), as was
+ the case.
+
+commit 1410976b427c725a8ea9abdd4c3a0133d9d9accd
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Thu Sep 7 13:29:32 2023 +0200
+
+ shortcuts-grabber: Isolate layout-related code more clearly
+
+commit eab0fcba817b337bf2f15c0814a071dc4ffd2ecf
+Author: Elliot <cheeseeboi at mailo.com>
+Date: Sat Sep 9 11:44:16 2023 +0000
+
+ Display distribution logo in xfce4-about (Fixes #54)
+
+commit b2e1dac24e4393badbf0d9ede344f1096b5d8c82
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Wed Sep 6 13:01:31 2023 +0200
+
+ shortcuts-grabber: Fix filtering by level
+
+ a0203505 introduced a regression, see
+ https://gitlab.xfce.org/xfce/libxfce4ui/-/merge_requests/104#note_79217
+
+ It seems that a reliable way to filter by level, taking into account the
+ modifiers from gtk_accelerator_parse(), is to apply the inverse
+ transformation to gdk_keymap_get_entries_for_keyval(), i.e.
+ gdk_keymap_translate_keyboard_state(), and see if the keyval matches.
+
+ Fixes: a0203505201af43a8ccc063e536f1353b8c5daa4
+ Related: xfce4-settings#442
+
+commit c82e0123090dd822b48956f6cd90db6be1b95cae
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Wed Sep 6 12:49:55 2023 +0200
+
+ shortcuts-grabber: Simplify filtering by group
+
+ If (group0_only && n_matches > 0) then n_matches == n_keys, so we keep
+ all keys regardless of n_matches value.
+
+commit daabed0cdd7e766176d4be5a5080865b92bab04c
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Wed Sep 6 12:34:59 2023 +0200
+
+ shortcuts-grabber: Variable renaming
+
+commit a0203505201af43a8ccc063e536f1353b8c5daa4
+Author: Theo Linkspfeifer <lastonestanding at tutanota.com>
+Date: Mon Mar 13 15:12:01 2023 +0100
+
+ shortcuts-grabber: Filter grabbing by key level
+
+ The idea is to look at the "level" value from GdkKeymapKey and see if
+ there is a mismatch with the set modifiers for a shortcut.
+
+ Fixes: xfce4-settings#442
+
+commit f35d7bd8a62d903b0d19cf3f7554a8736d6cdad1
+Author: Elliot <cheeseeboi at mailo.com>
+Date: Wed Aug 9 21:06:55 2023 +0000
+
+ Detect keyboard shortcuts with only single modifier keys on key release
+
+ Fixes: #1
+
+commit c187464bf7a80a414723a7d6131e430e4cda8613
+Author: Anonymous <noreply at xfce.org>
+Date: Sun Jul 9 21:36:14 2023 +0200
+
+ I18n: Update translation pt_BR (100%).
+
+ 208 translated messages.
+
+ Transifex (https://explore.transifex.com/xfce/).
+
+commit 8194ffdd5f90fb54b6d9dd8d3542483f6e292350
+Author: Anonymous <noreply at xfce.org>
+Date: Sat Jun 3 12:45:28 2023 +0200
+
+ I18n: Update translation el (100%).
+
+ 208 translated messages.
+
+ Transifex (https://explore.transifex.com/xfce/).
+
+commit 6072fd9ed1fd3b4fbcac71b53fc53b2f8a58702a
+Author: Anonymous <noreply at xfce.org>
+Date: Fri Jun 2 12:45:20 2023 +0200
+
+ I18n: Update translation el (100%).
+
+ 208 translated messages.
+
+ Transifex (https://explore.transifex.com/xfce/).
+
+commit e63e6b39c0fb6bd1cb9158bb03cfa79fda833409
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Mon May 29 17:53:57 2023 +0200
+
+ Back to development
+
+commit 5e4b3daae5da8b0b0f2d5879281f9f607e595413
+Author: Gaël Bonithon <gael at xfce.org>
+Date: Mon May 29 17:53:13 2023 +0200
+
+ Updates for release
+
commit 1678d6082c5032a8bf9da591c7251ee8452e7250
Author: Gaël Bonithon <gael at xfce.org>
Date: Wed May 17 11:00:59 2023 +0200
=====================================
NEWS
=====================================
@@ -1,3 +1,30 @@
+4.19.3 (2023-10-14)
+======
+- titled-dialog: Ensure a single icon on the left when CSD is used (#92)
+- wayland: Reduce verbosity
+- Remove remaining uses of xfce_titled_dialog_create_action_area()
+- titled-dialog : Deprecate xfce_titled_dialog_create_action_area()
+- titled-dialog: Ensure action area is shown when using CSD
+- titled-dialog: Ensure action widget can default
+- Fix xfce_titled_dialog action area margin
+- shortcuts-grabber: Implement refcounted grabs as a set
+- shortcuts-grabber: Formatting
+- shortcuts-grabber: Remove dead code, useless casts and declarations
+- shortcuts-grabber: Variable renaming
+- shortcuts-grabber: Clarify keys management in _grab*() funcs
+- shortcuts-grabber: Avoid duplicate code in _grab*() funcs
+- shortcuts-grabber: Remove constructed()
+- shortcuts-grabber: Isolate layout-related code more clearly
+- Display distribution logo in xfce4-about (Fixes #54)
+- shortcuts-grabber: Fix filtering by level
+- shortcuts-grabber: Simplify filtering by group
+- shortcuts-grabber: Variable renaming
+- shortcuts-grabber: Filter grabbing by key level
+- Detect keyboard shortcuts with only single modifier keys on key
+release
+- Translation Updates:
+ Danish, Greek, Portuguese (Brazil)
+
4.19.2 (2023-05-29)
======
- screensaver: Prevent recursive calling of lock command
=====================================
configure
=====================================
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac .
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for libxfce4ui 4.19.2.
+# Generated by GNU Autoconf 2.71 for libxfce4ui 4.19.3.
#
# Report bugs to <https://gitlab.xfce.org/xfce/libxfce4ui/-/issues>.
#
@@ -624,8 +624,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libxfce4ui'
PACKAGE_TARNAME='libxfce4ui'
-PACKAGE_VERSION='4.19.2'
-PACKAGE_STRING='libxfce4ui 4.19.2'
+PACKAGE_VERSION='4.19.3'
+PACKAGE_STRING='libxfce4ui 4.19.3'
PACKAGE_BUGREPORT='https://gitlab.xfce.org/xfce/libxfce4ui/-/issues'
PACKAGE_URL=''
@@ -1539,7 +1539,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libxfce4ui 4.19.2 to adapt to many kinds of systems.
+\`configure' configures libxfce4ui 4.19.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1615,7 +1615,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libxfce4ui 4.19.2:";;
+ short | recursive ) echo "Configuration of libxfce4ui 4.19.3:";;
esac
cat <<\_ACEOF
@@ -1799,7 +1799,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libxfce4ui configure 4.19.2
+libxfce4ui configure 4.19.3
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2152,7 +2152,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libxfce4ui $as_me 4.19.2, which was
+It was created by libxfce4ui $as_me 4.19.3, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -3543,7 +3543,7 @@ fi
# Define the identity of the package.
PACKAGE='libxfce4ui'
- VERSION='4.19.2'
+ VERSION='4.19.3'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -14365,7 +14365,7 @@ LIBXFCE4UI_VERINFO=0:0:0
LIBXFCE4UI_VERSION_API=2
LIBXFCE4UI_VERSION_MAJOR=4
LIBXFCE4UI_VERSION_MINOR=19
-LIBXFCE4UI_VERSION_MICRO=2
+LIBXFCE4UI_VERSION_MICRO=3
LIBXFCE4KBD_PRIVATE_VERINFO=0:0:0
LIBXFCE4KBD_PRIVATE_VERSION_API=3
@@ -21716,7 +21716,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libxfce4ui $as_me 4.19.2, which was
+This file was extended by libxfce4ui $as_me 4.19.3, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -21784,7 +21784,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-libxfce4ui config.status 4.19.2
+libxfce4ui config.status 4.19.3
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
=====================================
configure.ac
=====================================
@@ -5,7 +5,7 @@ dnl
dnl ***************************
dnl *** Version information ***
dnl ***************************
-XDT_VERSION_INIT([4.19.2])
+XDT_VERSION_INIT([4.19.3])
m4_define([libxfce4ui_verinfo], [0:0:0])
m4_define([libxfce4ui_version_api], [2])
=====================================
docs/reference/html/XfceTitledDialog.html
=====================================
@@ -318,11 +318,8 @@ the buttons to use an optional named or stock icon.</p>
<a name="xfce-titled-dialog-create-action-area"></a><h3>xfce_titled_dialog_create_action_area ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
xfce_titled_dialog_create_action_area (<em class="parameter"><code><a class="link" href="XfceTitledDialog.html" title="XfceTitledDialog"><span class="type">XfceTitledDialog</span></a> *titled_dialog</code></em>);</pre>
-<p>This function creates a custom action area (of type <a href="/usr/share/gtk-doc/html/gtk3/GtkButtonBox.html#GtkButtonBox-struct"><span class="type">GtkButtonBox</span></a>) and has to
-be used in combination with <a class="link" href="XfceTitledDialog.html#xfce-titled-dialog-add-action-widget" title="xfce_titled_dialog_add_action_widget ()"><span class="type">xfce_titled_dialog_add_action_widget</span></a>.</p>
-<p>When using the XfceTitledDialogClass directly to create dialogs this function is
-useful to keep action widgets out of the <a href="/usr/share/gtk-doc/html/gtk3/GtkHeaderBar.html#GtkHeaderBar-struct"><span class="type">GtkHeaderBar</span></a> in which they would
-normally end up by calling <a href="/usr/share/gtk-doc/html/gtk3/GtkDialog.html#gtk-dialog-add-action-widget"><span class="type">gtk_dialog_add_action_widget</span></a>.</p>
+<div class="warning"><p><code class="literal">xfce_titled_dialog_create_action_area</code> has been deprecated since version 4.19.3 and should not be used in newly-written code.</p></div>
+<p>This function is a no-op since 4.19.3.</p>
<div class="refsect3">
<a name="xfce-titled-dialog-create-action-area.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -347,8 +344,7 @@ normally end up by calling <a href="/usr/share/gtk-doc/html/gtk3/GtkDialog.html#
xfce_titled_dialog_add_button (<em class="parameter"><code><a class="link" href="XfceTitledDialog.html" title="XfceTitledDialog"><span class="type">XfceTitledDialog</span></a> *titled_dialog</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *button_text</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> response_id</code></em>);</pre>
-<p>This function is a replacement for <a href="/usr/share/gtk-doc/html/gtk3/GtkDialog.html#gtk-dialog-add-button"><span class="type">gtk_dialog_add_button</span></a> and assumes that
-you have called <a class="link" href="XfceTitledDialog.html#xfce-titled-dialog-create-action-area" title="xfce_titled_dialog_create_action_area ()"><span class="type">xfce_titled_dialog_create_action_area</span></a> before.</p>
+<p>This function is a replacement for <a href="/usr/share/gtk-doc/html/gtk3/GtkDialog.html#gtk-dialog-add-button"><span class="type">gtk_dialog_add_button</span></a>.</p>
<p>Buttons with <a href="/usr/share/gtk-doc/html/gtk3/GtkDialog.html#GTK-RESPONSE-HELP:CAPS"><span class="type">GTK_RESPONSE_HELP</span></a> will be added to the secondary group of children
(see <a href="/usr/share/gtk-doc/html/gtk3/GtkButtonBox.html#gtk-button-box-set-child-secondary"><span class="type">gtk_button_box_set_child_secondary</span></a> for reference).</p>
<div class="refsect3">
@@ -393,8 +389,7 @@ you have called <a class="link" href="XfceTitledDialog.html#xfce-titled-dialog-c
xfce_titled_dialog_add_action_widget (<em class="parameter"><code><a class="link" href="XfceTitledDialog.html" title="XfceTitledDialog"><span class="type">XfceTitledDialog</span></a> *titled_dialog</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gtk3/GtkWidget.html#GtkWidget-struct"><span class="type">GtkWidget</span></a> *child</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> response_id</code></em>);</pre>
-<p>This function is a replacement for <a href="/usr/share/gtk-doc/html/gtk3/GtkDialog.html#gtk-dialog-add-action-widget"><span class="type">gtk_dialog_add_action_widget</span></a> and assumes that
-you have called <a class="link" href="XfceTitledDialog.html#xfce-titled-dialog-create-action-area" title="xfce_titled_dialog_create_action_area ()"><span class="type">xfce_titled_dialog_create_action_area</span></a> before.</p>
+<p>This function is a replacement for <a href="/usr/share/gtk-doc/html/gtk3/GtkDialog.html#gtk-dialog-add-action-widget"><span class="type">gtk_dialog_add_action_widget</span></a>.</p>
<p>Children with <a href="/usr/share/gtk-doc/html/gtk3/GtkDialog.html#GTK-RESPONSE-HELP:CAPS"><span class="type">GTK_RESPONSE_HELP</span></a> will be added to the secondary group of children
(see <a href="/usr/share/gtk-doc/html/gtk3/GtkButtonBox.html#gtk-button-box-set-child-secondary"><span class="type">gtk_button_box_set_child_secondary</span></a> for reference).</p>
<div class="refsect3">
=====================================
docs/reference/html/api-index-deprecated.html
=====================================
@@ -35,6 +35,10 @@
<dd></dd>
<a name="idxT"></a><h3 class="title">T</h3>
<dt>
+<a class="link" href="XfceTitledDialog.html#xfce-titled-dialog-create-action-area" title="xfce_titled_dialog_create_action_area ()">xfce_titled_dialog_create_action_area</a>, function in <a class="link" href="XfceTitledDialog.html" title="XfceTitledDialog">XfceTitledDialog</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="XfceTitledDialog.html#xfce-titled-dialog-new-with-buttons" title="xfce_titled_dialog_new_with_buttons ()">xfce_titled_dialog_new_with_buttons</a>, function in <a class="link" href="XfceTitledDialog.html" title="XfceTitledDialog">XfceTitledDialog</a>
</dt>
<dd></dd>
=====================================
docs/reference/html/index.html
=====================================
@@ -15,7 +15,7 @@
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libxfce4ui Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- For libxfce4ui 4.19.2.
+ For libxfce4ui 4.19.3.
The latest version of this documentation can be found on-line at
<a class="ulink" href="https://developer.xfce.org/libxfce4ui/index.html" target="_top">https://developer.xfce.org/libxfce4ui/</a>.
</p></div>
=====================================
docs/reference/html/libxfce4ui-libxfce4ui-config.html
=====================================
@@ -210,7 +210,7 @@ function is available.</p>
</tr>
<tr>
<td class="parameter_name"><p>micro</p></td>
-<td class="parameter_description"><p>The micro release of the library, i.e. 2</p></td>
+<td class="parameter_description"><p>The micro release of the library, i.e. 3</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
@@ -259,7 +259,7 @@ that can be used by the C pre-processor.</p>
<hr>
<div class="refsect2">
<a name="LIBXFCE4UI-MICRO-VERSION:CAPS"></a><h3>LIBXFCE4UI_MICRO_VERSION</h3>
-<pre class="programlisting">#define LIBXFCE4UI_MICRO_VERSION (2)
+<pre class="programlisting">#define LIBXFCE4UI_MICRO_VERSION (3)
</pre>
<p>A macro that evaluates to the micro version of libxfce4ui, in a format
that can be used by the C pre-processor.</p>
=====================================
docs/reference/html/libxfce4ui.devhelp2
=====================================
@@ -100,7 +100,7 @@
<keyword type="function" name="xfce_titled_dialog_new ()" link="XfceTitledDialog.html#xfce-titled-dialog-new"/>
<keyword type="function" name="xfce_titled_dialog_new_with_buttons ()" link="XfceTitledDialog.html#xfce-titled-dialog-new-with-buttons" deprecated="4.16: Use #xfce_titled_dialog_new_with_mixed_buttons instead."/>
<keyword type="function" name="xfce_titled_dialog_new_with_mixed_buttons ()" link="XfceTitledDialog.html#xfce-titled-dialog-new-with-mixed-buttons" since="4.14"/>
- <keyword type="function" name="xfce_titled_dialog_create_action_area ()" link="XfceTitledDialog.html#xfce-titled-dialog-create-action-area" since="4.16"/>
+ <keyword type="function" name="xfce_titled_dialog_create_action_area ()" link="XfceTitledDialog.html#xfce-titled-dialog-create-action-area" deprecated="4.19.3" since="4.16"/>
<keyword type="function" name="xfce_titled_dialog_add_button ()" link="XfceTitledDialog.html#xfce-titled-dialog-add-button" since="4.16"/>
<keyword type="function" name="xfce_titled_dialog_add_action_widget ()" link="XfceTitledDialog.html#xfce-titled-dialog-add-action-widget" since="4.16"/>
<keyword type="function" name="xfce_titled_dialog_set_default_response ()" link="XfceTitledDialog.html#xfce-titled-dialog-set-default-response" since="4.16"/>
=====================================
docs/reference/html/style.css
=====================================
@@ -473,6 +473,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
.cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.gd { color: #A00000 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
+.ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.gr { color: #E40000 } /* Generic.Error */
.gh { color: #000080; font-weight: bold } /* Generic.Heading */
.gi { color: #008400 } /* Generic.Inserted */
=====================================
libxfce4kbd-private/xfce-shortcut-dialog.c
=====================================
@@ -241,8 +241,6 @@ xfce_shortcut_dialog_create_contents (XfceShortcutDialog *dialog,
gtk_window_set_title (GTK_WINDOW (dialog), title);
gtk_window_set_icon_name (GTK_WINDOW (dialog), icon_name);
- xfce_titled_dialog_create_action_area (XFCE_TITLED_DIALOG (dialog));
-
/* Create clear button for xfwm4 */
if (g_utf8_collate (provider, "xfwm4") == 0)
{
=====================================
libxfce4kbd-private/xfce-shortcuts-grabber.c
=====================================
@@ -41,9 +41,6 @@
-#define MODIFIERS_ERROR ((GdkModifierType)(-1))
-#define MODIFIERS_NONE 0
-
/*
* It is not clear what the correct behavior is in this regard, so this is disabled rather
* than removed, in order to preserve the changes that took place during cycle 4.17 and to
@@ -63,7 +60,6 @@ typedef struct _XfceKey XfceKey;
-static void xfce_shortcuts_grabber_constructed (GObject *object);
static void xfce_shortcuts_grabber_finalize (GObject *object);
static void xfce_shortcuts_grabber_keys_changed (GdkKeymap *keymap,
XfceShortcutsGrabber *grabber);
@@ -84,11 +80,13 @@ struct _XfceShortcutsGrabberPrivate
/* Maps a shortcut string to a pointer to XfceKey */
GHashTable *keys;
- /* Maps an XfceXGrab to a reference count.
+ /* Set of reference counted XfceXGrab.
* The reference count tracks the number of shortcuts that grab the XfceXGrab. */
GHashTable *grabbed_keycodes;
+#if TRACK_LAYOUT_CHANGE
gint xkbEventType, xkbStateGroup;
+#endif
};
struct _XfceKey
@@ -103,15 +101,14 @@ struct _XfceKey
guint numlock_modifier;
};
-typedef struct
+typedef struct _XfceXGrab
{
guint keycode;
GdkModifierType non_virtual_modifiers;
guint numlock_modifier;
+ guint refcount;
} XfceXGrab;
-typedef guint XfceXGrabRefcount;
-
G_DEFINE_TYPE_WITH_PRIVATE (XfceShortcutsGrabber, xfce_shortcuts_grabber, G_TYPE_OBJECT)
@@ -124,7 +121,6 @@ xfce_shortcuts_grabber_class_init (XfceShortcutsGrabberClass *klass)
GObjectClass *gobject_class;
gobject_class = G_OBJECT_CLASS (klass);
- gobject_class->constructed = xfce_shortcuts_grabber_constructed;
gobject_class->finalize = xfce_shortcuts_grabber_finalize;
g_signal_new ("shortcut-activated",
@@ -149,8 +145,11 @@ free_key (gpointer data)
g_free (key);
}
+
+
static gboolean
-xgrab_equal (gconstpointer data1, gconstpointer data2)
+xgrab_equal (gconstpointer data1,
+ gconstpointer data2)
{
const XfceXGrab *a = data1;
const XfceXGrab *b = data2;
@@ -163,12 +162,7 @@ xgrab_equal (gconstpointer data1, gconstpointer data2)
a->numlock_modifier == b->numlock_modifier;
}
-static void
-xgrab_free (gpointer data)
-{
- XfceXGrab *g = data;
- g_free (g);
-}
+
static guint
xgrab_hash (gconstpointer data)
@@ -179,50 +173,30 @@ xgrab_hash (gconstpointer data)
-
static void
xfce_shortcuts_grabber_init (XfceShortcutsGrabber *grabber)
{
- GdkDisplay *display;
- GdkKeymap *keymap;
+ Display *xdisplay = gdk_x11_get_default_xdisplay ();
+ GdkKeymap *keymap = gdk_keymap_get_for_display (gdk_display_get_default ());
grabber->priv = xfce_shortcuts_grabber_get_instance_private (grabber);
grabber->priv->keys = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, free_key);
- grabber->priv->grabbed_keycodes = g_hash_table_new_full (xgrab_hash, xgrab_equal, xgrab_free, g_free);
+ grabber->priv->grabbed_keycodes = g_hash_table_new_full (xgrab_hash, xgrab_equal, g_free, NULL);
/* Workaround: Make sure modmap is up to date
* There is possibly a bug in GTK+ where virtual modifiers are not
* mapped because the modmap is not updated. The following function
* updates it.
*/
- display = gdk_display_get_default ();
- keymap = gdk_keymap_get_for_display (display);
- (void) gdk_keymap_have_bidi_layouts (keymap);
-}
-
+ gdk_keymap_have_bidi_layouts (keymap);
-
-static void
-xfce_shortcuts_grabber_constructed (GObject *object)
-{
- GdkDisplay *display;
- Display *xdisplay;
- GdkKeymap *keymap;
-
- XfceShortcutsGrabber *grabber = XFCE_SHORTCUTS_GRABBER (object);
-
- display = gdk_display_get_default ();
- xdisplay = GDK_DISPLAY_XDISPLAY (display);
- keymap = gdk_keymap_get_for_display (display);
g_signal_connect (keymap, "keys-changed", G_CALLBACK (xfce_shortcuts_grabber_keys_changed),
grabber);
+#if TRACK_LAYOUT_CHANGE
if (G_UNLIKELY (!XkbQueryExtension (xdisplay, 0, &grabber->priv->xkbEventType, 0, 0, 0)))
grabber->priv->xkbEventType = -1;
-#if TRACK_LAYOUT_CHANGE
grabber->priv->xkbStateGroup = -1;
-#else
- grabber->priv->xkbStateGroup = 0;
#endif
/* Flush events before adding the event filter */
@@ -262,13 +236,12 @@ xfce_shortcuts_grabber_keys_changed (GdkKeymap *keymap,
static gboolean
-xfce_shortcuts_grabber_xgrab (XfceXGrab g, gboolean grab)
+xfce_shortcuts_grabber_xgrab (XfceXGrab g,
+ gboolean grab)
{
GdkDisplay *display = gdk_display_get_default ();
Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
- Window root_window;
- guint k;
- gboolean success = TRUE;
+ Window root_window = gdk_x11_get_default_root_xwindow ();
/* Ignorable modifiers */
const guint mod_masks [] = {
@@ -289,16 +262,13 @@ xfce_shortcuts_grabber_xgrab (XfceXGrab g, gboolean grab)
g.numlock_modifier | GDK_MOD2_MASK | GDK_LOCK_MASK | GDK_MOD5_MASK,
};
- /* Retrieve the root window of the screen */
- root_window = GDK_WINDOW_XID (gdk_screen_get_root_window (gdk_display_get_default_screen (display)));
-
TRACE ("%s keycode %u, non_virtual_modifiers 0x%x",
grab ? "Grabbing" : "Ungrabbing",
g.keycode, g.non_virtual_modifiers);
gdk_x11_display_error_trap_push (display);
- for (k = 0; k < G_N_ELEMENTS (mod_masks); k++)
+ for (guint k = 0; k < G_N_ELEMENTS (mod_masks); k++)
{
/* Take ignorable modifiers into account when grabbing/ungrabbing */
if (grab)
@@ -319,21 +289,20 @@ xfce_shortcuts_grabber_xgrab (XfceXGrab g, gboolean grab)
{
g_warning ("Failed to %s keycode %u",
grab ? "grab" : "ungrab", g.keycode);
- success = FALSE;
+ return FALSE;
}
- return success;
+ return TRUE;
}
-static gboolean
-ungrab_key (const gchar *shortcut,
- XfceKey *key,
- XfceShortcutsGrabber *grabber)
+static void
+ungrab_key (gpointer shortcut,
+ gpointer key,
+ gpointer grabber)
{
xfce_shortcuts_grabber_ungrab (grabber, key);
- return FALSE;
}
@@ -341,77 +310,94 @@ ungrab_key (const gchar *shortcut,
static void
xfce_shortcuts_grabber_ungrab_all (XfceShortcutsGrabber *grabber)
{
- g_return_if_fail (XFCE_IS_SHORTCUTS_GRABBER (grabber));
- g_hash_table_foreach (grabber->priv->keys,
- (GHFunc) (void (*)(void)) ungrab_key,
- grabber);
+ g_hash_table_foreach (grabber->priv->keys, ungrab_key, grabber);
}
static gboolean
-get_entries_for_keyval (GdkKeymap *keymap,
- gint group,
- guint keyval,
- GdkKeymapKey **keys,
- guint *n_keys)
+get_entries_for_keyval (GdkKeymap *keymap,
+ gint group,
+ guint keyval,
+ GdkModifierType modifiers,
+ GdkKeymapKey **keys_out,
+ guint *n_keys_out)
{
- GdkKeymapKey *keys1;
- gint n_keys1;
+ GdkKeymapKey *keys;
+ gint n_keys;
- *keys = NULL;
- *n_keys = 0;
+ *keys_out = NULL;
+ *n_keys_out = 0;
/* Get all keys generating keyval */
- if (!gdk_keymap_get_entries_for_keyval (keymap, keyval, &keys1, &n_keys1))
+ if (!gdk_keymap_get_entries_for_keyval (keymap, keyval, &keys, &n_keys))
{
TRACE ("Got no keys for keyval");
return FALSE;
}
- if (G_UNLIKELY (n_keys1 <= 0))
+ if (G_UNLIKELY (n_keys <= 0))
{
- g_free (keys1);
+ g_free (keys);
return FALSE;
}
/* Filter keys by group */
{
- gboolean group0_only;
- gint i, n_matches;
+ gboolean group0_only = TRUE;
/* For keys such as F12:
* keys1[i].group is always 0 (even if n_keys1 >= 2)
* and thus n_matches will be zero if group != 0 */
-
- group0_only = TRUE;
- n_matches = 0;
- for (i = 0; i < n_keys1; i++)
+ for (gint i = 0; i < n_keys; i++)
{
- group0_only &= (keys1[i].group == 0) ? TRUE : FALSE;
- if (keys1[i].group == group)
- n_matches++;
+ if (keys[i].group != 0)
+ {
+ group0_only = FALSE;
+ break;
+ }
}
- if (!group0_only || n_matches != 0)
+ if (!group0_only)
{
/* Remove keys that do not match the group*/
- for (i = 0; i < n_keys1;)
- if (keys1[i].group == group)
+ for (gint i = 0; i < n_keys;)
+ if (keys[i].group == group)
i++;
else
- keys1[i] = keys1[--n_keys1];
+ keys[i] = keys[--n_keys];
}
}
- if (G_UNLIKELY (n_keys1 == 0))
+ /* Filter keys by level */
+ {
+ guint keyval_trans;
+ GdkModifierType modifiers_levelled;
+
+ /* Remove keys that do not match the level for the given modifiers */
+ for (gint i = 0; i < n_keys;)
+ {
+ modifiers_levelled = modifiers;
+ if (keys[i].level == 0)
+ modifiers_levelled &= ~(GDK_SHIFT_MASK | GDK_MOD5_MASK);
+
+ gdk_keymap_translate_keyboard_state (keymap, keys[i].keycode, modifiers_levelled,
+ keys[i].group, &keyval_trans, NULL, NULL, NULL);
+ if (keyval == keyval_trans)
+ i++;
+ else
+ keys[i] = keys[--n_keys];
+ }
+ }
+
+ if (G_UNLIKELY (n_keys == 0))
{
- g_free (keys1);
+ g_free (keys);
return FALSE;
}
- *keys = keys1;
- *n_keys = n_keys1;
+ *keys_out = keys;
+ *n_keys_out = n_keys;
return TRUE;
}
@@ -420,62 +406,109 @@ get_entries_for_keyval (GdkKeymap *keymap,
static gboolean
map_virtual_modifiers (GdkKeymap *keymap,
GdkModifierType virtual_modifiers,
- GdkModifierType *non_virtual_modifiers)
+ GdkModifierType *non_virtual_modifiers_out)
{
+ GdkModifierType non_virtual_modifiers = virtual_modifiers;
+
/* Map virtual modifiers to non-virtual modifiers */
- GdkModifierType non_virtual = virtual_modifiers;
- if (!gdk_keymap_map_virtual_modifiers (keymap, &non_virtual))
+ if (!gdk_keymap_map_virtual_modifiers (keymap, &non_virtual_modifiers))
return FALSE;
- if (non_virtual == virtual_modifiers &&
- (GDK_SUPER_MASK | GDK_HYPER_MASK | GDK_META_MASK) & non_virtual)
+ if (non_virtual_modifiers == virtual_modifiers &&
+ (GDK_SUPER_MASK | GDK_HYPER_MASK | GDK_META_MASK) & non_virtual_modifiers)
{
TRACE ("Failed to map virtual modifiers");
return FALSE;
}
- *non_virtual_modifiers = non_virtual;
+ *non_virtual_modifiers_out = non_virtual_modifiers;
return TRUE;
}
-
static void
-xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber)
+_xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber,
+ XfceKey *key,
+ GdkModifierType non_virtual_modifiers,
+ guint numlock_modifier,
+ GdkKeymapKey **keys,
+ guint *n_keys)
{
- GdkDisplay *display;
- Display *xdisplay;
- GdkKeymap *keymap;
- guint numlock_modifier;
- GHashTable *grabbed_keycodes;
- GHashTableIter iter;
- gpointer hash_value;
- guint n_already_grabbed = 0;
- guint n_regrab = 0;
- XfceKey **regrab; /* list of keys to re-grab */
- guint i;
- gint group;
+#ifdef DEBUG_TRACE
+ gchar *shortcut_name = gtk_accelerator_name (key->keyval, non_virtual_modifiers);
+ TRACE (key->n_keys == 0 ? "Grabbing %s" : "Regrabbing %s", shortcut_name);
+ TRACE (" key->keyval: %d", key->keyval);
+ TRACE (" key->modifiers: 0x%x", key->modifiers);
+ TRACE (" non_virtual_modifiers: 0x%x", non_virtual_modifiers);
+ TRACE (" n_keys: %u", *n_keys);
+ g_free (shortcut_name);
+#endif
- g_return_if_fail (XFCE_IS_SHORTCUTS_GRABBER (grabber));
+ /* Grab all hardware keys generating keyval */
+ for (guint i = 0; i < *n_keys;)
+ {
+ XfceXGrab g;
+ XfceXGrab *pg;
- display = gdk_display_get_default ();
- xdisplay = GDK_DISPLAY_XDISPLAY (display);
- keymap = gdk_keymap_get_for_display (display);
- numlock_modifier = XkbKeysymToModifiers (xdisplay, GDK_KEY_Num_Lock);
- grabbed_keycodes = grabber->priv->grabbed_keycodes;
- group = grabber->priv->xkbStateGroup;
- if (G_UNLIKELY (group == -1))
- group = 0;
+ g.keycode = (*keys)[i].keycode;
+ g.non_virtual_modifiers = non_virtual_modifiers;
+ g.numlock_modifier = numlock_modifier;
+ g.refcount = 1;
+ if (!g_hash_table_lookup_extended (grabber->priv->grabbed_keycodes, &g, (gpointer *) &pg, NULL))
+ {
+ if (xfce_shortcuts_grabber_xgrab (g, TRUE))
+ {
+ pg = g_new (XfceXGrab, 1);
+ *pg = g;
+ g_hash_table_add (grabber->priv->grabbed_keycodes, pg);
+ TRACE ("group %d, keycode %u, non_virtual_modifiers 0x%x: refcount := %u",
+ (*keys)[i].group, g.keycode, g.non_virtual_modifiers, pg->refcount);
+ i++;
+ }
+ else
+ /* Failed to grab (*keys)[i], remove it from *keys */
+ (*keys)[i] = (*keys)[--*n_keys];
+ }
+ else
+ {
+ /* 'g' has already been grabbed, increment its refcount only */
+ pg->refcount++;
+ TRACE ("group %d, keycode %u, non_virtual_modifiers 0x%x: ++refcount = %u",
+ (*keys)[i].group, g.keycode, g.non_virtual_modifiers, pg->refcount);
+ i++;
+ }
+ }
- regrab = g_new (XfceKey *, g_hash_table_size (grabber->priv->keys));
+ if (*n_keys == 0)
+ {
+ g_free (*keys);
+ *keys = NULL;
+ }
+}
+
+
+
+static void
+xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber)
+{
+ GdkKeymap *keymap = gdk_keymap_get_for_display (gdk_display_get_default ());
+ GHashTableIter iter;
+ XfceKey *key;
+ guint n_already_grabbed = 0;
+ guint n_regrab = 0;
+ XfceKey **regrab = g_new (XfceKey *, g_hash_table_size (grabber->priv->keys));
+ guint numlock_modifier = XkbKeysymToModifiers (gdk_x11_get_default_xdisplay (), GDK_KEY_Num_Lock);
+ gint group = 0;
+#if TRACK_LAYOUT_CHANGE
+ group = MAX (0, grabber->priv->xkbStateGroup);
+#endif
/* Phase 1: Ungrab all keys that need to be re-grabbed
* and collect them into the 'regrab' list */
g_hash_table_iter_init (&iter, grabber->priv->keys);
- while (g_hash_table_iter_next (&iter, NULL, &hash_value))
+ while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &key))
{
- XfceKey *const key = hash_value;
GdkKeymapKey *keys;
GdkModifierType non_virtual_modifiers;
guint n_keys;
@@ -483,7 +516,7 @@ xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber)
if (!map_virtual_modifiers (keymap, key->modifiers, &non_virtual_modifiers))
continue;
- if (!get_entries_for_keyval (keymap, group, key->keyval, &keys, &n_keys))
+ if (!get_entries_for_keyval (keymap, group, key->keyval, key->modifiers, &keys, &n_keys))
continue;
already_grabbed = TRUE;
@@ -491,8 +524,7 @@ xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber)
key->non_virtual_modifiers == non_virtual_modifiers &&
key->numlock_modifier == numlock_modifier)
{
- guint j;
- for (j = 0; j < n_keys; j++)
+ for (guint j = 0; j < n_keys; j++)
if (memcmp (&key->keys[j], &keys[j], sizeof(*keys)) != 0)
{
already_grabbed = FALSE;
@@ -511,89 +543,29 @@ xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber)
{
/* Undo current X11 grabs of the key */
if (key->n_keys != 0)
- xfce_shortcuts_grabber_ungrab (grabber, key);
+ {
+ xfce_shortcuts_grabber_ungrab (grabber, key);
+ g_free (key->keys);
+ }
/* Set key->keys to the keycodes that need to be grabbed in phase 2 */
- if (G_UNLIKELY (key->keys))
- {
- g_free (key->keys);
- key->keys = NULL;
- }
+ key->keys = keys;
key->n_keys = n_keys;
- if (n_keys != 0)
- key->keys = keys;
- else
- g_free (keys);
key->non_virtual_modifiers = non_virtual_modifiers;
key->numlock_modifier = numlock_modifier;
-
- /* Remember to grab the key in phase 2 */
- if (n_keys != 0)
- regrab[n_regrab++] = key;
+ regrab[n_regrab++] = key;
}
}
TRACE ("n_already_grabbed=%u, n_regrab=%u", n_already_grabbed, n_regrab);
/* Phase 2: Grab all keys that have been stored in the 'regrab' list */
- for (i = 0; i < n_regrab; i++)
- {
- XfceKey *const key = regrab[i];
- guint j;
-
-#ifdef DEBUG_TRACE
+ for (guint i = 0; i < n_regrab; i++)
{
- gchar *shortcut_name = gtk_accelerator_name (key->keyval, key->non_virtual_modifiers);
- TRACE (key->n_keys==0 ? "Grabbing %s" : "Regrabbing %s", shortcut_name);
- TRACE (" key->keyval: %d", key->keyval);
- TRACE (" key->modifiers: 0x%x", key->modifiers);
- TRACE (" key->non_virtual_modifiers: 0x%x", key->non_virtual_modifiers);
- TRACE (" key->n_keys: %u", key->n_keys);
- g_free (shortcut_name);
+ key = regrab[i];
+ _xfce_shortcuts_grabber_grab (grabber, key, key->non_virtual_modifiers,
+ numlock_modifier, &key->keys, &key->n_keys);
}
-#endif
-
- /* Grab all hardware keys generating keyval */
- for (j = 0; j < key->n_keys;)
- {
- XfceXGrab g;
- gpointer refcount;
-
- g.keycode = key->keys[j].keycode;
- g.non_virtual_modifiers = key->non_virtual_modifiers;
- g.numlock_modifier = key->numlock_modifier;
- if (!g_hash_table_lookup_extended (grabbed_keycodes, &g, NULL, &refcount))
- {
- if (xfce_shortcuts_grabber_xgrab (g, TRUE))
- {
- XfceXGrab *g1 = g_new (XfceXGrab, 1);
- XfceXGrabRefcount *refcount1 = g_new (XfceXGrabRefcount, 1);
- *g1 = g;
- *refcount1 = 1;
- g_hash_table_insert (grabbed_keycodes, g1, refcount1);
- j++;
- }
- else
- /* Failed to grab key->keys[j], remove it from key->keys */
- key->keys[j] = key->keys[--key->n_keys];
- }
- else
- {
- // 'g' has already been grabbed, increment its refcount only
- XfceXGrabRefcount *refcount1 = refcount;
- (*refcount1)++;
- TRACE ("keycode %u, non_virtual_modifiers 0x%x: ++refcount = %u",
- g.keycode, g.non_virtual_modifiers, *refcount1);
- j++;
- }
- }
-
- if (key->n_keys == 0 && key->keys != NULL)
- {
- g_free (key->keys);
- key->keys = NULL;
- }
- }
g_free (regrab);
}
@@ -601,140 +573,68 @@ xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber)
static void
-xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, XfceKey *key)
+xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber,
+ XfceKey *key)
{
- GdkDisplay *display;
- Display *xdisplay;
- GdkKeymap *keymap;
- guint numlock_modifier;
- GHashTable *grabbed_keycodes;
- GdkKeymapKey *keys;
- GdkModifierType non_virtual_modifiers;
- guint i, n_keys;
- gint group;
-
- display = gdk_display_get_default ();
- xdisplay = GDK_DISPLAY_XDISPLAY (display);
- keymap = gdk_keymap_get_for_display (display);
- numlock_modifier = XkbKeysymToModifiers (xdisplay, GDK_KEY_Num_Lock);
- grabbed_keycodes = grabber->priv->grabbed_keycodes;
- group = grabber->priv->xkbStateGroup;
- if (G_UNLIKELY (group == -1))
- group = 0;
+ GdkKeymap *keymap = gdk_keymap_get_for_display (gdk_display_get_default ());
+ GdkKeymapKey *keys;
+ GdkModifierType non_virtual_modifiers;
+ guint numlock_modifier = XkbKeysymToModifiers (gdk_x11_get_default_xdisplay (), GDK_KEY_Num_Lock);
+ guint n_keys;
+ gint group = 0;
+#if TRACK_LAYOUT_CHANGE
+ group = MAX (0, grabber->priv->xkbStateGroup);
+#endif
if (!map_virtual_modifiers (keymap, key->modifiers, &non_virtual_modifiers))
return;
- if (!get_entries_for_keyval (keymap, group, key->keyval, &keys, &n_keys))
+ if (!get_entries_for_keyval (keymap, group, key->keyval, key->modifiers, &keys, &n_keys))
return;
-#ifdef DEBUG_TRACE
- {
- char *shortcut_name = gtk_accelerator_name (key->keyval, non_virtual_modifiers);
- TRACE (key->n_keys==0 ? "Grabbing %s" : "Regrabbing %s", shortcut_name);
- TRACE (" key->keyval: %d", key->keyval);
- TRACE (" key->modifiers: 0x%x", key->modifiers);
- TRACE (" non_virtual_modifiers: 0x%x", non_virtual_modifiers);
- TRACE (" n_keys: %u", n_keys);
- g_free (shortcut_name);
- }
-#endif
-
- /* Undo old grabs (just in case there are some old grabs) */
- if (G_UNLIKELY (key->n_keys != 0))
- {
- g_warning ("keyval %u already grabbed", key->keyval);
- xfce_shortcuts_grabber_ungrab (grabber, key);
- }
-
- /* Grab all hardware keys generating keyval */
- for (i = 0; i < n_keys;)
- {
- XfceXGrab g;
- gpointer refcount;
-
- g.keycode = keys[i].keycode;
- g.non_virtual_modifiers = non_virtual_modifiers;
- g.numlock_modifier = numlock_modifier;
- if (!g_hash_table_lookup_extended (grabbed_keycodes, &g, NULL, &refcount))
- {
- if (xfce_shortcuts_grabber_xgrab (g, TRUE))
- {
- XfceXGrab *g1 = g_new (XfceXGrab, 1);
- XfceXGrabRefcount *refcount1 = g_new (XfceXGrabRefcount, 1);
- *g1 = g;
- *refcount1 = 1;
- g_hash_table_insert (grabbed_keycodes, g1, refcount1);
- TRACE ("group %d, keycode %u, non_virtual_modifiers 0x%x: refcount := %u",
- keys[i].group, g.keycode, g.non_virtual_modifiers, *refcount1);
- i++;
- }
- else
- /* Failed to grab keys[i], remove it from keys */
- keys[i] = keys[--n_keys];
- }
- else
- {
- // 'g' has already been grabbed, increment its refcount only
- XfceXGrabRefcount *refcount1 = refcount;
- (*refcount1)++;
- TRACE ("group %d, keycode %u, non_virtual_modifiers 0x%x: ++refcount = %u",
- keys[i].group, g.keycode, g.non_virtual_modifiers, *refcount1);
- i++;
- }
- }
+ _xfce_shortcuts_grabber_grab (grabber, key, non_virtual_modifiers, numlock_modifier, &keys, &n_keys);
/* Set key->keys to the list of keys that been succesfully grabbed */
- g_free (key->keys);
- key->keys = NULL;
+ key->keys = keys;
key->n_keys = n_keys;
- if (n_keys != 0)
- key->keys = keys;
- else
- g_free (keys);
key->non_virtual_modifiers = non_virtual_modifiers;
key->numlock_modifier = numlock_modifier;
}
-static void
-xfce_shortcuts_grabber_ungrab (XfceShortcutsGrabber *grabber, XfceKey *key)
-{
- GHashTable *grabbed_keycodes;
- guint i;
- grabbed_keycodes = grabber->priv->grabbed_keycodes;
+static void
+xfce_shortcuts_grabber_ungrab (XfceShortcutsGrabber *grabber,
+ XfceKey *key)
+{
#ifdef DEBUG_TRACE
- {
- gchar *shortcut_name = gtk_accelerator_name (key->keyval, key->non_virtual_modifiers);
- TRACE ("Ungrabbing %s", shortcut_name);
- TRACE (" key->keyval: %d", key->keyval);
- TRACE (" key->modifiers: 0x%x", key->modifiers);
- TRACE (" key->non_virtual_modifiers: 0x%x", key->non_virtual_modifiers);
- TRACE (" key->n_keys: %u", key->n_keys);
- g_free (shortcut_name);
- }
+ gchar *shortcut_name = gtk_accelerator_name (key->keyval, key->non_virtual_modifiers);
+ TRACE ("Ungrabbing %s", shortcut_name);
+ TRACE (" key->keyval: %d", key->keyval);
+ TRACE (" key->modifiers: 0x%x", key->modifiers);
+ TRACE (" key->non_virtual_modifiers: 0x%x", key->non_virtual_modifiers);
+ TRACE (" key->n_keys: %u", key->n_keys);
+ g_free (shortcut_name);
#endif
- for (i = 0; i < key->n_keys; i++)
+ for (guint i = 0; i < key->n_keys; i++)
{
XfceXGrab g;
- gpointer refcount;
+ XfceXGrab *pg;
g.keycode = key->keys[i].keycode;
g.non_virtual_modifiers = key->non_virtual_modifiers;
g.numlock_modifier = key->numlock_modifier;
- if (G_LIKELY (g_hash_table_lookup_extended (grabbed_keycodes, &g, NULL, &refcount)))
+ if (G_LIKELY (g_hash_table_lookup_extended (grabber->priv->grabbed_keycodes, &g, (gpointer *) &pg, NULL)))
{
- XfceXGrabRefcount *refcount1 = refcount;
- if (G_LIKELY (*refcount1 != 0))
+ if (G_LIKELY (pg->refcount != 0))
{
- (*refcount1)--;
+ pg->refcount--;
TRACE ("group %d, keycode %u, non_virtual_modifiers 0x%x: --refcount = %u",
- key->keys[i].group, g.keycode, g.non_virtual_modifiers, *refcount1);
- if(*refcount1 == 0)
+ key->keys[i].group, g.keycode, g.non_virtual_modifiers, pg->refcount);
+ if (pg->refcount == 0)
{
xfce_shortcuts_grabber_xgrab (g, FALSE);
- g_hash_table_remove (grabbed_keycodes, &g);
+ g_hash_table_remove (grabber->priv->grabbed_keycodes, pg);
}
}
else
@@ -790,24 +690,49 @@ find_event_key (const gchar *shortcut,
+static gboolean
+is_modifier_key (struct EventKeyFindContext context)
+{
+ if (context.modifiers == 0)
+ {
+ switch (context.keyval)
+ {
+ case GDK_KEY_Control_L:
+ case GDK_KEY_Control_R:
+ case GDK_KEY_Alt_L:
+ case GDK_KEY_Alt_R:
+ case GDK_KEY_Super_L:
+ case GDK_KEY_Super_R:
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+
+
static GdkFilterReturn
xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent,
GdkEvent *event,
gpointer data)
{
- XfceShortcutsGrabber *const grabber = data;
+ XfceShortcutsGrabber *grabber = data;
struct EventKeyFindContext context;
- GdkKeymap *keymap;
GdkModifierType consumed, modifiers;
GdkDisplay *display;
- XEvent *xevent;
+ XEvent *xevent = (XEvent *) gdk_xevent;
guint keyval, mod_mask;
gchar *raw_shortcut_name;
gint timestamp;
+ gint group = 0;
- g_return_val_if_fail (XFCE_IS_SHORTCUTS_GRABBER (grabber), GDK_FILTER_CONTINUE);
+ /* We only activate single modifier keys on release event to allow combinations
+ * such as Super to open a menu and Super+T to open a terminal: see
+ * https://gitlab.xfce.org/xfce/libxfce4ui/-/issues/1 */
+ static gboolean single_modifier_down = FALSE;
- xevent = (XEvent *) gdk_xevent;
+ g_return_val_if_fail (XFCE_IS_SHORTCUTS_GRABBER (grabber), GDK_FILTER_CONTINUE);
#if TRACK_LAYOUT_CHANGE
if (xevent->type == grabber->priv->xkbEventType)
@@ -823,9 +748,10 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent,
}
}
}
+ group = grabber->priv->xkbStateGroup;
#endif
- if (xevent->type != KeyPress)
+ if (xevent->type != KeyPress && !(xevent->type == KeyRelease && single_modifier_down))
return GDK_FILTER_CONTINUE;
context.result = NULL;
@@ -834,13 +760,15 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent,
/* Get the keyboard state */
display = gdk_display_get_default ();
gdk_x11_display_error_trap_push (display);
- keymap = gdk_keymap_get_for_display (display);
mod_mask = gtk_accelerator_get_default_mod_mask ();
modifiers = xevent->xkey.state;
- gdk_keymap_translate_keyboard_state (keymap, xevent->xkey.keycode,
- modifiers,
- grabber->priv->xkbStateGroup,
+ /* Remove modifier added to single modifier key on release event */
+ if (xevent->type == KeyRelease && single_modifier_down)
+ modifiers = 0;
+
+ gdk_keymap_translate_keyboard_state (gdk_keymap_get_for_display (display),
+ xevent->xkey.keycode, modifiers, group,
&keyval, NULL, NULL, &consumed);
/* We want Alt + Print to be Alt + Print not SysReq. See bug #7897 */
@@ -886,14 +814,23 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent,
TRACE ("Looking for %s", raw_shortcut_name);
g_free (raw_shortcut_name);
- g_hash_table_find (grabber->priv->keys,
- (GHRFunc) (void (*)(void)) find_event_key,
- &context);
+ g_hash_table_find (grabber->priv->keys, (GHRFunc) find_event_key, &context);
+ single_modifier_down = FALSE;
if (G_LIKELY (context.result != NULL))
- /* We had a positive match */
- g_signal_emit_by_name (grabber, "shortcut-activated",
- context.result, timestamp);
+ {
+ /* We had a positive match */
+ if (xevent->type == KeyPress && is_modifier_key (context))
+ {
+ /* Will be activated on release event */
+ single_modifier_down = TRUE;
+ }
+ else
+ {
+ g_signal_emit_by_name (grabber, "shortcut-activated",
+ context.result, timestamp);
+ }
+ }
gdk_display_flush (display);
gdk_x11_display_error_trap_pop_ignored (display);
=====================================
libxfce4ui/libxfce4ui-config.h
=====================================
@@ -53,13 +53,13 @@ G_BEGIN_DECLS
* that can be used by the C pre-processor.
*
*/
-#define LIBXFCE4UI_MICRO_VERSION (2)
+#define LIBXFCE4UI_MICRO_VERSION (3)
/**
* LIBXFCE4UI_CHECK_VERSION:
* @major : The major version of the library, i.e. 4
* @minor : The minor version of the library, i.e. 19
- * @micro : The micro release of the library, i.e. 2
+ * @micro : The micro release of the library, i.e. 3
*
* A macro to compare libxfce4ui versions to determine if a particular
* function is available.
=====================================
libxfce4ui/xfce-spawn.c
=====================================
@@ -305,7 +305,7 @@ xfce_spawn_process (GdkScreen *screen,
if (startup_notify == TRUE)
{
/* 'sn_display_new' crashes when used via wayland, so no startup notification support here */
- g_warning ("startup notification not supported for wayland sessions");
+ g_warning_once ("startup notification not supported for wayland sessions");
startup_notify = FALSE;
}
}
=====================================
libxfce4ui/xfce-titled-dialog.c
=====================================
@@ -61,6 +61,7 @@ enum
static GObject *xfce_titled_dialog_constructor (GType type,
guint n_construct_params,
GObjectConstructParam *construct_params);
+static void xfce_titled_dialog_constructed (GObject *object);
static void xfce_titled_dialog_finalize (GObject *object);
static void xfce_titled_dialog_get_property (GObject *object,
guint prop_id,
@@ -72,18 +73,18 @@ static void xfce_titled_dialog_set_property (GObject *objec
GParamSpec *pspec);
static void xfce_titled_dialog_close (GtkDialog *dialog);
static void xfce_titled_dialog_update_window (XfceTitledDialog *titled_dialog);
-static void xfce_titled_dialog_update_icon (XfceTitledDialog *titled_dialog);
+static void xfce_titled_dialog_update_layout (GObject *settings,
+ GParamSpec *pspec,
+ XfceTitledDialog *titled_dialog);
struct _XfceTitledDialogPrivate
{
GtkWidget *headerbar;
- GtkWidget *icon;
GtkWidget *action_area;
GtkWidget *subtitle_label;
GtkWidget *subtitle_separator;
- GdkPixbuf *pixbuf;
gchar *subtitle;
gboolean use_header;
};
@@ -110,6 +111,7 @@ xfce_titled_dialog_class_init (XfceTitledDialogClass *klass)
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->constructor = xfce_titled_dialog_constructor;
+ gobject_class->constructed = xfce_titled_dialog_constructed;
gobject_class->get_property = xfce_titled_dialog_get_property;
gobject_class->set_property = xfce_titled_dialog_set_property;
gobject_class->finalize = xfce_titled_dialog_finalize;
@@ -166,6 +168,10 @@ xfce_titled_dialog_init (XfceTitledDialog *titled_dialog)
settings = gtk_settings_get_default ();
g_object_get (settings, "gtk-dialogs-use-header", &titled_dialog->priv->use_header, NULL);
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+ titled_dialog->priv->action_area = gtk_dialog_get_action_area (GTK_DIALOG (titled_dialog));
+G_GNUC_END_IGNORE_DEPRECATIONS
+
if (titled_dialog->priv->use_header)
{
g_object_set (G_OBJECT (titled_dialog), "use-header-bar", TRUE, NULL);
@@ -177,19 +183,14 @@ xfce_titled_dialog_init (XfceTitledDialog *titled_dialog)
/* Don't reserve vertical space for subtitles */
gtk_header_bar_set_has_subtitle (GTK_HEADER_BAR (titled_dialog->priv->headerbar), FALSE);
- /* Pack the window icon into the headerbar */
- titled_dialog->priv->icon = gtk_image_new ();
- gtk_header_bar_pack_start (GTK_HEADER_BAR (titled_dialog->priv->headerbar), titled_dialog->priv->icon);
- gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (titled_dialog->priv->headerbar), TRUE);
- gtk_widget_show (titled_dialog->priv->icon);
- titled_dialog->priv->pixbuf = NULL;
-
/* Adjust window buttons and window placement */
+ gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (titled_dialog->priv->headerbar), TRUE);
g_signal_connect (G_OBJECT (titled_dialog), "notify::window", G_CALLBACK (xfce_titled_dialog_update_window), NULL);
- /* Make sure to update the icon whenever one of the relevant window properties changes */
- g_signal_connect (G_OBJECT (titled_dialog), "notify::icon", G_CALLBACK (xfce_titled_dialog_update_icon), NULL);
- g_signal_connect (G_OBJECT (titled_dialog), "notify::icon-name", G_CALLBACK (xfce_titled_dialog_update_icon), NULL);
+ /* Add icon to the layout if needed */
+ xfce_titled_dialog_update_layout (G_OBJECT (settings), NULL, titled_dialog);
+ g_signal_connect_object (settings, "notify::gtk-decoration-layout",
+ G_CALLBACK (xfce_titled_dialog_update_layout), titled_dialog, 0);
}
else
{
@@ -224,19 +225,63 @@ xfce_titled_dialog_init (XfceTitledDialog *titled_dialog)
static void
-xfce_titled_dialog_finalize (GObject *object)
+xfce_titled_dialog_constructed (GObject *object)
{
XfceTitledDialog *titled_dialog = XFCE_TITLED_DIALOG (object);
+ GList *children = NULL;
- /* release the subtitle */
- g_free (titled_dialog->priv->subtitle);
+ /* remove and save all buttons from action area */
+ if (titled_dialog->priv->use_header)
+ {
+ children = gtk_container_get_children (GTK_CONTAINER (titled_dialog->priv->action_area));
+
+ for (GList *l = children; l != NULL; l = l->next)
+ {
+ g_object_ref (l->data);
+ gtk_container_remove (GTK_CONTAINER (titled_dialog->priv->action_area), l->data);
+ }
+ }
+
+ G_OBJECT_CLASS (xfce_titled_dialog_parent_class)->constructed (object);
- /* release the pixbuf */
- if (titled_dialog->priv->pixbuf)
+ if (titled_dialog->priv->use_header)
{
- g_object_unref (titled_dialog->priv->pixbuf);
- titled_dialog->priv->pixbuf = NULL;
+ /* undo some unwanted GTK actions in constructed() */
+ GtkWidget *action_box = gtk_widget_get_parent (titled_dialog->priv->action_area);
+ gtk_widget_set_no_show_all (action_box, FALSE);
+ gtk_widget_show (action_box);
+ g_signal_handlers_disconnect_matched (titled_dialog->priv->action_area,
+ G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DATA,
+ g_signal_lookup ("add", GTK_TYPE_CONTAINER),
+ 0, NULL, NULL, titled_dialog);
+
+ /* putting back buttons to action area */
+ for (GList *l = children; l != NULL; l = l->next)
+ {
+ ResponseData *rd = g_object_get_data (l->data, "gtk-dialog-response-data");
+ gint response_id = rd != NULL ? rd->response_id : GTK_RESPONSE_NONE;
+
+ gtk_container_add (GTK_CONTAINER (titled_dialog->priv->action_area), l->data);
+ g_object_unref (l->data);
+
+ /* always add help button as secondary */
+ if (response_id == GTK_RESPONSE_HELP)
+ gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (titled_dialog->priv->action_area), l->data, TRUE);
+ }
+
+ g_list_free (children);
}
+}
+
+
+
+static void
+xfce_titled_dialog_finalize (GObject *object)
+{
+ XfceTitledDialog *titled_dialog = XFCE_TITLED_DIALOG (object);
+
+ /* release the subtitle */
+ g_free (titled_dialog->priv->subtitle);
(*G_OBJECT_CLASS (xfce_titled_dialog_parent_class)->finalize) (object);
}
@@ -323,27 +368,29 @@ xfce_titled_dialog_update_window (XfceTitledDialog *titled_dialog)
static void
-xfce_titled_dialog_update_icon (XfceTitledDialog *titled_dialog)
+xfce_titled_dialog_update_layout (GObject *settings,
+ GParamSpec *pspec,
+ XfceTitledDialog *titled_dialog)
{
- const gchar *icon_name;
+ gchar *layout;
- icon_name = gtk_window_get_icon_name (GTK_WINDOW (titled_dialog));
+ g_object_get (settings, "gtk-decoration-layout", &layout, NULL);
- if (icon_name)
- {
- gtk_image_set_from_icon_name (GTK_IMAGE (titled_dialog->priv->icon), icon_name, GTK_ICON_SIZE_LARGE_TOOLBAR);
- gtk_image_set_pixel_size (GTK_IMAGE (titled_dialog->priv->icon), 24);
- }
- else
+ /* add icon on the far left of the header bar if not already present */
+ if (g_strstr_len (layout, -1, "icon") == NULL)
{
- if (titled_dialog->priv->pixbuf)
- g_object_unref (titled_dialog->priv->pixbuf);
- titled_dialog->priv->pixbuf = gtk_window_get_icon (GTK_WINDOW (titled_dialog));
- gtk_image_set_from_pixbuf (GTK_IMAGE (titled_dialog->priv->icon), titled_dialog->priv->pixbuf);
+ const gchar *separator = (g_strstr_len (layout, -1, ":") == NULL) ? ":" : ",";
+ gchar *layout_with_icon = g_strconcat ("icon", separator, layout, NULL);
+ g_free (layout);
+ layout = layout_with_icon;
}
+
+ gtk_header_bar_set_decoration_layout (GTK_HEADER_BAR (titled_dialog->priv->headerbar), layout);
+ g_free (layout);
}
+
/* Borrowed from gtkdialog.c */
static void
response_data_free (gpointer data)
@@ -418,28 +465,6 @@ add_response_data (GtkDialog *dialog,
-/* Repack all the buttons that would normally end up in the headerbar to the action area */
-static void
-xfce_titled_dialog_repack_dialog (GtkWidget *action_area,
- GtkWidget *headerbar,
- GtkWidget *button,
- gint response_id)
-{
- g_return_if_fail (GTK_IS_WIDGET (action_area));
- g_return_if_fail (GTK_IS_WIDGET (headerbar));
- g_return_if_fail (GTK_IS_WIDGET (button));
-
- g_object_ref (G_OBJECT (button));
- gtk_container_remove (GTK_CONTAINER (headerbar), button);
- gtk_container_add (GTK_CONTAINER (action_area), button);
- g_object_unref (G_OBJECT (button));
- /* always add help buttons as secondary */
- if (response_id == GTK_RESPONSE_HELP)
- gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (action_area), button, TRUE);
-}
-
-
-
/**
* xfce_titled_dialog_new:
*
@@ -480,8 +505,6 @@ xfce_titled_dialog_new_with_buttons (const gchar *title,
const gchar *button_text;
GtkWidget *dialog;
GtkWidget *button;
- GtkWidget *headerbar;
- GtkWidget *action_area;
va_list args;
gint response_id;
@@ -496,11 +519,6 @@ xfce_titled_dialog_new_with_buttons (const gchar *title,
if (G_LIKELY (parent != NULL))
gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- action_area = gtk_dialog_get_action_area (GTK_DIALOG (dialog));
-G_GNUC_END_IGNORE_DEPRECATIONS
- headerbar = gtk_dialog_get_header_bar (GTK_DIALOG (dialog));
-
/* add all additional buttons */
va_start (args, first_button_text);
for (button_text = first_button_text; button_text != NULL; )
@@ -509,9 +527,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
button = gtk_button_new_from_stock (button_text);
G_GNUC_END_IGNORE_DEPRECATIONS
- gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, response_id);
- if (XFCE_TITLED_DIALOG (dialog)->priv->use_header)
- xfce_titled_dialog_repack_dialog (action_area, headerbar, button, response_id);
+ xfce_titled_dialog_add_action_widget (XFCE_TITLED_DIALOG (dialog), button, response_id);
button_text = va_arg (args, const gchar *);
}
va_end (args);
@@ -549,8 +565,6 @@ xfce_titled_dialog_new_with_mixed_buttons (const gchar *title,
const gchar *icon_name;
const gchar *button_text;
GtkWidget *dialog;
- GtkWidget *headerbar;
- GtkWidget *action_area;
va_list args;
gint response_id;
@@ -565,11 +579,6 @@ xfce_titled_dialog_new_with_mixed_buttons (const gchar *title,
if (G_LIKELY (parent != NULL))
gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- action_area = gtk_dialog_get_action_area (GTK_DIALOG (dialog));
-G_GNUC_END_IGNORE_DEPRECATIONS
- headerbar = gtk_dialog_get_header_bar (GTK_DIALOG (dialog));
-
/* add all additional buttons */
icon_name = first_button_icon_name;
button_text = first_button_text;
@@ -586,9 +595,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
button = xfce_gtk_button_new_mixed (icon_name, button_text);
gtk_widget_set_can_default (button, TRUE);
- gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, response_id);
- if (XFCE_TITLED_DIALOG (dialog)->priv->use_header)
- xfce_titled_dialog_repack_dialog (action_area, headerbar, button, response_id);
+ xfce_titled_dialog_add_action_widget (XFCE_TITLED_DIALOG (dialog), button, response_id);
gtk_widget_show (button);
/* this is to pickup for the next button.
@@ -602,10 +609,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
}
va_end (args);
- /* since we just removed all buttons from the headerbar we have to show the close button again explicitly */
- if (XFCE_TITLED_DIALOG (dialog)->priv->use_header)
- gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (headerbar), TRUE);
-
return dialog;
}
@@ -615,33 +618,15 @@ G_GNUC_END_IGNORE_DEPRECATIONS
* xfce_titled_dialog_create_action_area:
* @titled_dialog : a #XfceTitledDialog.
*
- * This function creates a custom action area (of type #GtkButtonBox) and has to
- * be used in combination with #xfce_titled_dialog_add_action_widget.
- *
- * When using the XfceTitledDialogClass directly to create dialogs this function is
- * useful to keep action widgets out of the #GtkHeaderBar in which they would
- * normally end up by calling #gtk_dialog_add_action_widget.
+ * This function is a no-op since 4.19.3.
*
* Since: 4.16
*
+ * Deprecated: 4.19.3
**/
void
xfce_titled_dialog_create_action_area (XfceTitledDialog *titled_dialog)
{
- GtkWidget *dialog_vbox;
-
- g_return_if_fail (XFCE_IS_TITLED_DIALOG (titled_dialog));
-
- /* Create new buttonbox to act as custom action area for the dialog */
- titled_dialog->priv->action_area = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_button_box_set_layout (GTK_BUTTON_BOX (titled_dialog->priv->action_area), GTK_BUTTONBOX_END);
- gtk_box_set_spacing (GTK_BOX (titled_dialog->priv->action_area), 6);
-
- /* Pack the buttonbox in the dialog's main vbox */
- dialog_vbox = gtk_bin_get_child (GTK_BIN (titled_dialog));
- gtk_box_pack_end (GTK_BOX (dialog_vbox), titled_dialog->priv->action_area, FALSE, TRUE, 0);
- gtk_box_reorder_child (GTK_BOX (dialog_vbox), titled_dialog->priv->action_area, 0);
- gtk_widget_show (titled_dialog->priv->action_area);
}
@@ -652,8 +637,7 @@ xfce_titled_dialog_create_action_area (XfceTitledDialog *titled_dialog)
* @button_text : text of button.
* @response_id : response ID for @child.
*
- * This function is a replacement for #gtk_dialog_add_button and assumes that
- * you have called #xfce_titled_dialog_create_action_area before.
+ * This function is a replacement for #gtk_dialog_add_button.
*
* Buttons with #GTK_RESPONSE_HELP will be added to the secondary group of children
* (see #gtk_button_box_set_child_secondary for reference).
@@ -690,8 +674,7 @@ xfce_titled_dialog_add_button (XfceTitledDialog *titled_dialog,
* @child : an activatable widget.
* @response_id : response ID for @child.
*
- * This function is a replacement for #gtk_dialog_add_action_widget and assumes that
- * you have called #xfce_titled_dialog_create_action_area before.
+ * This function is a replacement for #gtk_dialog_add_action_widget.
*
* Children with #GTK_RESPONSE_HELP will be added to the secondary group of children
* (see #gtk_button_box_set_child_secondary for reference).
@@ -738,17 +721,12 @@ void
xfce_titled_dialog_set_default_response (XfceTitledDialog *titled_dialog,
gint response_id)
{
- GtkWidget *action_area;
GList *children;
GList *tmp_list;
g_return_if_fail (XFCE_IS_TITLED_DIALOG (titled_dialog));
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- action_area = gtk_dialog_get_action_area (GTK_DIALOG (titled_dialog));
-G_GNUC_END_IGNORE_DEPRECATIONS
-
- children = gtk_container_get_children (GTK_CONTAINER (action_area));
+ children = gtk_container_get_children (GTK_CONTAINER (titled_dialog->priv->action_area));
tmp_list = children;
while (tmp_list != NULL)
{
@@ -756,7 +734,10 @@ G_GNUC_END_IGNORE_DEPRECATIONS
ResponseData *rd = get_response_data (widget, FALSE);
if (rd && rd->response_id == response_id)
- gtk_window_set_default (GTK_WINDOW (titled_dialog), widget);
+ {
+ gtk_widget_set_can_default (widget, TRUE);
+ gtk_window_set_default (GTK_WINDOW (titled_dialog), widget);
+ }
tmp_list = tmp_list->next;
}
=====================================
libxfce4ui/xfce-titled-dialog.h
=====================================
@@ -82,7 +82,7 @@ GtkWidget *xfce_titled_dialog_new_with_mixed_buttons (const gchar
const gchar *first_button_text,
...) G_GNUC_MALLOC;
-void xfce_titled_dialog_create_action_area (XfceTitledDialog *titled_dialog);
+void xfce_titled_dialog_create_action_area (XfceTitledDialog *titled_dialog) G_GNUC_DEPRECATED;
GtkWidget *xfce_titled_dialog_add_button (XfceTitledDialog *titled_dialog,
const gchar *button_text,
gint response_id);
=====================================
po/da.gmo
=====================================
Binary files a/po/da.gmo and b/po/da.gmo differ
=====================================
po/da.po
=====================================
@@ -11,14 +11,14 @@
# olegb <olegb at omgwtf.dk>, 2008
# olegb <olegb at omgwtf.dk>, 2008
# Per Kongstad <p_kongstad at op.pl>, 2009
-# scootergrisen, 2016-2022
+# scootergrisen, 2016-2023
msgid ""
msgstr ""
"Project-Id-Version: Libxfce4ui\n"
"Report-Msgid-Bugs-To: https://gitlab.xfce.org/\n"
-"POT-Creation-Date: 2023-04-06 12:45+0200\n"
+"POT-Creation-Date: 2023-05-30 00:45+0200\n"
"PO-Revision-Date: 2013-07-02 20:33+0000\n"
-"Last-Translator: scootergrisen, 2016-2022\n"
+"Last-Translator: scootergrisen, 2016-2023\n"
"Language-Team: Danish (http://app.transifex.com/xfce/libxfce4ui/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -224,7 +224,7 @@ msgstr "Genvejsredigering"
#: libxfce4kbd-private/xfce-shortcuts-editor.c:380
msgid "The current shortcut. Click to edit..."
-msgstr ""
+msgstr "Nuværende genvej. Klik for at redigere ..."
#: libxfce4kbd-private/xfce-shortcuts-editor.c:391
msgid "Clear the shortcut"
@@ -394,19 +394,19 @@ msgstr "Fuldskærm til/fra"
#: libxfce4kbd-private/xfce-shortcuts-xfwm4.c:63
msgid "Move window to lower monitor"
-msgstr ""
+msgstr "Flyt vindue til skærm nedenfor"
#: libxfce4kbd-private/xfce-shortcuts-xfwm4.c:64
msgid "Move window to left monitor"
-msgstr ""
+msgstr "Flyt vindue til venstre skærm"
#: libxfce4kbd-private/xfce-shortcuts-xfwm4.c:65
msgid "Move window to right monitor"
-msgstr ""
+msgstr "Flyt vindue til højre skærm"
#: libxfce4kbd-private/xfce-shortcuts-xfwm4.c:66
msgid "Move window to upper monitor"
-msgstr ""
+msgstr "Flyt vindue til skærm ovenfor"
#: libxfce4kbd-private/xfce-shortcuts-xfwm4.c:67
msgid "Move window to upper workspace"
@@ -791,10 +791,6 @@ msgstr "Oversættere"
msgid "Previous contributors"
msgstr "Tidligere bidragydere"
-#: xfce4-about/xfce4-about.desktop.in:6
-msgid "org.xfce.about"
-msgstr ""
-
#: xfce4-about/xfce4-about.desktop.in:11
msgid "About Xfce"
msgstr "Om Xfce"
@@ -854,11 +850,11 @@ msgstr "Xfce-version"
#: xfce4-about/xfce4-about-dialog.glade:564
msgid "GTK Version"
-msgstr ""
+msgstr "GTK-version"
#: xfce4-about/xfce4-about-dialog.glade:589
msgid "Kernel Version"
-msgstr ""
+msgstr "Kernelversion"
#: xfce4-about/xfce4-about-dialog.glade:615
msgid "CPU"
=====================================
po/el.gmo
=====================================
Binary files a/po/el.gmo and b/po/el.gmo differ
=====================================
po/el.po
=====================================
@@ -17,9 +17,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Libxfce4ui\n"
"Report-Msgid-Bugs-To: https://gitlab.xfce.org/\n"
-"POT-Creation-Date: 2023-04-06 12:45+0200\n"
+"POT-Creation-Date: 2023-05-30 00:45+0200\n"
"PO-Revision-Date: 2013-07-02 20:33+0000\n"
-"Last-Translator: Πέτρος Σαμαράς <psamaras1 at gmail.com>, 2017\n"
+"Last-Translator: Ioannis LM, 2022-2023\n"
"Language-Team: Greek (http://app.transifex.com/xfce/libxfce4ui/language/el/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -792,10 +792,6 @@ msgstr "Μεταφραστές"
msgid "Previous contributors"
msgstr "Προηγούμενοι συντελεστές"
-#: xfce4-about/xfce4-about.desktop.in:6
-msgid "org.xfce.about"
-msgstr ""
-
#: xfce4-about/xfce4-about.desktop.in:11
msgid "About Xfce"
msgstr "Περί του Xfce"
=====================================
po/libxfce4ui.pot
=====================================
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: libxfce4ui 4.19.2\n"
+"Project-Id-Version: libxfce4ui 4.19.3\n"
"Report-Msgid-Bugs-To: https://gitlab.xfce.org/xfce/libxfce4ui/-/issues\n"
-"POT-Creation-Date: 2023-05-29 17:47+0200\n"
+"POT-Creation-Date: 2023-10-14 09:43+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
@@ -38,7 +38,7 @@ msgstr ""
#. Create cancel button
#: libxfce4ui/xfce-dialogs.c:275 libxfce4ui/xfce-dialogs.c:533
-#: libxfce4kbd-private/xfce-shortcut-dialog.c:256
+#: libxfce4kbd-private/xfce-shortcut-dialog.c:254
msgid "_Cancel"
msgstr ""
@@ -262,20 +262,20 @@ msgstr ""
msgid "Shortcut"
msgstr ""
-#: libxfce4kbd-private/xfce-shortcut-dialog.c:250
+#: libxfce4kbd-private/xfce-shortcut-dialog.c:248
msgid "Clear"
msgstr ""
-#: libxfce4kbd-private/xfce-shortcut-dialog.c:273
+#: libxfce4kbd-private/xfce-shortcut-dialog.c:271
#, c-format
msgid "Press keyboard keys to trigger the %s '%s'."
msgstr ""
-#: libxfce4kbd-private/xfce-shortcut-dialog.c:295
+#: libxfce4kbd-private/xfce-shortcut-dialog.c:293
msgid "Please press a key"
msgstr ""
-#: libxfce4kbd-private/xfce-shortcut-dialog.c:350
+#: libxfce4kbd-private/xfce-shortcut-dialog.c:348
msgid "Could not grab the keyboard."
msgstr ""
@@ -599,120 +599,120 @@ msgstr ""
msgid "Version information"
msgstr ""
-#: xfce4-about/main.c:128
+#: xfce4-about/main.c:154
msgid "GPUs"
msgstr ""
-#: xfce4-about/main.c:146
+#: xfce4-about/main.c:172
msgid "Window Manager"
msgstr ""
-#: xfce4-about/main.c:147
+#: xfce4-about/main.c:173
msgid "Handles the placement of windows on the screen."
msgstr ""
-#: xfce4-about/main.c:151
+#: xfce4-about/main.c:177
msgid "Panel"
msgstr ""
-#: xfce4-about/main.c:152
+#: xfce4-about/main.c:178
msgid "Provides a home for window buttons, launchers, app menu and more."
msgstr ""
-#: xfce4-about/main.c:156
+#: xfce4-about/main.c:182
msgid "Desktop Manager"
msgstr ""
-#: xfce4-about/main.c:157
+#: xfce4-about/main.c:183
msgid "Sets desktop backgrounds, handles icons and more."
msgstr ""
-#: xfce4-about/main.c:161
+#: xfce4-about/main.c:187
msgid "File Manager"
msgstr ""
-#: xfce4-about/main.c:162
+#: xfce4-about/main.c:188
msgid "Manages your files in a modern, easy-to-use and fast way."
msgstr ""
-#: xfce4-about/main.c:166
+#: xfce4-about/main.c:192
msgid "Volume Manager"
msgstr ""
-#: xfce4-about/main.c:167
+#: xfce4-about/main.c:193
msgid "Manages removable drives and media for Thunar."
msgstr ""
-#: xfce4-about/main.c:171
+#: xfce4-about/main.c:197
msgid "Session Manager"
msgstr ""
-#: xfce4-about/main.c:172
+#: xfce4-about/main.c:198
msgid ""
"Saves and restores your session, handles startup, autostart and shutdown."
msgstr ""
-#: xfce4-about/main.c:176
+#: xfce4-about/main.c:202
msgid "Settings Manager"
msgstr ""
-#: xfce4-about/main.c:177
+#: xfce4-about/main.c:203
msgid "Configures appearance, display, keyboard and mouse settings."
msgstr ""
-#: xfce4-about/main.c:181
+#: xfce4-about/main.c:207
msgid "Application Finder"
msgstr ""
-#: xfce4-about/main.c:182
+#: xfce4-about/main.c:208
msgid "Quickly finds and launches applications installed on your system."
msgstr ""
-#: xfce4-about/main.c:186
+#: xfce4-about/main.c:212
msgid "Settings Daemon"
msgstr ""
-#: xfce4-about/main.c:187
+#: xfce4-about/main.c:213
msgid "Stores your settings in a D-Bus-based configuration system."
msgstr ""
-#: xfce4-about/main.c:191
+#: xfce4-about/main.c:217
msgid "A Menu Library"
msgstr ""
-#: xfce4-about/main.c:192
+#: xfce4-about/main.c:218
msgid "Implements a freedesktop.org compliant menu based on GLib and GIO."
msgstr ""
-#: xfce4-about/main.c:196
+#: xfce4-about/main.c:222
msgid "Thumbnails Service"
msgstr ""
-#: xfce4-about/main.c:197
+#: xfce4-about/main.c:223
msgid "Implements the thumbnail management D-Bus specification."
msgstr ""
-#: xfce4-about/main.c:251
+#: xfce4-about/main.c:277
msgid "Please see <https://www.xfce.org/about/credits>"
msgstr ""
-#: xfce4-about/main.c:312
+#: xfce4-about/main.c:338
msgid ""
"If you know of anyone missing from this list; don't hesitate and file a bug "
"on <https://gitlab.xfce.org/xfce/libxfce4ui/-/issues> ."
msgstr ""
-#: xfce4-about/main.c:316
+#: xfce4-about/main.c:342
msgid "Thanks to all who helped making this software available!"
msgstr ""
-#: xfce4-about/main.c:333
+#: xfce4-about/main.c:359
msgid ""
"Xfce 4 is copyright Olivier Fourdan (fourdan at xfce.org). The different "
"components are copyrighted by their respective authors."
msgstr ""
-#: xfce4-about/main.c:338
+#: xfce4-about/main.c:364
msgid ""
"The libxfce4ui, libxfce4util and exo packages are distributed under the "
"terms of the GNU Library General Public License as published by the Free "
@@ -720,7 +720,7 @@ msgid ""
"any later version."
msgstr ""
-#: xfce4-about/main.c:345
+#: xfce4-about/main.c:371
msgid ""
"The packages thunar, xfce4-appfinder, xfce4-panel, xfce4-session, xfce4-"
"settings, xfconf, xfdesktop and xfwm4 are distributed under the terms of the "
@@ -728,25 +728,25 @@ msgid ""
"either version 2 of the License, or (at your option) any later version."
msgstr ""
-#: xfce4-about/main.c:491
+#: xfce4-about/main.c:517
#, c-format
msgid "Type '%s --help' for usage information."
msgstr ""
-#: xfce4-about/main.c:497
+#: xfce4-about/main.c:523
msgid "Unable to initialize GTK+."
msgstr ""
-#: xfce4-about/main.c:506
+#: xfce4-about/main.c:532
msgid "The Xfce development team. All rights reserved."
msgstr ""
-#: xfce4-about/main.c:507
+#: xfce4-about/main.c:533
#, c-format
msgid "Please report bugs to <%s>."
msgstr ""
-#: xfce4-about/main.c:517
+#: xfce4-about/main.c:543
msgid "Failed to load interface"
msgstr ""
=====================================
po/pt_BR.gmo
=====================================
Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ
=====================================
po/pt_BR.po
=====================================
@@ -1,21 +1,26 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Xfce
-# This file is distributed under the same license as the libxfce4ui.xfce-4-18 package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+# This file is distributed under the same license as the libxfce4ui.master package.
#
# Translators:
-# Xfce Bot <transifex at xfce.org>, 2023
-# Michael Martins <michaelfm21 at gmail.com>, 2023
-#
-#, fuzzy
+# Andre Miranda <andre at andreldm.com>, 2017,2019,2021-2022
+# Andre Miranda <andre at andreldm.com>, 2016
+# Andre Miranda <andre at andreldm.com>, 2015
+# C. E., 2020
+# Fábio Nogueira <deb-user-ba at ubuntu.com>, 2008
+# Lucas Wilm <lucaswilm at gmail.com>, 2020
+# Michael Martins <michaelfm21 at gmail.com>, 2019-2020
+# Rafael Fontenelle <rffontenelle at gmail.com>, 2019
+# The Cat, 2020
+# Wellington Almeida <wsalmeida6 at gmail.com>, 2021
msgid ""
msgstr ""
-"Project-Id-Version: libxfce4ui.xfce-4-18\n"
+"Project-Id-Version: Libxfce4ui\n"
"Report-Msgid-Bugs-To: https://gitlab.xfce.org/\n"
-"POT-Creation-Date: 2023-04-06 12:45+0200\n"
-"PO-Revision-Date: 2023-02-20 11:56+0000\n"
-"Last-Translator: Michael Martins <michaelfm21 at gmail.com>, 2023\n"
-"Language-Team: Portuguese (Brazil) (https://app.transifex.com/xfce/teams/16840/pt_BR/)\n"
+"POT-Creation-Date: 2023-05-30 00:45+0200\n"
+"PO-Revision-Date: 2013-07-02 20:33+0000\n"
+"Last-Translator: Andre Miranda <andre at andreldm.com>, 2017,2019,2021-2022\n"
+"Language-Team: Portuguese (Brazil) (http://app.transifex.com/xfce/libxfce4ui/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -29,7 +34,7 @@ msgstr "Falha ao abrir o navegador web para mostrar a documentação online"
#: libxfce4ui/xfce-dialogs.c:265
#, c-format
msgid "Do you want to read the %s manual online?"
-msgstr "Você quer ler o manual online do %s?"
+msgstr "Você quer ler online o manual do %s?"
#: libxfce4ui/xfce-dialogs.c:267
msgid "Do you want to read the manual online?"
@@ -39,9 +44,7 @@ msgstr "Você quer ler o manual online?"
msgid ""
"You will be redirected to the documentation website where the help pages are"
" maintained and translated."
-msgstr ""
-"Você será redirecionado ao site de documentação, onde as páginas de ajuda "
-"são mantidas e traduzidas."
+msgstr "Você será redirecionado ao site de documentação, onde as páginas de ajuda são mantidas e traduzidas."
#. Create cancel button
#: libxfce4ui/xfce-dialogs.c:275 libxfce4ui/xfce-dialogs.c:533
@@ -82,18 +85,14 @@ msgstr "Fechar janela com várias abas?"
msgid ""
"This window has multiple tabs open. Closing this window will also close all "
"its tabs."
-msgstr ""
-"Esta janela possui múltiplas abas abertas. Fechar esta janela também fechará"
-" todas as suas abas."
+msgstr "Esta janela possui múltiplas abas abertas. Fechar esta janela também fechará todas as suas abas."
#: libxfce4ui/xfce-dialogs.c:523
#, c-format
msgid ""
"This window has %d tabs open. Closing this window will also close all its "
"tabs."
-msgstr ""
-"Esta janela tem %d abas abertas. Fechar esta janela também fechará todas as "
-"suas abas."
+msgstr "Esta janela tem %d abas abertas. Fechar esta janela também fechará todas as suas abas."
#: libxfce4ui/xfce-dialogs.c:529
msgid "Warning"
@@ -146,9 +145,7 @@ msgstr "O gerenciador de sessão não retornou um ID de cliente válido"
msgid ""
"Working directory \"%s\" does not exist. It won't be used when spawning "
"\"%s\"."
-msgstr ""
-"O diretório de trabalho \"%s\" não existe. Ele não será usado quando gerando"
-" \"%s\"."
+msgstr "O diretório de trabalho \"%s\" não existe. Ele não será usado quando gerando \"%s\"."
#. retrieve the error and warning messages
#: libxfce4ui/xfce-filename-input.c:232
@@ -192,8 +189,7 @@ msgstr "Manter \"%s\""
msgid ""
"This shortcut is already being used for the command '%s'. Which action do "
"you want to use?"
-msgstr ""
-"Este atalho já está em uso pelo comando \"%s\". Qual ação você deseja usar?"
+msgstr "Este atalho já está em uso pelo comando \"%s\". Qual ação você deseja usar?"
#: libxfce4kbd-private/xfce-shortcuts.c:55
#, c-format
@@ -631,9 +627,7 @@ msgstr "Painel"
#: xfce4-about/main.c:152
msgid "Provides a home for window buttons, launchers, app menu and more."
-msgstr ""
-"Fornece um lugar para os botões de janela, lançadores, menu de aplicações e "
-"mais."
+msgstr "Fornece um lugar para os botões de janela, lançadores, menu de aplicações e mais."
#: xfce4-about/main.c:156
msgid "Desktop Manager"
@@ -666,9 +660,7 @@ msgstr "Gerenciador de sessão"
#: xfce4-about/main.c:172
msgid ""
"Saves and restores your session, handles startup, autostart and shutdown."
-msgstr ""
-"Salva e restaura sua sessão, controla inicialização, início automático e "
-"desligamento."
+msgstr "Salva e restaura sua sessão, controla inicialização, início automático e desligamento."
#: xfce4-about/main.c:176
msgid "Settings Manager"
@@ -692,8 +684,7 @@ msgstr "Daemon de configurações"
#: xfce4-about/main.c:187
msgid "Stores your settings in a D-Bus-based configuration system."
-msgstr ""
-"Armazena suas configurações em um sistema de configuração baseado em D-Bus."
+msgstr "Armazena suas configurações em um sistema de configuração baseado em D-Bus."
#: xfce4-about/main.c:191
msgid "A Menu Library"
@@ -701,8 +692,7 @@ msgstr "Uma Biblioteca de Menus"
#: xfce4-about/main.c:192
msgid "Implements a freedesktop.org compliant menu based on GLib and GIO."
-msgstr ""
-"Implementa um menu compatível com freedesktop.org baseado em GLib e GIO."
+msgstr "Implementa um menu compatível com freedesktop.org baseado em GLib e GIO."
#: xfce4-about/main.c:196
msgid "Thumbnails Service"
@@ -720,22 +710,17 @@ msgstr "Consulte <https://www.xfce.org/about/credits>"
msgid ""
"If you know of anyone missing from this list; don't hesitate and file a bug "
"on <https://gitlab.xfce.org/xfce/libxfce4ui/-/issues> ."
-msgstr ""
-"Se você conhece alguém que está faltando nesta lista, não hesite e registre "
-"um relatório de erro em <https://gitlab.xfce.org/xfce/libxfce4ui/-/issues>"
+msgstr "Se você conhece alguém que está faltando nesta lista, não hesite e registre um relatório de erro em <https://gitlab.xfce.org/xfce/libxfce4ui/-/issues>"
#: xfce4-about/main.c:316
msgid "Thanks to all who helped making this software available!"
-msgstr ""
-"Obrigado a todos aqueles que ajudaram tornar este software disponível."
+msgstr "Obrigado a todos aqueles que ajudaram tornar este software disponível."
#: xfce4-about/main.c:333
msgid ""
"Xfce 4 is copyright Olivier Fourdan (fourdan at xfce.org). The different "
"components are copyrighted by their respective authors."
-msgstr ""
-"O Xfce 4 é uma marca registrada de Olivier Fourdan (fourdan at xfce.org). Os "
-"componentes diferentes são marcas registradas de seus respectivos autores."
+msgstr "O Xfce 4 é uma marca registrada de Olivier Fourdan (fourdan at xfce.org). Os componentes diferentes são marcas registradas de seus respectivos autores."
#: xfce4-about/main.c:338
msgid ""
@@ -743,11 +728,7 @@ msgid ""
"terms of the GNU Library General Public License as published by the Free "
"Software Foundation; either version 2 of the License, or (at your option) "
"any later version."
-msgstr ""
-"Os pacotes libxfce4ui, libxfce4util e exo são distribuídos sob os termos da "
-"Licença Pública Geral de Biblioteca GNU como publicado pela Free Software "
-"Foundation, assim como a versão 2 da licença ou (à sua opção) qualquer "
-"versão posterior."
+msgstr "Os pacotes libxfce4ui, libxfce4util e exo são distribuídos sob os termos da Licença Pública Geral de Biblioteca GNU como publicado pela Free Software Foundation, assim como a versão 2 da licença ou (à sua opção) qualquer versão posterior."
#: xfce4-about/main.c:345
msgid ""
@@ -756,12 +737,7 @@ msgid ""
"of the GNU General Public License as published by the Free Software "
"Foundation; either version 2 of the License, or (at your option) any later "
"version."
-msgstr ""
-"Os pacotes thunar, xfce4-appfinder, xfce4-panel, xfce4-session, "
-"xfce4-settings, xfce-xfconf, xfdesktop e xfwm4 são distribuídos sob os "
-"termos da Licença Pública Geral GNU como publicado pela Free Software "
-"Foundation, assim como a versão 2 da licença ou (à sua opção) qualquer "
-"versão posterior."
+msgstr "Os pacotes thunar, xfce4-appfinder, xfce4-panel, xfce4-session, xfce4-settings, xfce-xfconf, xfdesktop e xfwm4 são distribuídos sob os termos da Licença Pública Geral GNU como publicado pela Free Software Foundation, assim como a versão 2 da licença ou (à sua opção) qualquer versão posterior."
#: xfce4-about/main.c:491
#, c-format
@@ -816,10 +792,6 @@ msgstr "Tradutores"
msgid "Previous contributors"
msgstr "Contribuidores anteriores"
-#: xfce4-about/xfce4-about.desktop.in:6
-msgid "org.xfce.about"
-msgstr ""
-
#: xfce4-about/xfce4-about.desktop.in:11
msgid "About Xfce"
msgstr "Sobre o Xfce"
@@ -905,9 +877,7 @@ msgstr "Sistema"
msgid ""
"Xfce is a collection of programs that together provide a full-featured desktop environment.\n"
"The following programs are part of the Xfce core:"
-msgstr ""
-"O Xfce é uma coleção de programas que juntos fornecem um ambiente de desktop completo.\n"
-"Os programas seguintes fazem parte do núcleo do Xfce:"
+msgstr "O Xfce é uma coleção de programas que juntos fornecem um ambiente de desktop completo.\nOs programas seguintes fazem parte do núcleo do Xfce:"
#: xfce4-about/xfce4-about-dialog.glade:779
msgid ""
@@ -918,14 +888,7 @@ msgid ""
"Thank you for your interest in Xfce.\n"
"\n"
"\t- The Xfce Development Team"
-msgstr ""
-"O Xfce também é uma plataforma de desenvolvimento que fornece várias bibliotecas que ajudam os programadores a criar aplicativos que se encaixam bem no ambiente de desktop.\n"
-"\n"
-"Os componentes do Xfce são licenciados sob licenças gratuitas ou de código aberto; GPL ou BSDL para aplicativos e LGPL ou BSDL para bibliotecas. Veja a documentação, o código fonte ou o site do Xfce (<a href=\"https://www.xfce.org\">https://www.xfce.org</a>) para mais informação.\n"
-"\n"
-"Agradecemos seu interesse pelo Xfce.\n"
-"\n"
-"\t- A equipe de desenvolvimento do Xfce"
+msgstr "O Xfce também é uma plataforma de desenvolvimento que fornece várias bibliotecas que ajudam os programadores a criar aplicativos que se encaixam bem no ambiente de desktop.\n\nOs componentes do Xfce são licenciados sob licenças gratuitas ou de código aberto; GPL ou BSDL para aplicativos e LGPL ou BSDL para bibliotecas. Veja a documentação, o código fonte ou o site do Xfce (<a href=\"https://www.xfce.org\">https://www.xfce.org</a>) para mais informação.\n\nAgradecemos seu interesse pelo Xfce.\n\n\t- A equipe de desenvolvimento do Xfce"
#: xfce4-about/xfce4-about-dialog.glade:809
msgid "About"
@@ -984,9 +947,7 @@ msgstr "%s; Build ID: %s"
msgid ""
"A file named \"%s\" already exists in this directory, the file hasn't been "
"added."
-msgstr ""
-"Um arquivo chamado \"%s\" já existe neste diretório, o arquivo não foi "
-"adicionado."
+msgstr "Um arquivo chamado \"%s\" já existe neste diretório, o arquivo não foi adicionado."
#: tests/test-ui.c:122
msgid "Failed to migrate the old panel configuration"
=====================================
xfce4-about/about-dialog-ui.h
=====================================
@@ -654,262 +654,262 @@ static const char xfce_about_dialog_ui[] =
">start</property><property name=\"margin_left\">12</property><property "
"name=\"margin_right\">12</property><property name=\"margin_top\">18</pr"
"operty><property name=\"margin_bottom\">12</property><property name=\"s"
- "pacing\">36</property><child><object class=\"GtkImage\"><property name="
- "\"visible\">True</property><property name=\"can_focus\">False</property"
- "><property name=\"valign\">start</property><property name=\"pixel_size\""
- ">128</property><property name=\"icon_name\">computer</property><propert"
- "y name=\"icon_size\">6</property></object><packing><property name=\"exp"
- "and\">False</property><property name=\"fill\">True</property><property "
- "name=\"position\">0</property></packing></child><child><object class=\""
- "GtkGrid\" id=\"about-system\"><property name=\"visible\">True</property"
- "><property name=\"can_focus\">False</property><property name=\"valign\""
- ">center</property><property name=\"row_spacing\">6</property><property "
- "name=\"column_spacing\">12</property><child><object class=\"GtkLabel\">"
- "<property name=\"visible\">True</property><property name=\"sensitive\">"
- "False</property><property name=\"can_focus\">False</property><property "
- "name=\"label\" translatable=\"yes\">Device</property><property name=\"x"
- "align\">1</property></object><packing><property name=\"left_attach\">0<"
- "/property><property name=\"top_attach\">0</property></packing></child><"
- "child><object class=\"GtkLabel\" id=\"device\"><property name=\"visible"
- "\">True</property><property name=\"can_focus\">False</property><propert"
- "y name=\"label\" translatable=\"yes\">label</property><property name=\""
- "xalign\">0</property></object><packing><property name=\"left_attach\">1"
- "</property><property name=\"top_attach\">0</property></packing></child>"
- "<child><object class=\"GtkLabel\"><property name=\"visible\">True</prop"
- "erty><property name=\"sensitive\">False</property><property name=\"can_"
- "focus\">False</property><property name=\"label\" translatable=\"yes\">O"
- "S Name</property><property name=\"xalign\">1</property></object><packin"
- "g><property name=\"left_attach\">0</property><property name=\"top_attac"
- "h\">1</property></packing></child><child><object class=\"GtkLabel\" id="
- "\"osname\"><property name=\"visible\">True</property><property name=\"c"
- "an_focus\">False</property><property name=\"label\" translatable=\"yes\""
- ">label</property><property name=\"xalign\">0</property></object><packin"
- "g><property name=\"left_attach\">1</property><property name=\"top_attac"
- "h\">1</property></packing></child><child><object class=\"GtkLabel\"><pr"
- "operty name=\"visible\">True</property><property name=\"sensitive\">Fal"
- "se</property><property name=\"can_focus\">False</property><property nam"
- "e=\"label\" translatable=\"yes\">OS Type</property><property name=\"xal"
- "ign\">1</property></object><packing><property name=\"left_attach\">0</p"
- "roperty><property name=\"top_attach\">2</property></packing></child><ch"
- "ild><object class=\"GtkLabel\" id=\"ostype\"><property name=\"visible\""
+ "pacing\">36</property><child><object class=\"GtkImage\" id=\"os-logo\">"
+ "<property name=\"visible\">True</property><property name=\"can_focus\">"
+ "False</property><property name=\"valign\">start</property><property nam"
+ "e=\"pixel_size\">128</property><property name=\"icon_name\">computer</p"
+ "roperty><property name=\"icon_size\">6</property></object><packing><pro"
+ "perty name=\"expand\">False</property><property name=\"fill\">True</pro"
+ "perty><property name=\"position\">0</property></packing></child><child>"
+ "<object class=\"GtkGrid\" id=\"about-system\"><property name=\"visible\""
">True</property><property name=\"can_focus\">False</property><property "
- "name=\"label\" translatable=\"yes\">label</property><property name=\"xa"
- "lign\">0</property></object><packing><property name=\"left_attach\">1</"
- "property><property name=\"top_attach\">2</property></packing></child><c"
- "hild><object class=\"GtkLabel\" id=\"vendor-info-label\"><property name"
- "=\"visible\">True</property><property name=\"sensitive\">False</propert"
- "y><property name=\"can_focus\">False</property><property name=\"label\""
- " translatable=\"yes\">Distributor</property><property name=\"xalign\">1"
- "</property></object><packing><property name=\"left_attach\">0</property"
- "><property name=\"top_attach\">3</property></packing></child><child><ob"
- "ject class=\"GtkLabel\" id=\"vendor-info\"><property name=\"visible\">T"
- "rue</property><property name=\"can_focus\">False</property><property na"
- "me=\"label\" translatable=\"yes\">label</property><property name=\"xali"
- "gn\">0</property></object><packing><property name=\"left_attach\">1</pr"
- "operty><property name=\"top_attach\">3</property></packing></child><chi"
- "ld><object class=\"GtkLabel\"><property name=\"visible\">True</property"
- "><property name=\"sensitive\">False</property><property name=\"can_focu"
- "s\">False</property><property name=\"margin_top\">12</property><propert"
- "y name=\"label\" translatable=\"yes\">Xfce Version</property><property "
- "name=\"xalign\">1</property></object><packing><property name=\"left_att"
- "ach\">0</property><property name=\"top_attach\">4</property></packing><"
- "/child><child><object class=\"GtkLabel\" id=\"xfce-version\"><property "
- "name=\"visible\">True</property><property name=\"can_focus\">False</pro"
- "perty><property name=\"margin_top\">12</property><property name=\"label"
- "\" translatable=\"yes\">label</property><property name=\"xalign\">0</pr"
- "operty></object><packing><property name=\"left_attach\">1</property><pr"
- "operty name=\"top_attach\">4</property></packing></child><child><object"
- " class=\"GtkLabel\"><property name=\"visible\">True</property><property"
- " name=\"sensitive\">False</property><property name=\"can_focus\">False<"
- "/property><property name=\"label\" translatable=\"yes\">GTK Version</pr"
- "operty><property name=\"xalign\">1</property></object><packing><propert"
- "y name=\"left_attach\">0</property><property name=\"top_attach\">5</pro"
- "perty></packing></child><child><object class=\"GtkLabel\" id=\"gtk-vers"
- "ion\"><property name=\"visible\">True</property><property name=\"can_fo"
- "cus\">False</property><property name=\"label\" translatable=\"yes\">lab"
- "el</property><property name=\"xalign\">0</property></object><packing><p"
- "roperty name=\"left_attach\">1</property><property name=\"top_attach\">"
- "5</property></packing></child><child><object class=\"GtkLabel\"><proper"
- "ty name=\"visible\">True</property><property name=\"sensitive\">False</"
- "property><property name=\"can_focus\">False</property><property name=\""
- "label\" translatable=\"yes\">Kernel Version</property><property name=\""
- "xalign\">1</property></object><packing><property name=\"left_attach\">0"
- "</property><property name=\"top_attach\">6</property></packing></child>"
- "<child><object class=\"GtkLabel\" id=\"kernel-version\"><property name="
- "\"visible\">True</property><property name=\"can_focus\">False</property"
- "><property name=\"label\" translatable=\"yes\">label</property><propert"
- "y name=\"xalign\">0</property></object><packing><property name=\"left_a"
- "ttach\">1</property><property name=\"top_attach\">6</property></packing"
- "></child><child><object class=\"GtkLabel\"><property name=\"visible\">T"
- "rue</property><property name=\"sensitive\">False</property><property na"
- "me=\"can_focus\">False</property><property name=\"margin_top\">12</prop"
- "erty><property name=\"label\" translatable=\"yes\">CPU</property><prope"
- "rty name=\"xalign\">1</property></object><packing><property name=\"left"
- "_attach\">0</property><property name=\"top_attach\">7</property></packi"
- "ng></child><child><object class=\"GtkLabel\" id=\"cpu\"><property name="
- "\"visible\">True</property><property name=\"can_focus\">False</property"
- "><property name=\"margin_top\">12</property><property name=\"label\" tr"
- "anslatable=\"yes\">label</property><property name=\"xalign\">0</propert"
- "y></object><packing><property name=\"left_attach\">1</property><propert"
- "y name=\"top_attach\">7</property></packing></child><child><object clas"
+ "name=\"valign\">center</property><property name=\"row_spacing\">6</prop"
+ "erty><property name=\"column_spacing\">12</property><child><object clas"
"s=\"GtkLabel\"><property name=\"visible\">True</property><property name"
"=\"sensitive\">False</property><property name=\"can_focus\">False</prop"
- "erty><property name=\"label\" translatable=\"yes\">Memory</property><pr"
+ "erty><property name=\"label\" translatable=\"yes\">Device</property><pr"
"operty name=\"xalign\">1</property></object><packing><property name=\"l"
- "eft_attach\">0</property><property name=\"top_attach\">8</property></pa"
- "cking></child><child><object class=\"GtkLabel\" id=\"memory\"><property"
+ "eft_attach\">0</property><property name=\"top_attach\">0</property></pa"
+ "cking></child><child><object class=\"GtkLabel\" id=\"device\"><property"
" name=\"visible\">True</property><property name=\"can_focus\">False</pr"
"operty><property name=\"label\" translatable=\"yes\">label</property><p"
"roperty name=\"xalign\">0</property></object><packing><property name=\""
- "left_attach\">1</property><property name=\"top_attach\">8</property></p"
- "acking></child><child><object class=\"GtkLabel\" id=\"gpu-label\"><prop"
- "erty name=\"visible\">True</property><property name=\"sensitive\">False"
- "</property><property name=\"can_focus\">False</property><property name="
- "\"label\" translatable=\"yes\">GPU</property><property name=\"xalign\">"
- "1</property></object><packing><property name=\"left_attach\">0</propert"
- "y><property name=\"top_attach\">9</property></packing></child><child><o"
- "bject class=\"GtkLabel\" id=\"gpu\"><property name=\"visible\">True</pr"
- "operty><property name=\"can_focus\">False</property><property name=\"la"
- "bel\" translatable=\"yes\">label</property><property name=\"xalign\">0<"
- "/property></object><packing><property name=\"left_attach\">1</property>"
- "<property name=\"top_attach\">9</property></packing></child></object><p"
- "acking><property name=\"expand\">True</property><property name=\"fill\""
- ">True</property><property name=\"position\">1</property></packing></chi"
- "ld></object></child><child type=\"tab\"><object class=\"GtkLabel\" id=\""
- "system\"><property name=\"visible\">True</property><property name=\"can"
- "_focus\">False</property><property name=\"label\" translatable=\"yes\">"
- "System</property></object><packing><property name=\"tab_fill\">False</p"
- "roperty></packing></child><child><object class=\"GtkScrolledWindow\" id"
- "=\"scrolledwindow1\"><property name=\"visible\">True</property><propert"
- "y name=\"can_focus\">True</property><property name=\"hscrollbar_policy\""
- ">never</property><child><object class=\"GtkViewport\"><property name=\""
- "visible\">True</property><property name=\"can_focus\">False</property><"
- "property name=\"shadow_type\">none</property><child><object class=\"Gtk"
- "Box\" id=\"about-xfce-box\"><property name=\"visible\">True</property><"
- "property name=\"can_focus\">False</property><property name=\"border_wid"
- "th\">18</property><property name=\"orientation\">vertical</property><pr"
- "operty name=\"spacing\">12</property><child><object class=\"GtkImage\">"
- "<property name=\"visible\">True</property><property name=\"can_focus\">"
- "False</property><property name=\"margin_top\">12</property><property na"
- "me=\"margin_bottom\">12</property><property name=\"pixel_size\">128</pr"
- "operty><property name=\"icon_name\">xfce4-logo</property></object><pack"
- "ing><property name=\"expand\">False</property><property name=\"fill\">T"
- "rue</property><property name=\"position\">0</property></packing></child"
- "><child><object class=\"GtkLabel\"><property name=\"visible\">True</pro"
- "perty><property name=\"can_focus\">False</property><property name=\"lab"
- "el\" translatable=\"yes\">Xfce is a collection of programs that togethe"
- "r provide a full-featured desktop environment.\nThe following programs "
- "are part of the Xfce core:</property><property name=\"wrap\">True</prop"
+ "left_attach\">1</property><property name=\"top_attach\">0</property></p"
+ "acking></child><child><object class=\"GtkLabel\"><property name=\"visib"
+ "le\">True</property><property name=\"sensitive\">False</property><prope"
+ "rty name=\"can_focus\">False</property><property name=\"label\" transla"
+ "table=\"yes\">OS Name</property><property name=\"xalign\">1</property><"
+ "/object><packing><property name=\"left_attach\">0</property><property n"
+ "ame=\"top_attach\">1</property></packing></child><child><object class=\""
+ "GtkLabel\" id=\"osname\"><property name=\"visible\">True</property><pro"
+ "perty name=\"can_focus\">False</property><property name=\"label\" trans"
+ "latable=\"yes\">label</property><property name=\"xalign\">0</property><"
+ "/object><packing><property name=\"left_attach\">1</property><property n"
+ "ame=\"top_attach\">1</property></packing></child><child><object class=\""
+ "GtkLabel\"><property name=\"visible\">True</property><property name=\"s"
+ "ensitive\">False</property><property name=\"can_focus\">False</property"
+ "><property name=\"label\" translatable=\"yes\">OS Type</property><prope"
+ "rty name=\"xalign\">1</property></object><packing><property name=\"left"
+ "_attach\">0</property><property name=\"top_attach\">2</property></packi"
+ "ng></child><child><object class=\"GtkLabel\" id=\"ostype\"><property na"
+ "me=\"visible\">True</property><property name=\"can_focus\">False</prope"
+ "rty><property name=\"label\" translatable=\"yes\">label</property><prop"
+ "erty name=\"xalign\">0</property></object><packing><property name=\"lef"
+ "t_attach\">1</property><property name=\"top_attach\">2</property></pack"
+ "ing></child><child><object class=\"GtkLabel\" id=\"vendor-info-label\">"
+ "<property name=\"visible\">True</property><property name=\"sensitive\">"
+ "False</property><property name=\"can_focus\">False</property><property "
+ "name=\"label\" translatable=\"yes\">Distributor</property><property nam"
+ "e=\"xalign\">1</property></object><packing><property name=\"left_attach"
+ "\">0</property><property name=\"top_attach\">3</property></packing></ch"
+ "ild><child><object class=\"GtkLabel\" id=\"vendor-info\"><property name"
+ "=\"visible\">True</property><property name=\"can_focus\">False</propert"
+ "y><property name=\"label\" translatable=\"yes\">label</property><proper"
+ "ty name=\"xalign\">0</property></object><packing><property name=\"left_"
+ "attach\">1</property><property name=\"top_attach\">3</property></packin"
+ "g></child><child><object class=\"GtkLabel\"><property name=\"visible\">"
+ "True</property><property name=\"sensitive\">False</property><property n"
+ "ame=\"can_focus\">False</property><property name=\"margin_top\">12</pro"
+ "perty><property name=\"label\" translatable=\"yes\">Xfce Version</prope"
+ "rty><property name=\"xalign\">1</property></object><packing><property n"
+ "ame=\"left_attach\">0</property><property name=\"top_attach\">4</proper"
+ "ty></packing></child><child><object class=\"GtkLabel\" id=\"xfce-versio"
+ "n\"><property name=\"visible\">True</property><property name=\"can_focu"
+ "s\">False</property><property name=\"margin_top\">12</property><propert"
+ "y name=\"label\" translatable=\"yes\">label</property><property name=\""
+ "xalign\">0</property></object><packing><property name=\"left_attach\">1"
+ "</property><property name=\"top_attach\">4</property></packing></child>"
+ "<child><object class=\"GtkLabel\"><property name=\"visible\">True</prop"
+ "erty><property name=\"sensitive\">False</property><property name=\"can_"
+ "focus\">False</property><property name=\"label\" translatable=\"yes\">G"
+ "TK Version</property><property name=\"xalign\">1</property></object><pa"
+ "cking><property name=\"left_attach\">0</property><property name=\"top_a"
+ "ttach\">5</property></packing></child><child><object class=\"GtkLabel\""
+ " id=\"gtk-version\"><property name=\"visible\">True</property><property"
+ " name=\"can_focus\">False</property><property name=\"label\" translatab"
+ "le=\"yes\">label</property><property name=\"xalign\">0</property></obje"
+ "ct><packing><property name=\"left_attach\">1</property><property name=\""
+ "top_attach\">5</property></packing></child><child><object class=\"GtkLa"
+ "bel\"><property name=\"visible\">True</property><property name=\"sensit"
+ "ive\">False</property><property name=\"can_focus\">False</property><pro"
+ "perty name=\"label\" translatable=\"yes\">Kernel Version</property><pro"
+ "perty name=\"xalign\">1</property></object><packing><property name=\"le"
+ "ft_attach\">0</property><property name=\"top_attach\">6</property></pac"
+ "king></child><child><object class=\"GtkLabel\" id=\"kernel-version\"><p"
+ "roperty name=\"visible\">True</property><property name=\"can_focus\">Fa"
+ "lse</property><property name=\"label\" translatable=\"yes\">label</prop"
"erty><property name=\"xalign\">0</property></object><packing><property "
- "name=\"expand\">False</property><property name=\"fill\">True</property>"
- "<property name=\"position\">1</property></packing></child><child><objec"
- "t class=\"GtkBox\" id=\"components-box\"><property name=\"visible\">Tru"
- "e</property><property name=\"can_focus\">False</property><property name"
- "=\"border_width\">12</property><property name=\"orientation\">vertical<"
- "/property><property name=\"spacing\">12</property><child><placeholder/>"
- "</child><child><placeholder/></child><child><placeholder/></child></obj"
- "ect><packing><property name=\"expand\">False</property><property name=\""
- "fill\">True</property><property name=\"position\">2</property></packing"
- "></child><child><object class=\"GtkLabel\"><property name=\"visible\">T"
- "rue</property><property name=\"can_focus\">False</property><property na"
- "me=\"label\" translatable=\"yes\">Xfce is also a development platform p"
- "roviding several libraries that help programmers create applications th"
- "at fit in well with the desktop environment.\n\nXfce components are lic"
- "ensed under free or open source licences; GPL or BSDL for applications "
- "and LGPL or BSDL for libraries. Look at the documentation, the source c"
- "ode or the Xfce website (<a href=\"https://www.xfce.org\">https:/"
- "/www.xfce.org</a>) for more information.\n\nThank you for your in"
- "terest in Xfce.\n\n\t- The Xfce Development Team</property><property na"
- "me=\"use_markup\">True</property><property name=\"wrap\">True</property"
- "><property name=\"xalign\">0</property></object><packing><property name"
- "=\"expand\">False</property><property name=\"fill\">True</property><pro"
- "perty name=\"position\">3</property></packing></child></object></child>"
- "</object></child></object><packing><property name=\"position\">1</prope"
- "rty></packing></child><child type=\"tab\"><object class=\"GtkLabel\" id"
- "=\"label1\"><property name=\"visible\">True</property><property name=\""
- "can_focus\">False</property><property name=\"label\" translatable=\"yes"
- "\">About</property></object><packing><property name=\"position\">1</pro"
- "perty><property name=\"tab_fill\">False</property></packing></child><ch"
- "ild><object class=\"GtkScrolledWindow\" id=\"scrolledwindow2\"><propert"
- "y name=\"visible\">True</property><property name=\"can_focus\">True</pr"
- "operty><property name=\"shadow_type\">etched-in</property><child><objec"
- "t class=\"GtkTextView\" id=\"credits-textview\"><property name=\"visibl"
- "e\">True</property><property name=\"can_focus\">True</property><propert"
- "y name=\"border_width\">12</property><property name=\"editable\">False<"
- "/property><property name=\"wrap_mode\">word</property><property name=\""
- "left_margin\">3</property><property name=\"right_margin\">3</property><"
- "property name=\"cursor_visible\">False</property><property name=\"buffe"
- "r\">credits-buffer</property></object></child></object><packing><proper"
- "ty name=\"position\">2</property></packing></child><child type=\"tab\">"
- "<object class=\"GtkLabel\" id=\"label2\"><property name=\"visible\">Tru"
- "e</property><property name=\"can_focus\">False</property><property name"
- "=\"label\" translatable=\"yes\">Credits</property></object><packing><pr"
- "operty name=\"position\">2</property><property name=\"tab_fill\">False<"
- "/property></packing></child><child><object class=\"GtkScrolledWindow\" "
- "id=\"vendor-tab\"><property name=\"can_focus\">True</property><property"
- " name=\"shadow_type\">etched-in</property><child><object class=\"GtkTex"
- "tView\" id=\"vendor-textview\"><property name=\"visible\">True</propert"
- "y><property name=\"can_focus\">True</property><property name=\"border_w"
- "idth\">12</property><property name=\"editable\">False</property><proper"
- "ty name=\"wrap_mode\">word</property><property name=\"left_margin\">3</"
- "property><property name=\"right_margin\">3</property><property name=\"c"
- "ursor_visible\">False</property><property name=\"buffer\">vendor-buffer"
- "</property></object></child></object><packing><property name=\"position"
- "\">3</property></packing></child><child type=\"tab\"><object class=\"Gt"
- "kLabel\" id=\"vendor-label\"><property name=\"visible\">True</property>"
- "<property name=\"can_focus\">False</property><property name=\"label\">V"
- "endor</property></object><packing><property name=\"position\">3</proper"
- "ty><property name=\"tab_fill\">False</property></packing></child><child"
- "><object class=\"GtkBox\"><property name=\"visible\">True</property><pr"
- "operty name=\"can_focus\">False</property><property name=\"orientation\""
- ">vertical</property><child><object class=\"GtkScrolledWindow\" id=\"scr"
- "olledwindow3\"><property name=\"visible\">True</property><property name"
- "=\"can_focus\">True</property><property name=\"shadow_type\">etched-in<"
- "/property><child><object class=\"GtkTextView\" id=\"copyright-textview\""
- "><property name=\"visible\">True</property><property name=\"can_focus\""
- ">True</property><property name=\"border_width\">6</property><property n"
- "ame=\"editable\">False</property><property name=\"wrap_mode\">word</pro"
- "perty><property name=\"left_margin\">3</property><property name=\"right"
- "_margin\">3</property><property name=\"cursor_visible\">False</property"
- "><property name=\"buffer\">copyright-buffer</property></object></child>"
+ "name=\"left_attach\">1</property><property name=\"top_attach\">6</prope"
+ "rty></packing></child><child><object class=\"GtkLabel\"><property name="
+ "\"visible\">True</property><property name=\"sensitive\">False</property"
+ "><property name=\"can_focus\">False</property><property name=\"margin_t"
+ "op\">12</property><property name=\"label\" translatable=\"yes\">CPU</pr"
+ "operty><property name=\"xalign\">1</property></object><packing><propert"
+ "y name=\"left_attach\">0</property><property name=\"top_attach\">7</pro"
+ "perty></packing></child><child><object class=\"GtkLabel\" id=\"cpu\"><p"
+ "roperty name=\"visible\">True</property><property name=\"can_focus\">Fa"
+ "lse</property><property name=\"margin_top\">12</property><property name"
+ "=\"label\" translatable=\"yes\">label</property><property name=\"xalign"
+ "\">0</property></object><packing><property name=\"left_attach\">1</prop"
+ "erty><property name=\"top_attach\">7</property></packing></child><child"
+ "><object class=\"GtkLabel\"><property name=\"visible\">True</property><"
+ "property name=\"sensitive\">False</property><property name=\"can_focus\""
+ ">False</property><property name=\"label\" translatable=\"yes\">Memory</"
+ "property><property name=\"xalign\">1</property></object><packing><prope"
+ "rty name=\"left_attach\">0</property><property name=\"top_attach\">8</p"
+ "roperty></packing></child><child><object class=\"GtkLabel\" id=\"memory"
+ "\"><property name=\"visible\">True</property><property name=\"can_focus"
+ "\">False</property><property name=\"label\" translatable=\"yes\">label<"
+ "/property><property name=\"xalign\">0</property></object><packing><prop"
+ "erty name=\"left_attach\">1</property><property name=\"top_attach\">8</"
+ "property></packing></child><child><object class=\"GtkLabel\" id=\"gpu-l"
+ "abel\"><property name=\"visible\">True</property><property name=\"sensi"
+ "tive\">False</property><property name=\"can_focus\">False</property><pr"
+ "operty name=\"label\" translatable=\"yes\">GPU</property><property name"
+ "=\"xalign\">1</property></object><packing><property name=\"left_attach\""
+ ">0</property><property name=\"top_attach\">9</property></packing></chil"
+ "d><child><object class=\"GtkLabel\" id=\"gpu\"><property name=\"visible"
+ "\">True</property><property name=\"can_focus\">False</property><propert"
+ "y name=\"label\" translatable=\"yes\">label</property><property name=\""
+ "xalign\">0</property></object><packing><property name=\"left_attach\">1"
+ "</property><property name=\"top_attach\">9</property></packing></child>"
"</object><packing><property name=\"expand\">True</property><property na"
"me=\"fill\">True</property><property name=\"position\">1</property></pa"
- "cking></child><child><object class=\"GtkButtonBox\"><property name=\"vi"
+ "cking></child></object></child><child type=\"tab\"><object class=\"GtkL"
+ "abel\" id=\"system\"><property name=\"visible\">True</property><propert"
+ "y name=\"can_focus\">False</property><property name=\"label\" translata"
+ "ble=\"yes\">System</property></object><packing><property name=\"tab_fil"
+ "l\">False</property></packing></child><child><object class=\"GtkScrolle"
+ "dWindow\" id=\"scrolledwindow1\"><property name=\"visible\">True</prope"
+ "rty><property name=\"can_focus\">True</property><property name=\"hscrol"
+ "lbar_policy\">never</property><child><object class=\"GtkViewport\"><pro"
+ "perty name=\"visible\">True</property><property name=\"can_focus\">Fals"
+ "e</property><property name=\"shadow_type\">none</property><child><objec"
+ "t class=\"GtkBox\" id=\"about-xfce-box\"><property name=\"visible\">Tru"
+ "e</property><property name=\"can_focus\">False</property><property name"
+ "=\"border_width\">18</property><property name=\"orientation\">vertical<"
+ "/property><property name=\"spacing\">12</property><child><object class="
+ "\"GtkImage\"><property name=\"visible\">True</property><property name=\""
+ "can_focus\">False</property><property name=\"margin_top\">12</property>"
+ "<property name=\"margin_bottom\">12</property><property name=\"pixel_si"
+ "ze\">128</property><property name=\"icon_name\">xfce4-logo</property></"
+ "object><packing><property name=\"expand\">False</property><property nam"
+ "e=\"fill\">True</property><property name=\"position\">0</property></pac"
+ "king></child><child><object class=\"GtkLabel\"><property name=\"visible"
+ "\">True</property><property name=\"can_focus\">False</property><propert"
+ "y name=\"label\" translatable=\"yes\">Xfce is a collection of programs "
+ "that together provide a full-featured desktop environment.\nThe followi"
+ "ng programs are part of the Xfce core:</property><property name=\"wrap\""
+ ">True</property><property name=\"xalign\">0</property></object><packing"
+ "><property name=\"expand\">False</property><property name=\"fill\">True"
+ "</property><property name=\"position\">1</property></packing></child><c"
+ "hild><object class=\"GtkBox\" id=\"components-box\"><property name=\"vi"
"sible\">True</property><property name=\"can_focus\">False</property><pr"
- "operty name=\"halign\">center</property><property name=\"homogeneous\">"
- "True</property><property name=\"layout_style\">start</property><child><"
- "object class=\"GtkButton\" id=\"gpl-button\"><property name=\"label\" t"
- "ranslatable=\"yes\">GPL</property><property name=\"visible\">True</prop"
- "erty><property name=\"can_focus\">True</property><property name=\"recei"
- "ves_default\">True</property></object><packing><property name=\"expand\""
- ">False</property><property name=\"fill\">False</property><property name"
- "=\"position\">0</property></packing></child><child><object class=\"GtkB"
- "utton\" id=\"lgpl-button\"><property name=\"label\" translatable=\"yes\""
- ">LGPL</property><property name=\"visible\">True</property><property nam"
- "e=\"can_focus\">True</property><property name=\"receives_default\">True"
- "</property></object><packing><property name=\"expand\">False</property>"
- "<property name=\"fill\">False</property><property name=\"position\">1</"
- "property></packing></child><child><object class=\"GtkButton\" id=\"bsd-"
- "button\"><property name=\"label\" translatable=\"yes\">BSD</property><p"
- "roperty name=\"visible\">True</property><property name=\"can_focus\">Tr"
- "ue</property><property name=\"receives_default\">True</property></objec"
- "t><packing><property name=\"expand\">False</property><property name=\"f"
- "ill\">False</property><property name=\"position\">2</property></packing"
- "></child><style><class name=\"inline-toolbar\"/></style></object><packi"
- "ng><property name=\"expand\">False</property><property name=\"fill\">Tr"
- "ue</property><property name=\"position\">2</property></packing></child>"
- "</object><packing><property name=\"position\">4</property></packing></c"
- "hild><child type=\"tab\"><object class=\"GtkLabel\" id=\"label3\"><prop"
- "erty name=\"visible\">True</property><property name=\"can_focus\">False"
- "</property><property name=\"label\" translatable=\"yes\">Copyright</pro"
- "perty></object><packing><property name=\"position\">4</property><proper"
- "ty name=\"tab_fill\">False</property></packing></child></object><packin"
- "g><property name=\"expand\">True</property><property name=\"fill\">True"
- "</property><property name=\"position\">1</property></packing></child></"
- "object></child><action-widgets><action-widget response=\"0\">help-butto"
- "n</action-widget><action-widget response=\"0\">close-button</action-wid"
- "get></action-widgets></object></interface>"
+ "operty name=\"border_width\">12</property><property name=\"orientation\""
+ ">vertical</property><property name=\"spacing\">12</property><child><pla"
+ "ceholder/></child><child><placeholder/></child><child><placeholder/></c"
+ "hild></object><packing><property name=\"expand\">False</property><prope"
+ "rty name=\"fill\">True</property><property name=\"position\">2</propert"
+ "y></packing></child><child><object class=\"GtkLabel\"><property name=\""
+ "visible\">True</property><property name=\"can_focus\">False</property><"
+ "property name=\"label\" translatable=\"yes\">Xfce is also a development"
+ " platform providing several libraries that help programmers create appl"
+ "ications that fit in well with the desktop environment.\n\nXfce compone"
+ "nts are licensed under free or open source licences; GPL or BSDL for ap"
+ "plications and LGPL or BSDL for libraries. Look at the documentation, t"
+ "he source code or the Xfce website (<a href=\"https://www.xfce.org\""
+ ">https://www.xfce.org</a>) for more information.\n\nThank you "
+ "for your interest in Xfce.\n\n\t- The Xfce Development Team</property><"
+ "property name=\"use_markup\">True</property><property name=\"wrap\">Tru"
+ "e</property><property name=\"xalign\">0</property></object><packing><pr"
+ "operty name=\"expand\">False</property><property name=\"fill\">True</pr"
+ "operty><property name=\"position\">3</property></packing></child></obje"
+ "ct></child></object></child></object><packing><property name=\"position"
+ "\">1</property></packing></child><child type=\"tab\"><object class=\"Gt"
+ "kLabel\" id=\"label1\"><property name=\"visible\">True</property><prope"
+ "rty name=\"can_focus\">False</property><property name=\"label\" transla"
+ "table=\"yes\">About</property></object><packing><property name=\"positi"
+ "on\">1</property><property name=\"tab_fill\">False</property></packing>"
+ "</child><child><object class=\"GtkScrolledWindow\" id=\"scrolledwindow2"
+ "\"><property name=\"visible\">True</property><property name=\"can_focus"
+ "\">True</property><property name=\"shadow_type\">etched-in</property><c"
+ "hild><object class=\"GtkTextView\" id=\"credits-textview\"><property na"
+ "me=\"visible\">True</property><property name=\"can_focus\">True</proper"
+ "ty><property name=\"border_width\">12</property><property name=\"editab"
+ "le\">False</property><property name=\"wrap_mode\">word</property><prope"
+ "rty name=\"left_margin\">3</property><property name=\"right_margin\">3<"
+ "/property><property name=\"cursor_visible\">False</property><property n"
+ "ame=\"buffer\">credits-buffer</property></object></child></object><pack"
+ "ing><property name=\"position\">2</property></packing></child><child ty"
+ "pe=\"tab\"><object class=\"GtkLabel\" id=\"label2\"><property name=\"vi"
+ "sible\">True</property><property name=\"can_focus\">False</property><pr"
+ "operty name=\"label\" translatable=\"yes\">Credits</property></object><"
+ "packing><property name=\"position\">2</property><property name=\"tab_fi"
+ "ll\">False</property></packing></child><child><object class=\"GtkScroll"
+ "edWindow\" id=\"vendor-tab\"><property name=\"can_focus\">True</propert"
+ "y><property name=\"shadow_type\">etched-in</property><child><object cla"
+ "ss=\"GtkTextView\" id=\"vendor-textview\"><property name=\"visible\">Tr"
+ "ue</property><property name=\"can_focus\">True</property><property name"
+ "=\"border_width\">12</property><property name=\"editable\">False</prope"
+ "rty><property name=\"wrap_mode\">word</property><property name=\"left_m"
+ "argin\">3</property><property name=\"right_margin\">3</property><proper"
+ "ty name=\"cursor_visible\">False</property><property name=\"buffer\">ve"
+ "ndor-buffer</property></object></child></object><packing><property name"
+ "=\"position\">3</property></packing></child><child type=\"tab\"><object"
+ " class=\"GtkLabel\" id=\"vendor-label\"><property name=\"visible\">True"
+ "</property><property name=\"can_focus\">False</property><property name="
+ "\"label\">Vendor</property></object><packing><property name=\"position\""
+ ">3</property><property name=\"tab_fill\">False</property></packing></ch"
+ "ild><child><object class=\"GtkBox\"><property name=\"visible\">True</pr"
+ "operty><property name=\"can_focus\">False</property><property name=\"or"
+ "ientation\">vertical</property><child><object class=\"GtkScrolledWindow"
+ "\" id=\"scrolledwindow3\"><property name=\"visible\">True</property><pr"
+ "operty name=\"can_focus\">True</property><property name=\"shadow_type\""
+ ">etched-in</property><child><object class=\"GtkTextView\" id=\"copyrigh"
+ "t-textview\"><property name=\"visible\">True</property><property name=\""
+ "can_focus\">True</property><property name=\"border_width\">6</property>"
+ "<property name=\"editable\">False</property><property name=\"wrap_mode\""
+ ">word</property><property name=\"left_margin\">3</property><property na"
+ "me=\"right_margin\">3</property><property name=\"cursor_visible\">False"
+ "</property><property name=\"buffer\">copyright-buffer</property></objec"
+ "t></child></object><packing><property name=\"expand\">True</property><p"
+ "roperty name=\"fill\">True</property><property name=\"position\">1</pro"
+ "perty></packing></child><child><object class=\"GtkButtonBox\"><property"
+ " name=\"visible\">True</property><property name=\"can_focus\">False</pr"
+ "operty><property name=\"halign\">center</property><property name=\"homo"
+ "geneous\">True</property><property name=\"layout_style\">start</propert"
+ "y><child><object class=\"GtkButton\" id=\"gpl-button\"><property name=\""
+ "label\" translatable=\"yes\">GPL</property><property name=\"visible\">T"
+ "rue</property><property name=\"can_focus\">True</property><property nam"
+ "e=\"receives_default\">True</property></object><packing><property name="
+ "\"expand\">False</property><property name=\"fill\">False</property><pro"
+ "perty name=\"position\">0</property></packing></child><child><object cl"
+ "ass=\"GtkButton\" id=\"lgpl-button\"><property name=\"label\" translata"
+ "ble=\"yes\">LGPL</property><property name=\"visible\">True</property><p"
+ "roperty name=\"can_focus\">True</property><property name=\"receives_def"
+ "ault\">True</property></object><packing><property name=\"expand\">False"
+ "</property><property name=\"fill\">False</property><property name=\"pos"
+ "ition\">1</property></packing></child><child><object class=\"GtkButton\""
+ " id=\"bsd-button\"><property name=\"label\" translatable=\"yes\">BSD</p"
+ "roperty><property name=\"visible\">True</property><property name=\"can_"
+ "focus\">True</property><property name=\"receives_default\">True</proper"
+ "ty></object><packing><property name=\"expand\">False</property><propert"
+ "y name=\"fill\">False</property><property name=\"position\">2</property"
+ "></packing></child><style><class name=\"inline-toolbar\"/></style></obj"
+ "ect><packing><property name=\"expand\">False</property><property name=\""
+ "fill\">True</property><property name=\"position\">2</property></packing"
+ "></child></object><packing><property name=\"position\">4</property></pa"
+ "cking></child><child type=\"tab\"><object class=\"GtkLabel\" id=\"label"
+ "3\"><property name=\"visible\">True</property><property name=\"can_focu"
+ "s\">False</property><property name=\"label\" translatable=\"yes\">Copyr"
+ "ight</property></object><packing><property name=\"position\">4</propert"
+ "y><property name=\"tab_fill\">False</property></packing></child></objec"
+ "t><packing><property name=\"expand\">True</property><property name=\"fi"
+ "ll\">True</property><property name=\"position\">1</property></packing><"
+ "/child></object></child><action-widgets><action-widget response=\"0\">h"
+ "elp-button</action-widget><action-widget response=\"0\">close-button</a"
+ "ction-widget></action-widgets></object></interface>"
};
-static const unsigned xfce_about_dialog_ui_length = 62515u;
+static const unsigned xfce_about_dialog_ui_length = 62528u;
=====================================
xfce4-about/main.c
=====================================
@@ -68,6 +68,7 @@ xfce_about_system (GtkBuilder *builder)
GObject *vendor_info;
glibtop_mem mem;
const glibtop_sysinfo *info;
+ g_autofree char *os_logo = NULL;
g_autofree char *device_text = NULL;
g_autofree char *cpu_text = NULL;
g_autofree char *gpu_text = NULL;
@@ -78,6 +79,31 @@ xfce_about_system (GtkBuilder *builder)
g_autofree char *os_type_text = NULL;
guint num_gpus = 0;
+ os_logo = get_os_logo ();
+ if (os_logo)
+ {
+ GObject *image = gtk_builder_get_object (builder, "os-logo");
+
+ if (gtk_icon_theme_has_icon (gtk_icon_theme_get_default (), os_logo))
+ gtk_image_set_from_icon_name (GTK_IMAGE (image), os_logo,
+ gtk_image_get_pixel_size (GTK_IMAGE (image)));
+ else
+ {
+ const gchar *extensions[] = {"svg", "png"};
+ g_autofree gchar *pixmap_path = g_strconcat ("/usr/share/pixmaps/", os_logo, ".", NULL);
+
+ for (guint i = 0; i < G_N_ELEMENTS (extensions); i++)
+ {
+ g_autofree gchar *path = g_strconcat (pixmap_path, extensions[i], NULL);
+ if (g_file_test (path, G_FILE_TEST_EXISTS))
+ {
+ gtk_image_set_from_file (GTK_IMAGE (image), path);
+ break;
+ }
+ }
+ }
+ }
+
label = gtk_builder_get_object (builder, "device");
device_text = get_system_info (DEVICE_NAME);
gtk_label_set_text (GTK_LABEL (label), device_text ? device_text : "");
=====================================
xfce4-about/system-info.c
=====================================
@@ -737,3 +737,28 @@ get_os_name (void)
return result;
}
+
+
+
+char *
+get_os_logo (void)
+{
+ GHashTable *os_info;
+ gchar *os_logo;
+
+ os_info = get_os_info ();
+
+ /* If we're not on Linux we return NULL */
+ if (!os_info)
+ return NULL;
+
+ os_logo = g_strdup (g_hash_table_lookup (os_info, "LOGO"));
+ if (xfce_str_is_empty (os_logo))
+ {
+ g_free (os_logo);
+ os_logo = g_strconcat (g_hash_table_lookup (os_info, "ID"), "-logo", NULL);
+ }
+
+ g_clear_pointer (&os_info, g_hash_table_destroy);
+ return os_logo;
+}
=====================================
xfce4-about/system-info.h
=====================================
@@ -51,4 +51,4 @@ char *get_system_info (guint infotype);
char *get_cpu_info (const glibtop_sysinfo *info);
char *get_gpu_info (guint *num_gpus);
char *get_os_name (void);
-char *get_renderer (void);
+char *get_os_logo (void);
=====================================
xfce4-about/xfce4-about-dialog.glade
=====================================
@@ -408,7 +408,7 @@ NO WARRANTY
<property name="margin_bottom">12</property>
<property name="spacing">36</property>
<child>
- <object class="GtkImage">
+ <object class="GtkImage" id="os-logo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
View it on GitLab: https://salsa.debian.org/xfce-team/desktop/libxfce4ui/-/commit/ad0da5357290cc9964c11fbb83240e4e1e4194a4
--
View it on GitLab: https://salsa.debian.org/xfce-team/desktop/libxfce4ui/-/commit/ad0da5357290cc9964c11fbb83240e4e1e4194a4
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-xfce-commits/attachments/20231110/8dba2e70/attachment-0001.htm>
More information about the Pkg-xfce-commits
mailing list