diff options
-rw-r--r-- | .build.yml | 225 | ||||
-rw-r--r-- | .github/dependabot.yml | 8 | ||||
-rwxr-xr-x | .github/workflows/archlinux.sh | 47 | ||||
-rwxr-xr-x | .github/workflows/builds.sh | 65 | ||||
-rw-r--r-- | .github/workflows/builds.yml | 94 | ||||
-rwxr-xr-x | .github/workflows/debian.sh | 73 | ||||
-rwxr-xr-x | .github/workflows/fedora.sh | 57 | ||||
-rwxr-xr-x | .github/workflows/mate-desktop.sh | 99 | ||||
-rw-r--r-- | .github/workflows/release.yml | 39 | ||||
-rwxr-xr-x | .github/workflows/ubuntu.sh | 75 | ||||
-rw-r--r-- | .travis.yml | 77 | ||||
-rw-r--r-- | capplets/keybindings/eggcellrendererkeys.c | 35 | ||||
-rw-r--r-- | capplets/keybindings/mate-keybinding-properties.ui | 2 | ||||
-rw-r--r-- | capplets/keyboard/mate-keyboard-properties-dialog.ui | 20 | ||||
-rw-r--r-- | capplets/keyboard/mate-keyboard-properties-xkb.c | 24 | ||||
-rw-r--r-- | capplets/windows/window-properties.ui | 5 | ||||
-rw-r--r-- | font-viewer/font-view.c | 41 | ||||
-rw-r--r-- | font-viewer/meson.build | 1 | ||||
-rw-r--r-- | mate-control-center.pot | 2 | ||||
-rw-r--r-- | meson.build | 1 |
20 files changed, 660 insertions, 330 deletions
diff --git a/.build.yml b/.build.yml deleted file mode 100644 index 06c41964..00000000 --- a/.build.yml +++ /dev/null @@ -1,225 +0,0 @@ -########################################################## -# THE FOLLOWING LINES IS USED BY docker-build -########################################################## -requires: - archlinux: - # Useful URL: https://git.archlinux.org/svntogit/community.git/tree/mate-control-center - - autoconf-archive - - clang - - file - - gcc - - git - - gobject-introspection - - intltool - - itstool - - libxss - - libgtop - - libmatekbd - - make - - marco - - mate-common - - mate-menus - - polkit - - udisks2 - - which - - yelp-tools - - debian: - # Useful URL: https://github.com/mate-desktop/debian-packages - # Useful URL: https://salsa.debian.org/debian-mate-team/mate-control-center - - autopoint - - clang - - clang-tools - - cppcheck - - curl - - desktop-file-utils - - git - - gobject-introspection - - intltool - - libcanberra-gtk3-dev - - libdconf-dev - - libayatana-appindicator3-dev - - libglib2.0-dev - - libgtk-3-dev - - libgtop2-dev - - libmarco-dev - - libmate-desktop-dev - - libmate-menu-dev - - libmatekbd-dev - - libpango1.0-dev - - librsvg2-bin - - librsvg2-dev - - libstartup-notification0-dev - - libudisks2-dev - - libx11-dev - - libxcursor-dev - - libxi-dev - - libxklavier-dev - - libxml2-dev - - libxrandr-dev - - libxss-dev - - libxt-dev - - libpolkit-gobject-1-dev - - libsystemd-dev - - make - - mate-common - - polkitd - - pkexec - - python3-lxml - - shared-mime-info - - xsltproc - - yelp-tools - - fedora: - # Useful URL: https://src.fedoraproject.org/cgit/rpms/mate-control-center.git - - autoconf-archive - - accountsservice-devel - - cairo-gobject-devel - - clang - - clang-analyzer - - cppcheck-htmlreport - - dconf-devel - - desktop-file-utils - - gcc - - git - - gobject-introspection-devel - - gtk3-devel - - iso-codes-devel - - itstool - - libappindicator-gtk3-devel - - libSM-devel - - libXScrnSaver-devel - - libcanberra-devel - - libmatekbd-devel - - libgtop2-devel - - librsvg2-devel - - librsvg2-tools - - libudisks2-devel - - make - - marco-devel - - mate-menus-devel - - polkit-devel - - python3-lxml - - mate-common - - redhat-rpm-config - - startup-notification-devel - - systemd-devel - - which - - ubuntu: - - autopoint - - curl - - clang - - clang-tools - - desktop-file-utils - - git - - gobject-introspection - - intltool - - libcanberra-gtk3-dev - - libdconf-dev - - libglib2.0-dev - - libgtk-3-dev - - libgtop2-dev - - libmarco-dev - - libmate-desktop-dev - - libmate-menu-dev - - libmatekbd-dev - - libpango1.0-dev - - librsvg2-bin - - librsvg2-dev - - libstartup-notification0-dev - - libudisks2-dev - - libx11-dev - - libxcursor-dev - - libxi-dev - - libxklavier-dev - - libxml2-dev - - libxrandr-dev - - libxss-dev - - libxt-dev - - libpolkit-gobject-1-dev - - libsystemd-dev - - make - - mate-common - - policykit-1 - - python3-lxml - - shared-mime-info - - xsltproc - - yelp-tools - -variables: - - 'CHECKERS=" - -enable-checker deadcode.DeadStores - -enable-checker alpha.deadcode.UnreachableCode - -enable-checker alpha.core.CastSize - -enable-checker alpha.core.CastToStruct - -enable-checker alpha.core.IdenticalExpr - -enable-checker alpha.core.SizeofPtr - -enable-checker alpha.security.ArrayBoundV2 - -enable-checker alpha.security.MallocOverflow - -enable-checker alpha.security.ReturnPtrRange - -enable-checker alpha.unix.SimpleStream - -enable-checker alpha.unix.cstring.BufferOverlap - -enable-checker alpha.unix.cstring.NotNullTerminated - -enable-checker alpha.unix.cstring.OutOfBounds - -enable-checker alpha.core.FixedAddr - -enable-checker security.insecureAPI.strcpy"' - - MATE_DESKTOP_VERSION=1.27.1 - -before_scripts: - - cd ${START_DIR} - - if [ ! -f mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz ];then - - curl -Ls -o mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz https://github.com/mate-desktop/mate-desktop/releases/download/v${MATE_DESKTOP_VERSION}/mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz - - fi - - tar xf mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz - - cd mate-desktop-${MATE_DESKTOP_VERSION} - - if [ ${DISTRO_NAME} == "debian" -o ${DISTRO_NAME} == "ubuntu" ];then - - ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu - - else - - ./autogen.sh --prefix=/usr - - fi - - if [ ${TRAVIS} == "false" ]; then - - make clean - - fi - - make - - make install - - - cd ${START_DIR} - - curl -Ls -o /usr/bin/gla11y https://github.com/hypra/gla11y/raw/v0.3/gla11y - - chmod +x /usr/bin/gla11y - -build_scripts: - - if [ ${DISTRO_NAME} == "debian" ];then - - export CFLAGS+=" -Wsign-compare -Wunused-parameter" - - cppcheck --enable=warning,style,performance,portability,information,missingInclude -i"mate-desktop-${MATE_DESKTOP_VERSION}" . - - fi - - - NOCONFIGURE=1 ./autogen.sh - - scan-build $CHECKERS ./configure --enable-compile-warnings=maximum - - if [ ${DISTRO_NAME} == "debian" ];then - - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make -j $(( $CPU_COUNT + 1 )) - - make clean - - fi - - scan-build $CHECKERS --keep-cc -o html-report make -j $(( $CPU_COUNT + 1 )) - -after_scripts: - - if [ ${DISTRO_NAME} == "fedora" ];then - - cppcheck --xml --output-file=cppcheck.xml --enable=warning,style,performance,portability,information,missingInclude -i"mate-desktop-${MATE_DESKTOP_VERSION}" . - - cppcheck-htmlreport --title=${REPO_NAME} --file=cppcheck.xml --report-dir=cppcheck-htmlreport - - ./gen-index -l 20 -i https://github.com/${OWNER_NAME}/mate-icon-theme/raw/master/mate/16x16/categories/preferences-desktop.png - - fi - - make distcheck - -releases: - draft: false - prerelease: false - checksum: true - file_glob: true - files: mate-control-center-*.tar.xz - github_release: - tags: true - overwrite: true - base_version: 1.20.0 - notify_servers: - - https://release.mate-desktop.org/release - diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..80851cd3 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +# Enable dependabot to keep our GHA pins automatically +# updated, so we don't fall too far behind in the future +version: 2 +updates: + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly diff --git a/.github/workflows/archlinux.sh b/.github/workflows/archlinux.sh new file mode 100755 index 00000000..eac6d4fb --- /dev/null +++ b/.github/workflows/archlinux.sh @@ -0,0 +1,47 @@ +#!/usr/bin/bash + +# Use grouped output messages +infobegin() { + echo "::group::${1}" +} +infoend() { + echo "::endgroup::" +} + +# Required packages on Archlinux +requires=( + ccache # Use ccache to speed up build + clang # Build with clang on Archlinux + meson # Used for meson build +) + +requires+=( + autoconf-archive + file + gcc + git + glib2-devel + gobject-introspection + intltool + itstool + libayatana-appindicator + libxss + libgtop + libmatekbd + make + marco + mate-common + mate-menus + polkit + udisks2 + which + yelp-tools +) + +infobegin "Update system" +pacman --noconfirm -Syu +infoend + +infobegin "Install dependency packages" +pacman --noconfirm -S ${requires[@]} +infoend diff --git a/.github/workflows/builds.sh b/.github/workflows/builds.sh new file mode 100755 index 00000000..24759fc8 --- /dev/null +++ b/.github/workflows/builds.sh @@ -0,0 +1,65 @@ +#!/usr/bin/bash + +set -e +set -o pipefail + +CPUS=$(grep processor /proc/cpuinfo | wc -l) + +# Use grouped output messages +infobegin() { + echo "::group::${1}" +} +infoend() { + echo "::endgroup::" +} + +# Run meson first, then run autotools +# Because meson dist requires a clean git workspace +# Autotools will modify some files (such as po, etc.), making them dirty. +if [ -f meson.build ]; then + + infobegin "Configure (meson)" + meson setup _build --prefix=/usr + infoend + + infobegin "Build (meson)" + meson compile -C _build + infoend + + infobegin "Test (meson)" + ninja -C _build test + infoend + + infobegin "Dist (meson)" + # Git safedirectory stop ninja dist + # https://github.com/git/git/commit/8959555cee7ec045958f9b6dd62e541affb7e7d9 + # https://git-scm.com/docs/git-config/2.35.2#Documentation/git-config.txt-safedirectory + git config --global --add safe.directory ${PWD} + ninja -C _build dist + infoend +fi + +if [ -f autogen.sh ]; then + infobegin "Configure (autotools)" + NOCONFIGURE=1 ./autogen.sh + ./configure --prefix=/usr --enable-compile-warnings=maximum || { + cat config.log + exit 1 + } + infoend + + infobegin "Build (autotools)" + make -j ${CPUS} + infoend + + infobegin "Check (autotools)" + make -j ${CPUS} check || { + find -name test-suite.log -exec cat {} \; + exit 1 + } + infoend + + infobegin "Distcheck (autotools)" + make -j ${CPUS} distcheck + infoend +fi diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml new file mode 100644 index 00000000..4387c97c --- /dev/null +++ b/.github/workflows/builds.yml @@ -0,0 +1,94 @@ +name: CI Build + +on: + push: + branches: + - master + pull_request: + branches: + - master + workflow_dispatch: + +# cancel already running builds of the same branch or pull request +concurrency: + group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.head_ref || github.sha }} + cancel-in-progress: true + +env: + MATE_DESKTOP_VERSION: 1.28.2 + CACHE_PATH: /tmp/.cache + +jobs: + build: + name: Build on ${{matrix.container}} (using ${{matrix.cc}}) + runs-on: ubuntu-latest + container: + image: ${{matrix.container}} + volumes: + - /tmp/.cache + - /var/cache/apt + + strategy: + fail-fast: false # don't cancel other jobs in the matrix if one fails + matrix: + container: + [ + "debian:testing", + "fedora:latest", + "ubuntu:rolling", + "archlinux:latest", + ] + cc: ["gcc"] + cxx: ["g++"] + include: + - container: "archlinux:latest" + cc: "clang" + cxx: "clang++" + + env: + # Speed up build with ccache + CC: ccache ${{ matrix.cc }} + CXX: ccache ${{ matrix.cxx }} + CONTAINER: ${{ matrix.container }} + + steps: + - name: Setup environment variables + id: distro-name + shell: bash + run: | + split=(${CONTAINER//:/ }) + distro=${split[0]} + short_sha=${SHA:0:8} + echo "DISTRO=$distro" | tee -a $GITHUB_ENV + - name: Install git command + shell: bash + run: | + echo "::group::Install git ..." + apt-get update -qq && apt-get install --assume-yes git || true + dnf update -y && dnf install -y git || true + pacman --noconfirm -Sy git || true + echo "::endgroup::" + - name: Repository checkout + uses: actions/checkout@v4 + with: + submodules: "true" + - name: Install dependency packages + run: .github/workflows/${{ env.DISTRO }}.sh + - name: Enable ccache to speed up builds + uses: hendrikmuhs/[email protected] + with: + key: ${{ env.DISTRO }}-${{ matrix.cc }} + + # INFO: M-C-C depends mate-desktop 1.27.1+, so we should install it from source. + - name: Cache mate-desktop binary packages + uses: actions/cache@v3 + id: cache-mate-desktop + with: + path: ${{ env.CACHE_PATH }} + key: ${{ env.DISTRO }}-build-mate-desktop-${{env.MATE_DESKTOP_VERSION}} + - name: Built and install mate-desktop from source + run: .github/workflows/mate-desktop.sh ${{env.MATE_DESKTOP_VERSION}} ${{ env.CACHE_PATH }} + # INFO: M-C-C depends mate-desktop 1.27.1+, install finished. + + - name: Build the source code + run: .github/workflows/builds.sh diff --git a/.github/workflows/debian.sh b/.github/workflows/debian.sh new file mode 100755 index 00000000..61510e36 --- /dev/null +++ b/.github/workflows/debian.sh @@ -0,0 +1,73 @@ +#!/usr/bin/bash + +# Use grouped output messages +infobegin() { + echo "::group::${1}" +} +infoend() { + echo "::endgroup::" +} + +# Required packages on Debian +requires=( + ccache # Use ccache to speed up build + meson # Used for meson build +) + +requires+=( + autoconf-archive + autopoint + cppcheck + curl + desktop-file-utils + gettext + git + gobject-introspection + intltool + make + mate-common + pkexec + polkitd + python3-lxml + shared-mime-info + xsltproc +) + +dev_requires=( + libayatana-appindicator3-dev + libcanberra-gtk3-dev + libdconf-dev + libglib2.0-dev + libgtk-3-dev + libgtop2-dev + libmarco-dev + libmate-desktop-dev + libmate-menu-dev + libmatekbd-dev + libpango1.0-dev + libpolkit-gobject-1-dev + librsvg2-bin + librsvg2-dev + libstartup-notification0-dev + libsystemd-dev + libudisks2-dev + libx11-dev + libxcursor-dev + libxi-dev + libxklavier-dev + libxml2-dev + libxrandr-dev + libxss-dev + libxt-dev +) + +infobegin "Update system" +apt-get update -qq +infoend + +infobegin "Install dependency packages" +env DEBIAN_FRONTEND=noninteractive \ + apt-get install --assume-yes \ + ${requires[@]} \ + ${dev_requires[@]} +infoend diff --git a/.github/workflows/fedora.sh b/.github/workflows/fedora.sh new file mode 100755 index 00000000..9e9b1cd2 --- /dev/null +++ b/.github/workflows/fedora.sh @@ -0,0 +1,57 @@ +#!/usr/bin/bash + +# Use grouped output messages +infobegin() { + echo "::group::${1}" +} +infoend() { + echo "::endgroup::" +} + +# Required packages on Fedora +requires=( + ccache # Use ccache to speed up build + meson # Used for meson build +) + +requires+=( + autoconf-archive + accountsservice-devel + cairo-gobject-devel + cppcheck-htmlreport + dconf-devel + desktop-file-utils + gcc + git + gobject-introspection-devel + gtk3-devel + iso-codes-devel + itstool + libappindicator-gtk3-devel + libSM-devel + libXScrnSaver-devel + libcanberra-devel + libmatekbd-devel + libgtop2-devel + librsvg2-devel + librsvg2-tools + libudisks2-devel + make + marco-devel + mate-menus-devel + polkit-devel + python3-lxml + mate-common + redhat-rpm-config + startup-notification-devel + systemd-devel + which +) + +infobegin "Update system" +dnf update -y +infoend + +infobegin "Install dependency packages" +dnf install -y ${requires[@]} +infoend diff --git a/.github/workflows/mate-desktop.sh b/.github/workflows/mate-desktop.sh new file mode 100755 index 00000000..ab4c6fda --- /dev/null +++ b/.github/workflows/mate-desktop.sh @@ -0,0 +1,99 @@ +#!/usr/bin/bash + +set -e +set -o pipefail + +NAME="mate-desktop" +TEMP_DIR=$(mktemp -d) +OS=$(cat /etc/os-release | grep ^ID | head -n 1 | awk -F= '{ print $2}') +TAG=$1 +CACHE_DIR=$2 + +# Use grouped output messages +infobegin() { + echo "::group::${1}" +} +infoend() { + echo "::endgroup::" +} + +# Required packages to build mate-desktop +debian_requires=( + libgirepository1.0-dev + yelp-tools + iso-codes + gobject-introspection +) + +fedora_requires=( + iso-codes + gobject-introspection +) + +ubuntu_requires=( + libgirepository1.0-dev + yelp-tools + iso-codes + gobject-introspection +) + +requires=$(eval echo '${'"${OS}_requires[@]}") + +infobegin "Install Depends for mate-desktop" +case ${OS} in +arch) + #pacman --noconfirm -Syu + #pacman --noconfirm -S ${requires[@]} + ;; +debian | ubuntu) + apt-get update -qq + env DEBIAN_FRONTEND=noninteractive \ + apt-get install --assume-yes --no-install-recommends ${requires[@]} + ;; +fedora) + dnf update -y + dnf install -y ${requires[@]} + ;; +esac +infoend + +# Use cached packages first +if [ -f $CACHE_DIR/${NAME}-${TAG}.tar.xz ]; then + echo "Found cache package, reuse it" + tar -C / -Jxf $CACHE_DIR/${NAME}-${TAG}.tar.xz +else + git clone --recurse-submodules https://github.com/mate-desktop/${NAME} + + # Foldable output information + infobegin "Configure" + cd ${NAME} + git checkout v${TAG} + if [[ ${OS} == "debian" || ${OS} == "ubuntu" ]]; then + ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu || { + cat config.log + exit 1 + } + else + ./autogen.sh --prefix=/usr || { + cat config.log + exit 1 + } + fi + infoend + + infobegin "Build" + make -j ${JOBS} + infoend + + infobegin "Install" + make install + infoend + + # Cache this package version + infobegin "Cache" + [ -d ${CACHE_DIR} ] || mkdir -p ${CACHE_DIR} + make install DESTDIR=${TEMP_DIR} + cd $TEMP_DIR + tar -J -cf $CACHE_DIR/${NAME}-${TAG}.tar.xz * + infoend +fi diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..2134f9ac --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,39 @@ +name: Release Version +on: + push: + tags: + - "v*.*.*" + +env: + MATE_DESKTOP_VERSION: 1.28.2 + CACHE_PATH: /tmp/.cache + +jobs: + release: + name: Release New Version + runs-on: ubuntu-latest + steps: + - name: Repository checkout + uses: actions/checkout@v3 + with: + submodules: "true" + + - name: Install dependency packages + run: sudo .github/workflows/ubuntu.sh + + - name: Install higher version Mate component packages + run: sudo .github/workflows/mate-desktop.sh ${{env.MATE_DESKTOP_VERSION}} ${{ env.CACHE_PATH }} + + - name: Build the source code + run: .github/workflows/builds.sh + + - name: Install GH CLI + uses: dev-hanz-ops/[email protected] + with: + gh-cli-version: 2.39.1 + + - name: Create github release + run: | + gh release create ${{ github.ref_name }} --title ${{ github.ref_name }} --generate-notes _build/meson-dist/* + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ubuntu.sh b/.github/workflows/ubuntu.sh new file mode 100755 index 00000000..ce200f7e --- /dev/null +++ b/.github/workflows/ubuntu.sh @@ -0,0 +1,75 @@ +#!/usr/bin/bash + +# Use grouped output messages +infobegin() { + echo "::group::${1}" +} +infoend() { + echo "::endgroup::" +} + +# Required packages on Ubuntu +requires=( + ccache # Use ccache to speed up build + meson # Used for meson build +) + +requires+=( + autoconf-archive + autopoint + clang + clang-tools + cppcheck + curl + desktop-file-utils + gettext + git + gobject-introspection + intltool + make + mate-common + pkexec + polkitd + python3-lxml + shared-mime-info + xsltproc +) + +dev_requires=( + libayatana-appindicator3-dev + libcanberra-gtk3-dev + libdconf-dev + libglib2.0-dev + libgtk-3-dev + libgtop2-dev + libmarco-dev + libmate-desktop-dev + libmate-menu-dev + libmatekbd-dev + libpango1.0-dev + libpolkit-gobject-1-dev + librsvg2-bin + librsvg2-dev + libstartup-notification0-dev + libsystemd-dev + libudisks2-dev + libx11-dev + libxcursor-dev + libxi-dev + libxklavier-dev + libxml2-dev + libxrandr-dev + libxss-dev + libxt-dev +) + +infobegin "Update system" +apt-get update -y +infoend + +infobegin "Install dependency packages" +env DEBIAN_FRONTEND=noninteractive \ + apt-get install --assume-yes \ + ${requires[@]} \ + ${dev_requires[@]} +infoend diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 95209182..00000000 --- a/.travis.yml +++ /dev/null @@ -1,77 +0,0 @@ -# vim: set ts=2 sts=2 sw=2 expandtab : -dist: jammy -language: shell -os: linux -services: - - docker -addons: - apt: - packages: - - python3-pip - - python3-setuptools - -branches: - except: - - gh-pages - -before_install: - - curl -Ls -o docker-build https://github.com/mate-desktop/mate-dev-scripts/raw/master/travis/docker-build - - curl -Ls -o gen-index https://github.com/mate-desktop/mate-dev-scripts/raw/master/travis/gen-index.sh - - chmod +x docker-build gen-index - -install: - - pip3 install PyGithub - - ./docker-build --name ${DISTRO} --config .build.yml --install - -script: - - ./docker-build --name ${DISTRO} --verbose --config .build.yml --build scripts - -notifications: - irc: - if: (tag OR branch = master) AND - repo = "mate-desktop/mate-control-center" - channels: - - "irc.libera.chat#mate-dev" - template: - - "[%{repository_name}] %{author}: %{commit_subject}" - - "[%{branch}] %{commit} %{message} %{build_url}" - on_success: never - on_failure: always - -deploy: - - provider: pages - edge: - branch: v2.0.3-beta.4 - token: $GITHUB_TOKEN - keep_history: false - committer_from_gh: true - target_branch: gh-pages - local_dir: html-report - strategy: git - on: - all_branches: true - condition: ${DISTRO} =~ ^fedora.*$ - - provider: script - edge: - branch: v2.0.3-beta.4 - script: ./docker-build --verbose --config .build.yml --release github - on: - tags: true - condition: "${TRAVIS_TAG} =~ ^v.*$ && ${DISTRO} =~ ^fedora.*$" - -after_success: - - 'if [[ "$TRAVIS_SECURE_ENV_VARS" == "true" && "$TRAVIS_PULL_REQUEST" != "false" && ${DISTRO} =~ ^fedora.*$ ]]; then - REPO_SLUG_ARRAY=(${TRAVIS_REPO_SLUG//\// }); - REPO_NAME=${REPO_SLUG_ARRAY[1]}; - URL="https://${REPO_NAME}.mate-desktop.dev"; - COMMENT="Code analysis completed"; - curl -H "Authorization: token $GITHUB_TOKEN" -X POST - -d "{\"state\": \"success\", \"description\": \"$COMMENT\", \"context\":\"scan-build\", \"target_url\": \"$URL\"}" - https://api.github.com/repos/${TRAVIS_REPO_SLUG}/statuses/${TRAVIS_PULL_REQUEST_SHA}; - fi' - -env: -# - DISTRO="archlinux:latest" - - DISTRO="debian:testing" - - DISTRO="fedora:latest" -# - DISTRO="ubuntu:rolling" diff --git a/capplets/keybindings/eggcellrendererkeys.c b/capplets/keybindings/eggcellrendererkeys.c index aa4c8e8a..5183fb7c 100644 --- a/capplets/keybindings/eggcellrendererkeys.c +++ b/capplets/keybindings/eggcellrendererkeys.c @@ -11,6 +11,8 @@ #define TOOLTIP_TEXT _("New shortcut...") +static void update_text (EggCellRendererKeys *keys); + static void egg_cell_renderer_keys_finalize (GObject *object); static void egg_cell_renderer_keys_init (EggCellRendererKeys *cell_keys); static void egg_cell_renderer_keys_class_init (EggCellRendererKeysClass *cell_keys_class); @@ -76,6 +78,8 @@ GType egg_cell_renderer_keys_get_type(void) static void egg_cell_renderer_keys_init(EggCellRendererKeys* cell_keys) { + g_signal_connect (cell_keys, "notify::visible", G_CALLBACK (update_text), NULL); + cell_keys->accel_mode = EGG_CELL_RENDERER_KEYS_MODE_GTK; } @@ -225,6 +229,27 @@ static gchar* convert_keysym_state_to_string(guint keysym, guint keycode, EggVir } } +static void update_text (EggCellRendererKeys *keys) +{ + gboolean visible; + + g_object_get (keys, "visible", &visible, NULL); + + /* For screen reader's sake, make the text empty when hidden, otherwise a + * more or less random value is presented. This could also be fixed in the + * accessibility implementation side, but we rely on GTK's, so it's easier + * to clean it up here than modify GTK or subclass it further. */ + if (! visible) + g_object_set (keys, "text", "", NULL); + else + { + /* sync string to the key values */ + gchar *text = convert_keysym_state_to_string (keys->accel_key, keys->keycode, keys->accel_mask); + g_object_set (keys, "text", text, NULL); + g_free (text); + } +} + static void egg_cell_renderer_keys_get_property (GObject *object, guint param_id, @@ -627,6 +652,8 @@ egg_cell_renderer_keys_start_editing (GtkCellRenderer *cell, keys); eventbox = g_object_new (pointless_eventbox_subclass_get_type (), + "tooltip-text", _("Press the keys for the new accelerator, Backspace to clear, or Escape to cancel edition"), + "can-focus", TRUE, NULL); keys->edit_widget = eventbox; g_object_add_weak_pointer (G_OBJECT (keys->edit_widget), @@ -670,7 +697,6 @@ egg_cell_renderer_keys_start_editing (GtkCellRenderer *cell, void egg_cell_renderer_keys_set_accelerator(EggCellRendererKeys* keys, guint keyval, guint keycode, EggVirtualModifierType mask) { - char *text; gboolean changed; g_return_if_fail (EGG_IS_CELL_RENDERER_KEYS (keys)); @@ -705,12 +731,7 @@ void egg_cell_renderer_keys_set_accelerator(EggCellRendererKeys* keys, guint key g_object_thaw_notify (G_OBJECT (keys)); if (changed) - { - /* sync string to the key values */ - text = convert_keysym_state_to_string (keys->accel_key, keys->keycode, keys->accel_mask); - g_object_set (keys, "text", text, NULL); - g_free (text); - } + update_text (keys); } void egg_cell_renderer_keys_get_accelerator(EggCellRendererKeys* keys, guint* keyval, EggVirtualModifierType* mask) diff --git a/capplets/keybindings/mate-keybinding-properties.ui b/capplets/keybindings/mate-keybinding-properties.ui index 7a986588..eb3a5a2f 100644 --- a/capplets/keybindings/mate-keybinding-properties.ui +++ b/capplets/keybindings/mate-keybinding-properties.ui @@ -336,7 +336,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> - <property name="label" translatable="yes">To edit a shortcut key, double-click on the corresponding row and type a new key combination, or press backspace to clear.</property> + <property name="label" translatable="yes">To edit a shortcut key, double-click or press Space or Enter on the corresponding row and type a new key combination, or press backspace to clear.</property> <property name="wrap">True</property> </object> <packing> diff --git a/capplets/keyboard/mate-keyboard-properties-dialog.ui b/capplets/keyboard/mate-keyboard-properties-dialog.ui index bed5a44f..d59710ec 100644 --- a/capplets/keyboard/mate-keyboard-properties-dialog.ui +++ b/capplets/keyboard/mate-keyboard-properties-dialog.ui @@ -830,6 +830,22 @@ <property name="position">1</property> </packing> </child> + <child> + <object class="GtkCheckButton" id="chk_load_extra_items"> + <property name="label" translatable="yes">_Include less-common layouts in the selections list</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="halign">start</property> + <property name="use-underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> <child> <object class="GtkCheckButton" id="chk_separate_group_per_window"> <property name="label" translatable="yes">_Separate layout for each window</property> @@ -843,7 +859,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> <child> @@ -859,7 +875,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">3</property> + <property name="position">4</property> </packing> </child> </object> diff --git a/capplets/keyboard/mate-keyboard-properties-xkb.c b/capplets/keyboard/mate-keyboard-properties-xkb.c index d1dd7925..831203f0 100644 --- a/capplets/keyboard/mate-keyboard-properties-xkb.c +++ b/capplets/keyboard/mate-keyboard-properties-xkb.c @@ -150,6 +150,18 @@ chk_separate_group_per_window_toggled (GSettings * settings, } static void +chk_load_extra_items_toggled (GSettings * settings, + gchar * key, + GtkBuilder * dialog) +{ + matekbd_desktop_config_load_from_gsettings (&desktop_config); + + xkl_config_registry_load (config_registry, desktop_config.load_extra_items); + + xkb_layouts_fill_selected_tree (dialog); +} + +static void chk_new_windows_inherit_layout_toggled (GtkWidget * chk_new_windows_inherit_layout, GtkBuilder * dialog) @@ -193,6 +205,18 @@ setup_xkb_tabs (GtkBuilder * dialog) G_CALLBACK (chk_separate_group_per_window_toggled), dialog); + g_settings_bind (xkb_general_settings, + "load-extra-items", + WID ("chk_load_extra_items"), + "active", + G_SETTINGS_BIND_DEFAULT); + + g_signal_connect (xkb_general_settings, + "changed::load-extra-items", + G_CALLBACK (chk_load_extra_items_toggled), + dialog); + + #ifdef HAVE_X11_EXTENSIONS_XKB_H if (strcmp (xkl_engine_get_backend_name (engine), "XKB")) #endif diff --git a/capplets/windows/window-properties.ui b/capplets/windows/window-properties.ui index 140ab21b..d480f960 100644 --- a/capplets/windows/window-properties.ui +++ b/capplets/windows/window-properties.ui @@ -51,12 +51,15 @@ Author: Robert Buj <property name="modal">True</property> <property name="icon-name">preferences-system-windows</property> <property name="type-hint">normal</property> + <property name="border-width">5</property> <signal name="response" handler="on_dialog_win_response" swapped="no"/> <child internal-child="vbox"> <object class="GtkBox" id="main_vbox"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="orientation">vertical</property> + <property name="border-width">2</property> + <property name="spacing">2</property> <child internal-child="action_area"> <object class="GtkButtonBox"> <property name="visible">True</property> @@ -106,7 +109,7 @@ Author: Robert Buj <object class="GtkNotebook" id="nb"> <property name="visible">True</property> <property name="can-focus">True</property> - <property name="border-width">6</property> + <property name="border-width">5</property> <child> <object class="GtkBox" id="behaviour_vbox"> <property name="visible">True</property> diff --git a/font-viewer/font-view.c b/font-viewer/font-view.c index 918d0087..406b051b 100644 --- a/font-viewer/font-view.c +++ b/font-viewer/font-view.c @@ -597,24 +597,33 @@ font_view_application_do_open (FontViewApplication *self, font_view_ensure_model (self); - self->info_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar), - NULL, _("Info"), - FALSE); - g_signal_connect (self->info_button, "clicked", - G_CALLBACK (info_button_clicked_cb), self); + if (self->info_button == NULL) + { + self->info_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar), + NULL, _("Info"), + FALSE); + g_signal_connect (self->info_button, "clicked", + G_CALLBACK (info_button_clicked_cb), self); + } /* add install button */ - self->install_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar), - NULL, _("Install"), - FALSE); - g_signal_connect (self->install_button, "clicked", - G_CALLBACK (install_button_clicked_cb), self); - - self->back_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar), - "go-previous-symbolic", _("Back"), - TRUE); - g_signal_connect (self->back_button, "clicked", - G_CALLBACK (back_button_clicked_cb), self); + if (self->install_button == NULL) + { + self->install_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar), + NULL, _("Install"), + FALSE); + g_signal_connect (self->install_button, "clicked", + G_CALLBACK (install_button_clicked_cb), self); + } + + if (self->back_button == NULL) + { + self->back_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar), + "go-previous-symbolic", _("Back"), + TRUE); + g_signal_connect (self->back_button, "clicked", + G_CALLBACK (back_button_clicked_cb), self); + } gtk_widget_set_vexpand (self->toolbar, FALSE); diff --git a/font-viewer/meson.build b/font-viewer/meson.build index 6a85f8af..3636521f 100644 --- a/font-viewer/meson.build +++ b/font-viewer/meson.build @@ -8,6 +8,7 @@ deps = [ common_deps, pango_dep, fontconfig_dep, + freetype_dep, libm, ] executable( diff --git a/mate-control-center.pot b/mate-control-center.pot index a4c3f19e..17e47838 100644 --- a/mate-control-center.pot +++ b/mate-control-center.pot @@ -4334,7 +4334,7 @@ msgid "Europe/Kaliningrad" msgstr "" #: capplets/time-admin/src/time-zones.h:364 -msgid "Europe/Kiev" +msgid "Europe/Kyiv" msgstr "" #: capplets/time-admin/src/time-zones.h:365 diff --git a/meson.build b/meson.build index ca16c48b..fc28a15d 100644 --- a/meson.build +++ b/meson.build @@ -86,6 +86,7 @@ xi_dep = dependency('xi', version: '>= 1.5') xext_dep = dependency('xext') xscrnsaver_dep = dependency('xscrnsaver') m_dep = cc.find_library('m') +freetype_dep = dependency('freetype2') enable_accountsservice = get_option('accountsservice') accounts_dep = dependency('accountsservice', version: '>= 0.6.39', required: enable_accountsservice) |