diff options
55 files changed, 1467 insertions, 1911 deletions
@@ -194,16 +194,6 @@ Debugging information Testing Utilities - src/run-marco.sh - The script src/run-marco.sh is useful to hack on the window manager. - It runs marco in an Xnest. e.g.: - CLIENTS=3 ./run-marco.sh - or - DEBUG=memprof ./run-marco.sh - or - DEBUG_TEST=1 ./run-marco-sh - or whatever. - marco-message The tool marco-message can be used as follows: marco-message reload-theme @@ -1,5 +1,9 @@ -1.9.4 +1.10.1 + * Assorted bugfixes + +1.10.0 * Use zenity instead of mate-dialogs + * Bugfixes 1.8.0 * Implement side-by-side tiling diff --git a/configure.ac b/configure.ac index 8f699fa0..a637fbd3 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,8 @@ AC_PREREQ(2.50) m4_define([marco_major_version], [1]) -m4_define([marco_minor_version], [9]) -m4_define([marco_micro_version], [4]) +m4_define([marco_minor_version], [10]) +m4_define([marco_micro_version], [1]) m4_define([marco_version], [marco_major_version.marco_minor_version.marco_micro_version]) @@ -12,7 +12,7 @@ AC_CONFIG_SRCDIR(src/core/display.c) AC_CONFIG_HEADERS(config.h) AC_CONFIG_MACRO_DIR([m4]) -AM_INIT_AUTOMAKE([no-dist-gzip dist-xz check-news]) +AM_INIT_AUTOMAKE([subdir-objects no-dist-gzip dist-xz check-news]) AM_MAINTAINER_MODE # Honor aclocal flags @@ -22,11 +22,9 @@ GETTEXT_PACKAGE=marco AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain]) -IT_PROG_INTLTOOL([0.34.90]) +IT_PROG_INTLTOOL([0.50.1]) AC_PROG_CC -AC_ISC_POSIX AC_HEADER_STDC -AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL #### Integer sizes @@ -124,7 +122,6 @@ case "$with_gtk" in 3.0) GTK_API_VERSION=3.0 GTK_MIN_VERSION=2.90.0 CANBERRA_GTK=libcanberra-gtk3 - MATE_DESKTOP_VERSION=1.9.3 ;; esac AM_CONDITIONAL([HAVE_GTK2], [test "x$with_gtk" = "x2.0"]) @@ -134,10 +131,6 @@ GIO_MIN_VERSION=2.25.10 MARCO_PC_MODULES="gtk+-$GTK_API_VERSION >= $GTK_MIN_VERSION gio-2.0 >= $GIO_MIN_VERSION pango >= 1.2.0 $CANBERRA_GTK" AC_SUBST(GTK_API_VERSION) -if test x$GTK_API_VERSION = x3.0; then - MARCO_PC_MODULES="$MARCO_PC_MODULES mate-desktop-2.0 >= $MATE_DESKTOP_VERSION" -fi - GLIB_GSETTINGS AC_ARG_ENABLE(verbose-mode, @@ -231,7 +224,7 @@ fi ## or the render-specific check later have_xrender=no -XCOMPOSITE_VERSION=0.2 +XCOMPOSITE_VERSION=0.3 if test x$enable_compositor = xyes; then have_xcomposite=yes elif test x$enable_compositor = xauto; then diff --git a/po/POTFILES.in b/po/POTFILES.in index e503cb17..5c585ccb 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -3,6 +3,7 @@ src/50-marco-desktop-key.xml.in src/50-marco-global-key.xml.in src/50-marco-window-key.xml.in +[type: gettext/gsettings]src/org.mate.marco.gschema.xml src/core/bell.c src/core/core.c src/core/delete.c diff --git a/po/POTFILES.skip b/po/POTFILES.skip index 7ebf145b..e69de29b 100644 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -1,2 +0,0 @@ -src/marco.schemas.in - @@ -5,13 +5,13 @@ # Translators: # , 2014 # Mihail Varantsou <[email protected]>, 2014 -# Mihail Varantsou <[email protected]>, 2014 +# Mihail Varantsou <[email protected]>, 2014-2015 msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-11-08 11:21+0000\n" +"PO-Revision-Date: 2015-03-20 11:11+0000\n" "Last-Translator: Mihail Varantsou <[email protected]>\n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/MATE/language/be/)\n" "MIME-Version: 1.0\n" @@ -26,7 +26,7 @@ msgstr "Стол" #: ../src/50-marco-desktop-key.xml.in.h:2 msgid "Show the panel's \"Run Application\" dialog box" -msgstr "Паказаць вакенца панэлі \"Выканаць праграму\"" +msgstr "Паказаць акенца панэлі \"Выканаць праграму\"" #: ../src/50-marco-desktop-key.xml.in.h:3 msgid "Show the panel's main menu" @@ -38,7 +38,7 @@ msgstr "Атрымаць здымак экрана" #: ../src/50-marco-desktop-key.xml.in.h:5 msgid "Take a screenshot of a window" -msgstr "Атрымаць здымак вакна" +msgstr "Атрымаць здымак акна" #: ../src/50-marco-desktop-key.xml.in.h:6 msgid "Run a terminal" @@ -50,15 +50,15 @@ msgstr "Кіраванне вокнамі" #: ../src/50-marco-global-key.xml.in.h:2 msgid "Move between windows, using a popup window" -msgstr "Пераключыцца паміж вокнамі праз выплыўнае вакно" +msgstr "Пераключыцца паміж вокнамі праз выплыўнае акно" #: ../src/50-marco-global-key.xml.in.h:3 msgid "Move between windows of an application, using a popup window" -msgstr "Пераключыцца паміж вокнамі адной праграмы праз выплыўнае вакно" +msgstr "Пераключыцца паміж вокнамі адной праграмы праз выплыўнае акно" #: ../src/50-marco-global-key.xml.in.h:4 msgid "Move between panels and the desktop, using a popup window" -msgstr "Пераключыцца паміж панэлямі і сталом праз выплыўнае вакно" +msgstr "Пераключыцца паміж панэлямі і сталом праз выплыўнае акно" #: ../src/50-marco-global-key.xml.in.h:5 msgid "Move between windows immediately" @@ -146,7 +146,7 @@ msgstr "Пераключыцца на раней вылучаную прасто #: ../src/50-marco-window-key.xml.in.h:2 msgid "Activate the window menu" -msgstr "Паказаць меню вакна" +msgstr "Паказаць меню акна" #: ../src/50-marco-window-key.xml.in.h:3 msgid "Toggle fullscreen mode" @@ -158,11 +158,11 @@ msgstr "Змяніць стан найбольшання" #: ../src/50-marco-window-key.xml.in.h:5 msgid "Maximize window" -msgstr "Найбольшыць вакно" +msgstr "Найбольшыць акно" #: ../src/50-marco-window-key.xml.in.h:6 msgid "Restore window" -msgstr "Аднавіць вакно" +msgstr "Аднавіць акно" #: ../src/50-marco-window-key.xml.in.h:7 msgid "Toggle shaded state" @@ -170,143 +170,143 @@ msgstr "Змяніць стан зацянення" #: ../src/50-marco-window-key.xml.in.h:8 msgid "Close window" -msgstr "Закрыць вакно" +msgstr "Закрыць акно" #: ../src/50-marco-window-key.xml.in.h:9 msgid "Minimize window" -msgstr "Найменшыць вакно" +msgstr "Найменшыць акно" #: ../src/50-marco-window-key.xml.in.h:10 msgid "Move window" -msgstr "Перасунуць вакно" +msgstr "Перасунуць акно" #: ../src/50-marco-window-key.xml.in.h:11 msgid "Resize window" -msgstr "Змяніць памер вакна" +msgstr "Змяніць памер акна" #: ../src/50-marco-window-key.xml.in.h:12 msgid "Toggle whether window is on all workspaces or just one" -msgstr "Пераключыць, ці вакно відаць на адной прасторы або на ўсіх" +msgstr "Пераключыць, відаць акно на адной прасторы ці на ўсіх" #: ../src/50-marco-window-key.xml.in.h:13 msgid "Raise window if it's covered by another window, otherwise lower it" -msgstr "Узняць вакно, калі яно перакрыта іншым, інакш апусціць" +msgstr "Узняць акно, калі яно перакрыта іншым, інакш апусціць" #: ../src/50-marco-window-key.xml.in.h:14 msgid "Raise window above other windows" -msgstr "Размясціць вакно па-над іншымі вокнамі" +msgstr "Размясціць акно па-над іншымі вокнамі" #: ../src/50-marco-window-key.xml.in.h:15 msgid "Lower window below other windows" -msgstr "Размясціць вакно за ўсімі вокнамі" +msgstr "Размясціць акно за ўсімі вокнамі" #: ../src/50-marco-window-key.xml.in.h:16 msgid "Maximize window vertically" -msgstr "Найбольшыць вакно па вертыкалі" +msgstr "Найбольшыць акно па вертыкалі" #: ../src/50-marco-window-key.xml.in.h:17 msgid "Maximize window horizontally" -msgstr "Найбольшыць вакно па гарызанталі" +msgstr "Найбольшыць акно па гарызанталі" #: ../src/50-marco-window-key.xml.in.h:18 msgid "Move window to north-west (top left) corner" -msgstr "Перасунуць вакно ў паўночна-заходні (верхні левы) вугал" +msgstr "Перасунуць акно ў паўночна-заходні (верхні левы) вугал" #: ../src/50-marco-window-key.xml.in.h:19 msgid "Move window to north-east (top right) corner" -msgstr "Перасунуць вакно ў паўночна-усходні (верхні правы) вугал" +msgstr "Перасунуць акно ў паўночна-усходні (верхні правы) вугал" #: ../src/50-marco-window-key.xml.in.h:20 msgid "Move window to south-west (bottom left) corner" -msgstr "Перасунуць вакно ў паўднёва-заходні (ніжні левы) вугал" +msgstr "Перасунуць акно ў паўднёва-заходні (ніжні левы) вугал" #: ../src/50-marco-window-key.xml.in.h:21 msgid "Move window to south-east (bottom right) corner" -msgstr "Перасунуць вакно ў паўднёва-усходні (ніжні правы) вугал" +msgstr "Перасунуць акно ў паўднёва-усходні (ніжні правы) вугал" #: ../src/50-marco-window-key.xml.in.h:22 msgid "Move window to north (top) side of screen" -msgstr "Перасунуць вакно да паўночнага (верхняга) краю экрана" +msgstr "Перасунуць акно да паўночнага (верхняга) краю экрана" #: ../src/50-marco-window-key.xml.in.h:23 msgid "Move window to south (bottom) side of screen" -msgstr "Перасунуць вакно да паўднёвага (ніжняга) краю экрана" +msgstr "Перасунуць акно да паўднёвага (ніжняга) краю экрана" #: ../src/50-marco-window-key.xml.in.h:24 msgid "Move window to east (right) side of screen" -msgstr "Перасунуць вакно да усходняга (правага) краю экрана" +msgstr "Перасунуць акно да ўсходняга (правага) краю экрана" #: ../src/50-marco-window-key.xml.in.h:25 msgid "Move window to west (left) side of screen" -msgstr "Перасунуць вакно да заходняга (левага) краю экрана" +msgstr "Перасунуць акно да заходняга (левага) краю экрана" #: ../src/50-marco-window-key.xml.in.h:26 msgid "Move window to center of screen" -msgstr "Перасунуць вакно ў цэнтр экрана" +msgstr "Перасунуць акно ў цэнтр экрана" #: ../src/50-marco-window-key.xml.in.h:27 msgid "Move window to workspace 1" -msgstr "Перанесці вакно на працоўную прастору 1" +msgstr "Перанесці акно на працоўную прастору 1" #: ../src/50-marco-window-key.xml.in.h:28 msgid "Move window to workspace 2" -msgstr "Перанесці вакно на працоўную прастору 2" +msgstr "Перанесці акно на працоўную прастору 2" #: ../src/50-marco-window-key.xml.in.h:29 msgid "Move window to workspace 3" -msgstr "Перанесці вакно на працоўную прастору 3" +msgstr "Перанесці акно на працоўную прастору 3" #: ../src/50-marco-window-key.xml.in.h:30 msgid "Move window to workspace 4" -msgstr "Перанесці вакно на працоўную прастору 4" +msgstr "Перанесці акно на працоўную прастору 4" #: ../src/50-marco-window-key.xml.in.h:31 msgid "Move window to workspace 5" -msgstr "Перанесці вакно на працоўную прастору 5" +msgstr "Перанесці акно на працоўную прастору 5" #: ../src/50-marco-window-key.xml.in.h:32 msgid "Move window to workspace 6" -msgstr "Перанесці вакно на працоўную прастору 6" +msgstr "Перанесці акно на працоўную прастору 6" #: ../src/50-marco-window-key.xml.in.h:33 msgid "Move window to workspace 7" -msgstr "Перанесці вакно на працоўную прастору 7" +msgstr "Перанесці акно на працоўную прастору 7" #: ../src/50-marco-window-key.xml.in.h:34 msgid "Move window to workspace 8" -msgstr "Перанесці вакно на працоўную прастору 8" +msgstr "Перанесці акно на працоўную прастору 8" #: ../src/50-marco-window-key.xml.in.h:35 msgid "Move window to workspace 9" -msgstr "Перанесці вакно на працоўную прастору 9" +msgstr "Перанесці акно на працоўную прастору 9" #: ../src/50-marco-window-key.xml.in.h:36 msgid "Move window to workspace 10" -msgstr "Перанесці вакно на працоўную прастору 10" +msgstr "Перанесці акно на працоўную прастору 10" #: ../src/50-marco-window-key.xml.in.h:37 msgid "Move window to workspace 11" -msgstr "Перанесці вакно на працоўную прастору 11" +msgstr "Перанесці акно на працоўную прастору 11" #: ../src/50-marco-window-key.xml.in.h:38 msgid "Move window to workspace 12" -msgstr "Перанесці вакно на працоўную прастору 12" +msgstr "Перанесці акно на працоўную прастору 12" #: ../src/50-marco-window-key.xml.in.h:39 msgid "Move window one workspace to the left" -msgstr "Перанесці вакно на лявейшую працоўную прастору" +msgstr "Перанесці акно лявей на адну працоўную прастору" #: ../src/50-marco-window-key.xml.in.h:40 msgid "Move window one workspace to the right" -msgstr "Перанесці вакно на правейшую працоўную прастору" +msgstr "Перанесці акно правей на адну працоўную прастору" #: ../src/50-marco-window-key.xml.in.h:41 msgid "Move window one workspace up" -msgstr "Перанесці вакно на вышэйшую працоўную прастору" +msgstr "Перанесці акно вышэй на адну працоўную прастору" #: ../src/50-marco-window-key.xml.in.h:42 msgid "Move window one workspace down" -msgstr "Перанесці вакно на ніжэйшую працоўную прастору" +msgstr "Перанесці акно ніжэй на адну працоўную прастору" #: ../src/core/bell.c:294 msgid "Bell event" @@ -350,7 +350,7 @@ msgstr "Не стае пашырэння %s, якое патрабуецца д� #: ../src/core/display.c:346 #, c-format msgid "Failed to open X Window System display '%s'\n" -msgstr "Не выйшла адкрыць сістэмнае вакно \"%s\" асяроддзя X Window\n" +msgstr "Не выйшла адкрыць сістэмнае акно \"%s\" асяроддзя X Window\n" #: ../src/core/errors.c:313 #, c-format @@ -358,7 +358,7 @@ msgid "" "Lost connection to the display '%s';\n" "most likely the X server was shut down or you killed/destroyed\n" "the window manager.\n" -msgstr "Страчана злучэнне з вакном \"%s\";\nмусіь, X-сервер быў адключаны, альбо знішчаны\nкіраўнік вокнаў.\n" +msgstr "Страчана злучэнне з акном \"%s\";\nмусіць, X-сервер быў адключаны, альбо знішчаны\nкіраўнік вокнаў.\n" #: ../src/core/errors.c:320 #, c-format @@ -541,7 +541,7 @@ msgstr "Памылка запісу файла сеансу \"%s\": %s\n" #: ../src/core/session.c:1005 #, c-format msgid "Error closing session file '%s': %s\n" -msgstr "Памылка закрыцця файла сеансу \"%s\": %s\n" +msgstr "Памылка закрывання файла сеансу \"%s\": %s\n" #: ../src/core/session.c:1135 #, c-format @@ -579,7 +579,7 @@ msgstr "" #: ../src/core/util.c:101 #, c-format msgid "Failed to open debug log: %s\n" -msgstr "Памылка падчас адкрыцця логу: %s\n" +msgstr "Памылка падчас адкрывання логу наладкі: %s\n" #: ../src/core/util.c:111 #, c-format @@ -624,7 +624,7 @@ msgstr "Marco" msgid "" "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " "window as specified in the ICCCM.\n" -msgstr "Вакно \"%s\" выставіла для сябе значэнне SM_CLIENT_ID замест вакна са значэннем WM_CLIENT_LEADER, як гэта напісана ў ICCCM.\n" +msgstr "Акно \"%s\" выставіла значэнне SM_CLIENT_ID на сябе, замест акна са значэннем WM_CLIENT_LEADER, як гэта напісана ў ICCCM.\n" #. We ignore mwm_has_resize_func because WM_NORMAL_HINTS is the #. * authoritative source for that info. Some apps such as mplayer or @@ -637,7 +637,7 @@ msgstr "Вакно \"%s\" выставіла для сябе значэнне SM msgid "" "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " "%d x %d and max size %d x %d; this doesn't make much sense.\n" -msgstr "Вакно \"%s\" выставіла падказку MWM, якая вызначае, што яго памер не змяняецца, але выставіла мінімальны памер %d x %d і максімальны памер %d x %d; гэта бессэнсоўна.\n" +msgstr "Акно \"%s\" выставіла падказку MWM, якая вызначае, што яго памер не змяняецца, але выставіла мінімальны памер %d x %d і максімальны памер %d x %d; гэта бессэнсоўна.\n" #: ../src/core/window-props.c:252 #, c-format @@ -673,7 +673,7 @@ msgstr "%s (як іншы карыстальнік)" #: ../src/core/window-props.c:1438 #, c-format msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" -msgstr "Няправільнае вакно WM_TRANSIENT_FOR 0x%lx вызначанае для %s.\n" +msgstr "Няправільнае акно WM_TRANSIENT_FOR 0x%lx вызначанае для %s.\n" #: ../src/core/xprops.c:155 #, c-format @@ -683,19 +683,19 @@ msgid "" "and actually has type %s format %d n_items %d.\n" "This is most likely an application bug, not a window manager bug.\n" "The window has title=\"%s\" class=\"%s\" name=\"%s\"\n" -msgstr "Вакно 0x%lx мае ўласцівасць \"%s\",\nу якой мусіць быць тып \"%s\" фармату %d,\nа ў сапраўднасці ўжыты тып \"%s\" фармату %d колькасць элементаў %d:\nПадобна да хібы праграмы, а не кіраўніка вокнаў.\nВакно мае загаловак \"%s\", класа - \"%s\", назва - \"%s\"\n" +msgstr "Акно 0x%lx мае ўласцівасць \"%s\",\nу якой мусіць быць тып \"%s\" фармату %d,\nа ў сапраўднасці ўжыты тып \"%s\" фармату %d колькасць элементаў %d:\nПадобна да хібы праграмы, а не кіраўніка вокнаў.\nАкно мае загаловак \"%s\", класа - \"%s\", назва - \"%s\"\n" #: ../src/core/xprops.c:401 #, c-format msgid "Property %s on window 0x%lx contained invalid UTF-8\n" -msgstr "Уласцівасць \"%s\" для вакна 0x%lx утрымлівала нядзейсны UTF-8\n" +msgstr "Уласцівасць \"%s\" для акна 0x%lx утрымлівала нядзейсны UTF-8\n" #: ../src/core/xprops.c:484 #, c-format msgid "" "Property %s on window 0x%lx contained invalid UTF-8 for item %d in the " "list\n" -msgstr "Уласцівасць \"%s\" для вакна 0x%lx утрымлівала нядзейсны UTF-8 для элемента %d у спісе\n" +msgstr "Уласцівасць \"%s\" для акна 0x%lx утрымлівала нядзейсны UTF-8 для элемента %d у спісе\n" #: ../src/tools/marco-message.c:150 #, c-format @@ -704,39 +704,39 @@ msgstr "Выкарыстанне: %s\n" #: ../src/ui/frames.c:1199 msgid "Close Window" -msgstr "Закрыць вакно" +msgstr "Закрыць акно" #: ../src/ui/frames.c:1202 msgid "Window Menu" -msgstr "Меню вакна" +msgstr "Меню акна" #: ../src/ui/frames.c:1205 msgid "Minimize Window" -msgstr "Найменшыць вакно" +msgstr "Найменшыць акно" #: ../src/ui/frames.c:1208 msgid "Maximize Window" -msgstr "Найбольшыць вакно" +msgstr "Найбольшыць акно" #: ../src/ui/frames.c:1211 msgid "Restore Window" -msgstr "Аднавіць вакно" +msgstr "Аднавіць акно" #: ../src/ui/frames.c:1214 msgid "Roll Up Window" -msgstr "Скатаць вакно" +msgstr "Скатаць акно" #: ../src/ui/frames.c:1217 msgid "Unroll Window" -msgstr "Раскатаць вакно" +msgstr "Раскатаць акно" #: ../src/ui/frames.c:1220 msgid "Keep Window On Top" -msgstr "Трымаць вакно на версе" +msgstr "Трымаць акно на версе" #: ../src/ui/frames.c:1223 msgid "Remove Window From Top" -msgstr "Зняць вакно з верху" +msgstr "Зняць акно з верху" #: ../src/ui/frames.c:1226 msgid "Always On Visible Workspace" @@ -744,7 +744,7 @@ msgstr "Заўсёды на бачнай працоўнай прасторы" #: ../src/ui/frames.c:1229 msgid "Put Window On Only One Workspace" -msgstr "Пакласці вакно толькі на адну працоўную прастору" +msgstr "Пакласці акно толькі на адну працоўную прастору" #. Translators: Translate this string the same way as you do in libwnck! #: ../src/ui/menu.c:65 @@ -784,7 +784,7 @@ msgstr "Змяніць _памер" #. Translators: Translate this string the same way as you do in libwnck! #: ../src/ui/menu.c:79 msgid "Move Titlebar On_screen" -msgstr "Перасунуць загаловак вакна па _экране" +msgstr "Перасунуць загаловак акна па _экране" #. separator #. Translators: Translate this string the same way as you do in libwnck! @@ -805,22 +805,22 @@ msgstr "Толькі на _гэтай працоўнай прасторы" #. Translators: Translate this string the same way as you do in libwnck! #: ../src/ui/menu.c:90 msgid "Move to Workspace _Left" -msgstr "Перанесці вакно на _лявейшую прастору" +msgstr "Перанесці акно на _лявейшую прастору" #. Translators: Translate this string the same way as you do in libwnck! #: ../src/ui/menu.c:92 msgid "Move to Workspace R_ight" -msgstr "Перанесці вакно на _правейшую прастору" +msgstr "Перанесці акно на _правейшую прастору" #. Translators: Translate this string the same way as you do in libwnck! #: ../src/ui/menu.c:94 msgid "Move to Workspace _Up" -msgstr "Перанесці вакно на _вышэйшую прастору" +msgstr "Перанесці акно на _вышэйшую прастору" #. Translators: Translate this string the same way as you do in libwnck! #: ../src/ui/menu.c:96 msgid "Move to Workspace _Down" -msgstr "Перанесці вакно на _ніжэйшую прастору" +msgstr "Перанесці акно на _ніжэйшую прастору" #. separator #. Translators: Translate this string the same way as you do in libwnck! @@ -845,7 +845,7 @@ msgstr "Працоўная прастора %s%d" #: ../src/ui/menu.c:387 msgid "Move to Another _Workspace" -msgstr "Перанесці вакно на _іншую прастору" +msgstr "Перанесці акно на _іншую прастору" #. This is the text that should appear next to menu accelerators #. * that use the shift key. If the text on this key isn't typically @@ -1144,7 +1144,7 @@ msgstr "Няма <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"што-� #: ../src/ui/theme.c:5158 #, c-format msgid "Failed to load theme \"%s\": %s\n" -msgstr "Памылка падчас адкрыцця тэмы \"%s\": %s\n" +msgstr "Памылка падчас адкрывання тэмы \"%s\": %s\n" #: ../src/ui/theme.c:5288 ../src/ui/theme.c:5295 ../src/ui/theme.c:5302 #: ../src/ui/theme.c:5309 ../src/ui/theme.c:5316 @@ -1157,7 +1157,7 @@ msgstr "Няма элемента <%s> для тэмы \"%s\"" msgid "" "No frame style set for window type \"%s\" in theme \"%s\", add a <window " "type=\"%s\" style_set=\"whatever\"/> element" -msgstr "Няма стыля фрэйма для тыпу вакна \"%s\" у тэме \"%s\", дадайце элемент <window type=\"%s\" style_set=\"што-небудзь\"/>" +msgstr "Няма стыля фрэйма для тыпу акна \"%s\" у тэме \"%s\", дадайце элемент <window type=\"%s\" style_set=\"што-небудзь\"/>" #: ../src/ui/theme.c:5797 ../src/ui/theme.c:5859 ../src/ui/theme.c:5922 #, c-format @@ -1277,7 +1277,7 @@ msgstr "Параметр style_set \"%s\" для элемента <%s> невя� #: ../src/ui/theme-parser.c:1234 #, c-format msgid "Window type \"%s\" has already been assigned a style set" -msgstr "Тыпу вакна \"%s\" ужо быў прыпісаны набор стыляў" +msgstr "Тыпу акна \"%s\" ужо быў прыпісаны набор стыляў" #: ../src/ui/theme-parser.c:1264 ../src/ui/theme-parser.c:1328 #: ../src/ui/theme-parser.c:1554 ../src/ui/theme-parser.c:2775 @@ -1574,7 +1574,7 @@ msgstr "Пусты элемент меню %d\n" #: ../src/ui/theme-viewer.c:361 msgid "Border-only window" -msgstr "Вакно толькі з межамі" +msgstr "Акно толькі з межамі" #: ../src/ui/theme-viewer.c:363 msgid "Bar" @@ -1612,7 +1612,7 @@ msgstr "Праверка дзеянні кнопак %d" #: ../src/ui/theme-viewer.c:757 #, c-format msgid "%g milliseconds to draw one window frame" -msgstr "Маляваць кадр вакна кожныя %g мс" +msgstr "Маляваць кадр акна кожныя %g мс" #: ../src/ui/theme-viewer.c:800 #, c-format @@ -1622,7 +1622,7 @@ msgstr "Ужыванне: marco-theme-viewer [тэма]\n" #: ../src/ui/theme-viewer.c:807 #, c-format msgid "Error loading theme: %s\n" -msgstr "Памылка адкрыцця тэмы: %s\n" +msgstr "Памылка адкрывання тэмы: %s\n" #: ../src/ui/theme-viewer.c:813 #, c-format @@ -1651,7 +1651,7 @@ msgstr "Тэст" #: ../src/ui/theme-viewer.c:923 msgid "Window Title Goes Here" -msgstr "Тут паказаны загаловак вакна" +msgstr "Тут паказаны загаловак акна" #: ../src/ui/theme-viewer.c:1027 #, c-format @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# ciaran, 2014 +# ciaran, 2014-2015 msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-12-20 18:34+0000\n" +"PO-Revision-Date: 2015-05-26 18:43+0000\n" "Last-Translator: ciaran\n" "Language-Team: Welsh (http://www.transifex.com/projects/p/MATE/language/cy/)\n" "MIME-Version: 1.0\n" @@ -36,7 +36,7 @@ msgstr "Tynnu sgrinlun" #: ../src/50-marco-desktop-key.xml.in.h:5 msgid "Take a screenshot of a window" -msgstr "Tynnu sgrinlun o ffenest" +msgstr "Tynnu sgrinlun o ffenestr" #: ../src/50-marco-desktop-key.xml.in.h:6 msgid "Run a terminal" @@ -438,7 +438,7 @@ msgstr "DIffodd cyfansoddi" #: ../src/core/main.c:328 msgid "" "Don't make fullscreen windows that are maximized and have no decorations" -msgstr "" +msgstr "Peidio â mynd i'r sgrin lawn os yw ffenestr heb addurniadau wedi'i hehangu " #: ../src/core/main.c:537 #, c-format @@ -659,7 +659,7 @@ msgstr "" #: ../src/core/window-props.c:446 #, c-format msgid "%s (as %s)" -msgstr "" +msgstr "%s (fel %s)" #. Translators: the title of a window owned by another user #. * on this machine, whose name we don't know @@ -714,7 +714,7 @@ msgstr "Lleihau'r Ffenest" #: ../src/ui/frames.c:1208 msgid "Maximize Window" -msgstr "Ehangu'r Ffenest" +msgstr "Ehangu'r ffenest" #: ../src/ui/frames.c:1211 msgid "Restore Window" @@ -1172,7 +1172,7 @@ msgstr "Diffiniwyd y cysonyn \"%s\" eisoes" #: ../src/ui/theme-parser.c:226 #, c-format msgid "No \"%s\" attribute on element <%s>" -msgstr "" +msgstr "Dim priodoledd \"%s\" ar yr elfen <%s>" #: ../src/ui/theme-parser.c:255 ../src/ui/theme-parser.c:273 #, c-format @@ -1415,12 +1415,12 @@ msgstr "Nid yw \"%s\" yn werth dilys ar gyfer y briodwedd \"resize\"" msgid "" "Should not have \"resize\" attribute on <%s> element for maximized/shaded " "states" -msgstr "Ni ddylid cael priodwedd \"resize\" ar elfen <%s> ar gyfer cyflyrau ehangu/wedi cysgodi" +msgstr "Ni ddylid cael priodwedd \"ailfientio\" ar elfen <%s> ar gyfer cyflyrau ehangu/wedi cysgodi" #: ../src/ui/theme-parser.c:3106 #, c-format msgid "Should not have \"resize\" attribute on <%s> element for maximized states" -msgstr "Ni ddylid cael priodwedd \"resize\" ar elfen <%s> mewn cyflwr wedi'i ehangu" +msgstr "Ni ddylid cael priodwedd \"ailfeintio\" ar elfen <%s> mewn cyflwr wedi'i ehangu" #: ../src/ui/theme-parser.c:3120 ../src/ui/theme-parser.c:3142 #, c-format @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2015-01-15 13:19+0000\n" +"PO-Revision-Date: 2015-02-19 15:21+0000\n" "Last-Translator: Tobias Bannert <[email protected]>\n" "Language-Team: German (http://www.transifex.com/projects/p/MATE/language/de/)\n" "MIME-Version: 1.0\n" @@ -202,11 +202,11 @@ msgstr "Fenster hinter die anderen Fenster absenken" #: ../src/50-marco-window-key.xml.in.h:16 msgid "Maximize window vertically" -msgstr "Fenster vertikal maximieren" +msgstr "Fenster senkrecht vergrößern" #: ../src/50-marco-window-key.xml.in.h:17 msgid "Maximize window horizontally" -msgstr "Fenster horizontal maximieren" +msgstr "Fenster waagerecht vergrößern" #: ../src/50-marco-window-key.xml.in.h:18 msgid "Move window to north-west (top left) corner" @@ -3,7 +3,8 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Adolfo Jayme Barrientos <[email protected]>, 2014 +# Adolfo Jayme Barrientos, 2015 +# Adolfo Jayme Barrientos, 2014 # difusion, 2014 # Emiliano Fascetti, 2014-2015 # Lluís Tusquellas <[email protected]>, 2013 @@ -13,8 +14,8 @@ msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2015-01-05 21:04+0000\n" -"Last-Translator: Emiliano Fascetti\n" +"PO-Revision-Date: 2015-06-03 21:26+0000\n" +"Last-Translator: Adolfo Jayme Barrientos\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/MATE/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -387,12 +388,12 @@ msgstr "Hubo un error al ejecutar <tt>%s</tt>:\n\n%s" #: ../src/core/keybindings.c:2396 #, c-format msgid "No command %d has been defined.\n" -msgstr "No ha sido definido ningún comando %d.\n" +msgstr "No se definió ninguna orden %d.\n" #: ../src/core/keybindings.c:3356 #, c-format msgid "No terminal command has been defined.\n" -msgstr "No ha sido definido ningún comando de terminal.\n" +msgstr "No se definió ninguna orden de consola.\n" #: ../src/core/main.c:137 #, c-format @@ -4,17 +4,18 @@ # # Translators: # airinuxazis <[email protected]>, 2012 -# Gregori, 2014 -# Gregori, 2013 -# Hasan Al Banna, 2012 +# Ibnu Daru AJi, 2014 +# Ibnu Daru AJi, 2013 +# La Ode Muh. Fadlun Akbar <[email protected]>, 2015 +# A1Banna, 2012 # Willy Sudiarto Raharjo <[email protected]>, 2014 msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-10-24 12:42+0000\n" -"Last-Translator: Willy Sudiarto Raharjo <[email protected]>\n" +"PO-Revision-Date: 2015-04-08 14:55+0000\n" +"Last-Translator: La Ode Muh. Fadlun Akbar <[email protected]>\n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/MATE/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1515,7 +1516,7 @@ msgstr "Gagal menemukan berkas yang valid bagi tema %s\n" #: ../src/ui/theme-parser.c:4205 #, c-format msgid "Theme file %s did not contain a root <metacity_theme> element" -msgstr "File tema %s tidak mengandung root <metacity_theme> elemen" +msgstr "Berkas tema %s tidak mengandung root <metacity_theme> elemen" #: ../src/ui/theme-viewer.c:75 msgid "/_Windows" @@ -5,13 +5,14 @@ # Translators: # ABE Tsunehiko, 2013 # mauron, 2013 +# Mika Kobayashi, 2015 msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-10-12 16:11+0000\n" -"Last-Translator: Stefano Karapetsas <[email protected]>\n" +"PO-Revision-Date: 2015-02-23 23:22+0000\n" +"Last-Translator: Mika Kobayashi\n" "Language-Team: Japanese (http://www.transifex.com/projects/p/MATE/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -141,7 +142,7 @@ msgstr "下側のワークスペースへ切り替える" #: ../src/50-marco-global-key.xml.in.h:25 msgid "Switch to previously selected workspace" -msgstr "" +msgstr "直前にいたワークスペースへ移動" #: ../src/50-marco-window-key.xml.in.h:2 msgid "Activate the window menu" @@ -209,39 +210,39 @@ msgstr "ウィンドウを水平方向に最大化する" #: ../src/50-marco-window-key.xml.in.h:18 msgid "Move window to north-west (top left) corner" -msgstr "" +msgstr "ウィンドウを左上に移動" #: ../src/50-marco-window-key.xml.in.h:19 msgid "Move window to north-east (top right) corner" -msgstr "" +msgstr "ウィンドウを右上に移動" #: ../src/50-marco-window-key.xml.in.h:20 msgid "Move window to south-west (bottom left) corner" -msgstr "" +msgstr "ウィンドウを左下に移動" #: ../src/50-marco-window-key.xml.in.h:21 msgid "Move window to south-east (bottom right) corner" -msgstr "" +msgstr "ウィンドウを右下に移動" #: ../src/50-marco-window-key.xml.in.h:22 msgid "Move window to north (top) side of screen" -msgstr "" +msgstr "ウィンドウを画面上端に移動" #: ../src/50-marco-window-key.xml.in.h:23 msgid "Move window to south (bottom) side of screen" -msgstr "" +msgstr "ウィンドウを画面下端に移動" #: ../src/50-marco-window-key.xml.in.h:24 msgid "Move window to east (right) side of screen" -msgstr "" +msgstr "ウィンドウを画面右端に移動" #: ../src/50-marco-window-key.xml.in.h:25 msgid "Move window to west (left) side of screen" -msgstr "" +msgstr "ウィンドウを画面左端に移動" #: ../src/50-marco-window-key.xml.in.h:26 msgid "Move window to center of screen" -msgstr "" +msgstr "ウィンドウを画面中央に移動" #: ../src/50-marco-window-key.xml.in.h:27 msgid "Move window to workspace 1" @@ -5,13 +5,13 @@ # Translators: # Carlos Moreira <[email protected]>, 2013 # Carlos Moreira <[email protected]>, 2012 -# Carlos Moreira <[email protected]>, 2014 +# Carlos Moreira <[email protected]>, 2014-2015 msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-12-20 21:28+0000\n" +"PO-Revision-Date: 2015-06-08 09:50+0000\n" "Last-Translator: Carlos Moreira <[email protected]>\n" "Language-Team: Portuguese (http://www.transifex.com/projects/p/MATE/language/pt/)\n" "MIME-Version: 1.0\n" @@ -1324,7 +1324,7 @@ msgstr "Nenhum atributo \"extent_angle\" ou \"to\" no elemento <%s>" #: ../src/ui/theme-parser.c:2066 #, c-format msgid "Did not understand value \"%s\" for type of gradient" -msgstr "Incapaz de compreender valor \"%s\" para tipo de gradiente" +msgstr "Incapaz de compreender valor \"%s\" do tipo de gradiente" #: ../src/ui/theme-parser.c:2144 ../src/ui/theme-parser.c:2519 #, c-format @@ -1455,7 +1455,7 @@ msgstr "Impossível ter dois draw_ops num elemento <menu_icon> (tema especificou #: ../src/ui/theme-parser.c:3350 #, c-format msgid "Outermost element in theme must be <metacity_theme> not <%s>" -msgstr "O elemento mais externo do tema deve ser <metacity_theme> não <%s>" +msgstr "O elemento mais externo do tema deve ser <metacity_theme>, não <%s>" #: ../src/ui/theme-parser.c:3370 #, c-format @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Daniel <[email protected]>, 2015 # Octi <[email protected]>, 2014 msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-11-01 07:13+0000\n" -"Last-Translator: Octi <[email protected]>\n" +"PO-Revision-Date: 2015-04-20 19:17+0000\n" +"Last-Translator: Daniel <[email protected]>\n" "Language-Team: Romanian (http://www.transifex.com/projects/p/MATE/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -383,12 +384,12 @@ msgstr "A apărut o eroare la executarea <tt>%s</tt>:\n\n%s" #: ../src/core/keybindings.c:2396 #, c-format msgid "No command %d has been defined.\n" -msgstr "Nici o comandă %d nu a fost definită.\n" +msgstr "Nicio comandă %d nu a fost definită.\n" #: ../src/core/keybindings.c:3356 #, c-format msgid "No terminal command has been defined.\n" -msgstr "Nici o comandă pentru terminal nu a fost definită.\n" +msgstr "Nicio comandă pentru terminal nu a fost definită.\n" #: ../src/core/main.c:137 #, c-format @@ -1120,7 +1121,7 @@ msgstr "Expresia coordonatelor are o paranteză deschisă și nici una închisă #: ../src/ui/theme.c:2405 #, c-format msgid "Coordinate expression doesn't seem to have any operators or operands" -msgstr "Expresia coordonatelor nu are nici un operator și operand" +msgstr "Expresia coordonatelor nu are niciun operator și operand" #: ../src/ui/theme.c:2609 ../src/ui/theme.c:2629 ../src/ui/theme.c:2649 #, c-format @@ -1148,7 +1149,7 @@ msgstr "Nu s-a putut încărca tema „%s”: %s\n" #: ../src/ui/theme.c:5309 ../src/ui/theme.c:5316 #, c-format msgid "No <%s> set for theme \"%s\"" -msgstr "Nu a fost definit nici un <%s> pentru tema „%s”" +msgstr "Nu a fost definit niciun <%s> pentru tema „%s”" #: ../src/ui/theme.c:5324 #, c-format @@ -1368,7 +1369,7 @@ msgstr "Stilul cadrului are deja o componentă la poziția %s" #: ../src/ui/theme-parser.c:2879 ../src/ui/theme-parser.c:2954 #, c-format msgid "No <draw_ops> with the name \"%s\" has been defined" -msgstr "Nici o <draw_ops> cu numele „%s” nu a fost definită" +msgstr "Nicio <draw_ops> cu numele „%s” nu a fost definită" #: ../src/ui/theme-parser.c:2908 #, c-format @@ -1485,16 +1486,16 @@ msgstr "Elementul <%s> nu este permis în interiorul unui element <%s>" #: ../src/ui/theme-parser.c:3693 msgid "No draw_ops provided for frame piece" -msgstr "Nici o draw_ops furnizată pentru o componentă de cadru" +msgstr "Nicio draw_ops furnizată pentru o componentă de cadru" #: ../src/ui/theme-parser.c:3708 msgid "No draw_ops provided for button" -msgstr "Nici o draw_ops furnizată pentru buton" +msgstr "Nicio draw_ops furnizată pentru buton" #: ../src/ui/theme-parser.c:3770 #, c-format msgid "No text is allowed inside element <%s>" -msgstr "Nici un text nu este permis în interiorul <%s>" +msgstr "Niciun text nu este permis în interiorul <%s>" #: ../src/ui/theme-parser.c:3825 ../src/ui/theme-parser.c:3837 #: ../src/ui/theme-parser.c:3849 ../src/ui/theme-parser.c:3861 @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-10-12 16:41+0000\n" -"Last-Translator: Evolve32 <[email protected]>\n" +"PO-Revision-Date: 2015-01-29 08:59+0000\n" +"Last-Translator: AlexL <[email protected]>\n" "Language-Team: Russian (http://www.transifex.com/projects/p/MATE/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Ján Ďanovský <[email protected]>, 2013-2014 +# Ján Ďanovský <[email protected]>, 2013-2015 # Tibor Kaputa <[email protected]>, 2014 msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-10-12 17:27+0000\n" +"PO-Revision-Date: 2015-03-19 16:55+0000\n" "Last-Translator: Ján Ďanovský <[email protected]>\n" "Language-Team: Slovak (http://www.transifex.com/projects/p/MATE/language/sk/)\n" "MIME-Version: 1.0\n" @@ -145,7 +145,7 @@ msgstr "Prepnúť na naposledy vybratú pracovnú plochu" #: ../src/50-marco-window-key.xml.in.h:2 msgid "Activate the window menu" -msgstr "Aktivovať ponuku okna" +msgstr "Aktivovať menu okna" #: ../src/50-marco-window-key.xml.in.h:3 msgid "Toggle fullscreen mode" @@ -707,7 +707,7 @@ msgstr "Zavrieť okno" #: ../src/ui/frames.c:1202 msgid "Window Menu" -msgstr "Ponuka okna" +msgstr "Menu okna" #: ../src/ui/frames.c:1205 msgid "Minimize Window" @@ -1597,7 +1597,7 @@ msgstr "Paleta nástrojov" #: ../src/ui/theme-viewer.c:396 msgid "Torn-off Menu" -msgstr "Vypnúť ponuku" +msgstr "Odtrhnúť menu" #: ../src/ui/theme-viewer.c:400 msgid "Border" @@ -5,13 +5,14 @@ # Translators: # Damir Jerovšek <[email protected]>, 2013 # Marko Šterman <[email protected]>, 2012 +# worm <[email protected]>, 2015 msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-10-12 16:11+0000\n" -"Last-Translator: Stefano Karapetsas <[email protected]>\n" +"PO-Revision-Date: 2015-03-11 21:48+0000\n" +"Last-Translator: worm <[email protected]>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/MATE/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -141,7 +142,7 @@ msgstr "Preklopi na delovno površino pod trenutno delovno površino" #: ../src/50-marco-global-key.xml.in.h:25 msgid "Switch to previously selected workspace" -msgstr "" +msgstr "Preklopite na predhodno izbran delovni prostor" #: ../src/50-marco-window-key.xml.in.h:2 msgid "Activate the window menu" @@ -209,39 +210,39 @@ msgstr "Razpni okno vodoravno" #: ../src/50-marco-window-key.xml.in.h:18 msgid "Move window to north-west (top left) corner" -msgstr "" +msgstr "Premakni okno v severno-zahodni (zgornji levi) kot" #: ../src/50-marco-window-key.xml.in.h:19 msgid "Move window to north-east (top right) corner" -msgstr "" +msgstr "Premakni okno v severno-vzhodnji (zgornji desni) kot" #: ../src/50-marco-window-key.xml.in.h:20 msgid "Move window to south-west (bottom left) corner" -msgstr "" +msgstr "Premakni okno v južno-zahodni (spodnji levi) kot" #: ../src/50-marco-window-key.xml.in.h:21 msgid "Move window to south-east (bottom right) corner" -msgstr "" +msgstr "Premakni okno v južno-vzhodnji (spodnji desni) kot" #: ../src/50-marco-window-key.xml.in.h:22 msgid "Move window to north (top) side of screen" -msgstr "" +msgstr "Premakni okno na severni (zgornji) del zaslona" #: ../src/50-marco-window-key.xml.in.h:23 msgid "Move window to south (bottom) side of screen" -msgstr "" +msgstr "Premakni okno na južni (spodnji) del zaslona" #: ../src/50-marco-window-key.xml.in.h:24 msgid "Move window to east (right) side of screen" -msgstr "" +msgstr "Premakni okno na vzhodnji (desni) del zaslona" #: ../src/50-marco-window-key.xml.in.h:25 msgid "Move window to west (left) side of screen" -msgstr "" +msgstr "Premakni okno na zahodnji (levi) del zaslona" #: ../src/50-marco-window-key.xml.in.h:26 msgid "Move window to center of screen" -msgstr "" +msgstr "Premakni okno v središče zaslona" #: ../src/50-marco-window-key.xml.in.h:27 msgid "Move window to workspace 1" @@ -4,13 +4,14 @@ # # Translators: # Ardit Dani <[email protected]>, 2014 +# Indrit Bashkimi <[email protected]>, 2015 msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-10-12 16:11+0000\n" -"Last-Translator: Stefano Karapetsas <[email protected]>\n" +"PO-Revision-Date: 2015-04-09 12:21+0000\n" +"Last-Translator: Indrit Bashkimi <[email protected]>\n" "Language-Team: Albanian (http://www.transifex.com/projects/p/MATE/language/sq/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -140,7 +141,7 @@ msgstr "Kaloni në hapësirën e punës poshtë hapësires aktuale e punës" #: ../src/50-marco-global-key.xml.in.h:25 msgid "Switch to previously selected workspace" -msgstr "" +msgstr "Kalo tek hapësira e punës e zgjedhur më parë" #: ../src/50-marco-window-key.xml.in.h:2 msgid "Activate the window menu" @@ -208,39 +209,39 @@ msgstr "Maksimizo dritaren horizontalisht" #: ../src/50-marco-window-key.xml.in.h:18 msgid "Move window to north-west (top left) corner" -msgstr "" +msgstr "Lëvize dritaren në këndin veri-perëndimor (lart majtas)" #: ../src/50-marco-window-key.xml.in.h:19 msgid "Move window to north-east (top right) corner" -msgstr "" +msgstr "Lëvize dritaren në këndin veri-lindor (lart djathtas)" #: ../src/50-marco-window-key.xml.in.h:20 msgid "Move window to south-west (bottom left) corner" -msgstr "" +msgstr "Lëvize dritaren në këndin jug-perëndimor (poshtë majtas)" #: ../src/50-marco-window-key.xml.in.h:21 msgid "Move window to south-east (bottom right) corner" -msgstr "" +msgstr "Lëvize dritaren në këndin jug-lindor (poshtë djathtas)" #: ../src/50-marco-window-key.xml.in.h:22 msgid "Move window to north (top) side of screen" -msgstr "" +msgstr "Lëvize dritaren në anën veriore (lart) të ekranit" #: ../src/50-marco-window-key.xml.in.h:23 msgid "Move window to south (bottom) side of screen" -msgstr "" +msgstr "Lëvize dritaren në anën jugore (poshtë) të ekranit" #: ../src/50-marco-window-key.xml.in.h:24 msgid "Move window to east (right) side of screen" -msgstr "" +msgstr "Lëvize dritaren në anën lindore (djathtas) të ekranit" #: ../src/50-marco-window-key.xml.in.h:25 msgid "Move window to west (left) side of screen" -msgstr "" +msgstr "Lëvize dritaren në anën perëndimore (majtas) të ekranit" #: ../src/50-marco-window-key.xml.in.h:26 msgid "Move window to center of screen" -msgstr "" +msgstr "Lëvize dritaren në qendër të ekranit" #: ../src/50-marco-window-key.xml.in.h:27 msgid "Move window to workspace 1" @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Kristoffer Grundström <[email protected]>, 2015 # Patrik Nilsson <[email protected]>, 2014 msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-10-12 16:11+0000\n" -"Last-Translator: Stefano Karapetsas <[email protected]>\n" +"PO-Revision-Date: 2015-05-28 21:32+0000\n" +"Last-Translator: Kristoffer Grundström <[email protected]>\n" "Language-Team: Swedish (http://www.transifex.com/projects/p/MATE/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -140,7 +141,7 @@ msgstr "Växla till arbetsytan nedanför den aktuella arbetsytan" #: ../src/50-marco-global-key.xml.in.h:25 msgid "Switch to previously selected workspace" -msgstr "" +msgstr "Byt till den tidigare valda arbetsytan" #: ../src/50-marco-window-key.xml.in.h:2 msgid "Activate the window menu" @@ -6,30 +6,310 @@ msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" -"Report-Msgid-Bugs-To: https://github.com/mate-desktop/\n" -"POT-Creation-Date: 2011-12-28 10:53+0100\n" -"PO-Revision-Date: 2011-12-28 10:26+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-10-12 18:09+0200\n" +"PO-Revision-Date: 2014-10-12 16:11+0000\n" "Last-Translator: Stefano Karapetsas <[email protected]>\n" -"Language-Team: LANGUAGE <[email protected]>\n" +"Language-Team: Turkmen (http://www.transifex.com/projects/p/MATE/language/tk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tk\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../src/50-marco-desktop-key.xml.in.h:1 msgid "Desktop" msgstr "" -#: ../src/50-marco-key.xml.in.h:1 +#: ../src/50-marco-desktop-key.xml.in.h:2 +msgid "Show the panel's \"Run Application\" dialog box" +msgstr "" + +#: ../src/50-marco-desktop-key.xml.in.h:3 +msgid "Show the panel's main menu" +msgstr "" + +#: ../src/50-marco-desktop-key.xml.in.h:4 +msgid "Take a screenshot" +msgstr "" + +#: ../src/50-marco-desktop-key.xml.in.h:5 +msgid "Take a screenshot of a window" +msgstr "" + +#: ../src/50-marco-desktop-key.xml.in.h:6 +msgid "Run a terminal" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:1 ../src/50-marco-window-key.xml.in.h:1 msgid "Window Management" msgstr "" +#: ../src/50-marco-global-key.xml.in.h:2 +msgid "Move between windows, using a popup window" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:3 +msgid "Move between windows of an application, using a popup window" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:4 +msgid "Move between panels and the desktop, using a popup window" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:5 +msgid "Move between windows immediately" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:6 +msgid "Move between windows of an application immediately" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:7 +msgid "Move between panels and the desktop immediately" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:8 +msgid "Hide all normal windows and set focus to the desktop" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:9 +msgid "Switch to workspace 1" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:10 +msgid "Switch to workspace 2" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:11 +msgid "Switch to workspace 3" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:12 +msgid "Switch to workspace 4" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:13 +msgid "Switch to workspace 5" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:14 +msgid "Switch to workspace 6" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:15 +msgid "Switch to workspace 7" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:16 +msgid "Switch to workspace 8" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:17 +msgid "Switch to workspace 9" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:18 +msgid "Switch to workspace 10" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:19 +msgid "Switch to workspace 11" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:20 +msgid "Switch to workspace 12" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:21 +msgid "Switch to workspace on the left of the current workspace" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:22 +msgid "Switch to workspace on the right of the current workspace" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:23 +msgid "Switch to workspace above the current workspace" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:24 +msgid "Switch to workspace below the current workspace" +msgstr "" + +#: ../src/50-marco-global-key.xml.in.h:25 +msgid "Switch to previously selected workspace" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:2 +msgid "Activate the window menu" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:3 +msgid "Toggle fullscreen mode" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:4 +msgid "Toggle maximization state" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:5 +msgid "Maximize window" +msgstr "Äpişgäni Ulalt" + +#: ../src/50-marco-window-key.xml.in.h:6 +msgid "Restore window" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:7 +msgid "Toggle shaded state" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:8 +msgid "Close window" +msgstr "Äpişgäni Bagla" + +#: ../src/50-marco-window-key.xml.in.h:9 +msgid "Minimize window" +msgstr "Äpişgäni Kiçelt" + +#: ../src/50-marco-window-key.xml.in.h:10 +msgid "Move window" +msgstr "Äpişgäni Göçir" + +#: ../src/50-marco-window-key.xml.in.h:11 +msgid "Resize window" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:12 +msgid "Toggle whether window is on all workspaces or just one" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:13 +msgid "Raise window if it's covered by another window, otherwise lower it" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:14 +msgid "Raise window above other windows" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:15 +msgid "Lower window below other windows" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:16 +msgid "Maximize window vertically" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:17 +msgid "Maximize window horizontally" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:18 +msgid "Move window to north-west (top left) corner" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:19 +msgid "Move window to north-east (top right) corner" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:20 +msgid "Move window to south-west (bottom left) corner" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:21 +msgid "Move window to south-east (bottom right) corner" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:22 +msgid "Move window to north (top) side of screen" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:23 +msgid "Move window to south (bottom) side of screen" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:24 +msgid "Move window to east (right) side of screen" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:25 +msgid "Move window to west (left) side of screen" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:26 +msgid "Move window to center of screen" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:27 +msgid "Move window to workspace 1" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:28 +msgid "Move window to workspace 2" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:29 +msgid "Move window to workspace 3" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:30 +msgid "Move window to workspace 4" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:31 +msgid "Move window to workspace 5" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:32 +msgid "Move window to workspace 6" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:33 +msgid "Move window to workspace 7" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:34 +msgid "Move window to workspace 8" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:35 +msgid "Move window to workspace 9" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:36 +msgid "Move window to workspace 10" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:37 +msgid "Move window to workspace 11" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:38 +msgid "Move window to workspace 12" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:39 +msgid "Move window one workspace to the left" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:40 +msgid "Move window one workspace to the right" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:41 +msgid "Move window one workspace up" +msgstr "" + +#: ../src/50-marco-window-key.xml.in.h:42 +msgid "Move window one workspace down" +msgstr "" + #: ../src/core/bell.c:294 msgid "Bell event" msgstr "" -#: ../src/core/core.c:206 +#: ../src/core/core.c:207 #, c-format msgid "Unknown window information request: %d" msgstr "" @@ -59,17 +339,17 @@ msgstr "" msgid "Failed to get hostname: %s\n" msgstr "" -#: ../src/core/display.c:266 +#: ../src/core/display.c:268 #, c-format msgid "Missing %s extension required for compositing" msgstr "" -#: ../src/core/display.c:344 +#: ../src/core/display.c:346 #, c-format msgid "Failed to open X Window System display '%s'\n" msgstr "" -#: ../src/core/errors.c:272 +#: ../src/core/errors.c:313 #, c-format msgid "" "Lost connection to the display '%s';\n" @@ -77,7 +357,7 @@ msgid "" "the window manager.\n" msgstr "" -#: ../src/core/errors.c:279 +#: ../src/core/errors.c:320 #, c-format msgid "Fatal IO error %d (%s) on display '%s'.\n" msgstr "" @@ -91,8 +371,7 @@ msgstr "" #. Displayed when a keybinding which is #. * supposed to launch a program fails. -#. -#: ../src/core/keybindings.c:2294 +#: ../src/core/keybindings.c:2307 #, c-format msgid "" "There was an error running <tt>%s</tt>:\n" @@ -100,17 +379,17 @@ msgid "" "%s" msgstr "" -#: ../src/core/keybindings.c:2383 +#: ../src/core/keybindings.c:2396 #, c-format msgid "No command %d has been defined.\n" msgstr "" -#: ../src/core/keybindings.c:3337 +#: ../src/core/keybindings.c:3356 #, c-format msgid "No terminal command has been defined.\n" msgstr "" -#: ../src/core/main.c:131 +#: ../src/core/main.c:137 #, c-format msgid "" "marco %s\n" @@ -119,230 +398,176 @@ msgid "" "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" -#: ../src/core/main.c:269 +#: ../src/core/main.c:275 msgid "Disable connection to session manager" msgstr "" -#: ../src/core/main.c:275 +#: ../src/core/main.c:281 msgid "Replace the running window manager with Marco" msgstr "" -#: ../src/core/main.c:281 +#: ../src/core/main.c:287 msgid "Specify session management ID" msgstr "" -#: ../src/core/main.c:286 +#: ../src/core/main.c:292 msgid "X Display to use" msgstr "" -#: ../src/core/main.c:292 +#: ../src/core/main.c:298 msgid "Initialize session from savefile" msgstr "" -#: ../src/core/main.c:298 +#: ../src/core/main.c:304 msgid "Print version" msgstr "" -#: ../src/core/main.c:304 +#: ../src/core/main.c:310 msgid "Make X calls synchronous" msgstr "" -#: ../src/core/main.c:310 +#: ../src/core/main.c:316 msgid "Turn compositing on" msgstr "" -#: ../src/core/main.c:316 +#: ../src/core/main.c:322 msgid "Turn compositing off" msgstr "" -#: ../src/core/main.c:322 +#: ../src/core/main.c:328 msgid "" "Don't make fullscreen windows that are maximized and have no decorations" msgstr "" -#: ../src/core/main.c:528 +#: ../src/core/main.c:537 #, c-format msgid "Failed to scan themes directory: %s\n" msgstr "" -#: ../src/core/main.c:544 +#: ../src/core/main.c:553 #, c-format msgid "" "Could not find a theme! Be sure %s exists and contains the usual themes.\n" msgstr "" -#: ../src/core/main.c:603 +#: ../src/core/main.c:612 #, c-format msgid "Failed to restart: %s\n" msgstr "" -#. * We found it, but it was invalid. Complain. -#. * -#. * FIXME: This replicates the original behaviour, but in the future -#. * we might consider reverting invalid keys to their original values. -#. * (We know the old value, so we can look up a suitable string in -#. * the symtab.) -#. * -#. * (Empty comment follows so the translators don't see this.) -#. -#. -#: ../src/core/prefs.c:508 ../src/core/prefs.c:663 +#. FIXME: check if this can be avoided by GSettings +#. FIXME! GSettings, instead of MateConf, has Minimum/Maximun in schema! +#. * But some preferences depends on costants for minimum/maximum values +#: ../src/core/prefs.c:573 ../src/core/prefs.c:726 #, c-format -msgid "MateConf key '%s' is set to an invalid value\n" +msgid "%d stored in GSettings key %s is out of range %d to %d\n" msgstr "" -#: ../src/core/prefs.c:589 ../src/core/prefs.c:832 -#, c-format -msgid "%d stored in MateConf key %s is out of range %d to %d\n" -msgstr "" - -#: ../src/core/prefs.c:633 ../src/core/prefs.c:710 ../src/core/prefs.c:758 -#: ../src/core/prefs.c:822 ../src/core/prefs.c:1115 ../src/core/prefs.c:1131 -#: ../src/core/prefs.c:1148 ../src/core/prefs.c:1164 -#, c-format -msgid "MateConf key \"%s\" is set to an invalid type\n" -msgstr "" - -#: ../src/core/prefs.c:1234 +#: ../src/core/prefs.c:1023 msgid "" "Workarounds for broken applications disabled. Some applications may not " "behave properly.\n" msgstr "" -#: ../src/core/prefs.c:1305 +#: ../src/core/prefs.c:1090 #, c-format -msgid "Could not parse font description \"%s\" from MateConf key %s\n" +msgid "Could not parse font description \"%s\" from GSettings key %s\n" msgstr "" -#: ../src/core/prefs.c:1367 +#: ../src/core/prefs.c:1152 #, c-format msgid "" "\"%s\" found in configuration database is not a valid value for mouse button" " modifier\n" msgstr "" -#: ../src/core/prefs.c:1788 -#, c-format -msgid "Error setting number of workspaces to %d: %s\n" -msgstr "" - -#: ../src/core/prefs.c:1953 ../src/core/prefs.c:2456 -#, c-format -msgid "Workspace %d" -msgstr "" - -#: ../src/core/prefs.c:1983 ../src/core/prefs.c:2161 +#: ../src/core/prefs.c:1670 #, c-format msgid "" "\"%s\" found in configuration database is not a valid value for keybinding " "\"%s\"\n" msgstr "" -#: ../src/core/prefs.c:2537 +#: ../src/core/prefs.c:1973 #, c-format -msgid "Error setting name for workspace %d to \"%s\": %s\n" -msgstr "" - -#: ../src/core/prefs.c:2741 -#, c-format -msgid "Error setting compositor status: %s\n" +msgid "Workspace %d" msgstr "" -#: ../src/core/screen.c:357 +#: ../src/core/screen.c:358 #, c-format msgid "Screen %d on display '%s' is invalid\n" msgstr "" -#: ../src/core/screen.c:373 +#: ../src/core/screen.c:374 #, c-format msgid "" "Screen %d on display \"%s\" already has a window manager; try using the " "--replace option to replace the current window manager.\n" msgstr "" -#: ../src/core/screen.c:400 +#: ../src/core/screen.c:401 #, c-format msgid "Could not acquire window manager selection on screen %d display \"%s\"\n" msgstr "" -#: ../src/core/screen.c:458 +#: ../src/core/screen.c:459 #, c-format msgid "Screen %d on display \"%s\" already has a window manager\n" msgstr "" -#: ../src/core/screen.c:668 +#: ../src/core/screen.c:672 #, c-format msgid "Could not release screen %d on display \"%s\"\n" msgstr "" -#. Translators: Please don't translate "Control", "Shift", etc, since these -#. * are hardcoded (in gtk/gtkaccelgroup.c; it's not marco's fault). -#. * "disabled" must also stay as it is. -#. -#: ../src/core/schema-bindings.c:169 -msgid "" -"The format looks like \"<Control>a\" or \"<Shift><Alt>F1\".\n" -"\n" -"The parser is fairly liberal and allows lower or upper case, and also abbreviations such as \"<Ctl>\" and \"<Ctrl>\". If you set the option to the special string \"disabled\", then there will be no keybinding for this action." -msgstr "" - -#: ../src/core/schema-bindings.c:177 -msgid "" -"The format looks like \"<Control>a\" or \"<Shift><Alt>F1\".\n" -"\n" -"The parser is fairly liberal and allows lower or upper case, and also abbreviations such as \"<Ctl>\" and \"<Ctrl>\". If you set the option to the special string \"disabled\", then there will be no keybinding for this action.\n" -"\n" -"This keybinding may be reversed by holding down the \"shift\" key; therefore, \"shift\" cannot be one of the keys it uses." -msgstr "" - -#: ../src/core/session.c:850 ../src/core/session.c:857 +#: ../src/core/session.c:842 ../src/core/session.c:849 #, c-format msgid "Could not create directory '%s': %s\n" msgstr "" -#: ../src/core/session.c:867 +#: ../src/core/session.c:859 #, c-format msgid "Could not open session file '%s' for writing: %s\n" msgstr "" -#: ../src/core/session.c:1008 +#: ../src/core/session.c:1000 #, c-format msgid "Error writing session file '%s': %s\n" msgstr "" -#: ../src/core/session.c:1013 +#: ../src/core/session.c:1005 #, c-format msgid "Error closing session file '%s': %s\n" msgstr "" -#: ../src/core/session.c:1143 +#: ../src/core/session.c:1135 #, c-format msgid "Failed to parse saved session file: %s\n" msgstr "" -#: ../src/core/session.c:1192 +#: ../src/core/session.c:1184 #, c-format msgid "<marco_session> attribute seen but we already have the session ID" msgstr "" -#: ../src/core/session.c:1205 ../src/core/session.c:1280 -#: ../src/core/session.c:1312 ../src/core/session.c:1384 -#: ../src/core/session.c:1444 +#: ../src/core/session.c:1197 ../src/core/session.c:1272 +#: ../src/core/session.c:1304 ../src/core/session.c:1376 +#: ../src/core/session.c:1436 #, c-format msgid "Unknown attribute %s on <%s> element" msgstr "" -#: ../src/core/session.c:1222 +#: ../src/core/session.c:1214 #, c-format msgid "nested <window> tag" msgstr "" -#: ../src/core/session.c:1464 +#: ../src/core/session.c:1456 #, c-format msgid "Unknown element %s" msgstr "" -#: ../src/core/session.c:1816 +#: ../src/core/session.c:1808 msgid "" "These windows do not support "save current setup" and will have to" " be restarted manually next time you log in." @@ -385,14 +610,13 @@ msgid "Window manager error: " msgstr "" #. Translators: This is the title used on dialog boxes -#. eof all-keybindings.h #: ../src/core/util.c:570 ../src/marco.desktop.in.h:1 #: ../src/marco-wm.desktop.in.h:1 msgid "Marco" msgstr "Marco" #. first time through -#: ../src/core/window.c:5660 +#: ../src/core/window.c:5766 #, c-format msgid "" "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " @@ -405,46 +629,45 @@ msgstr "" #. * leads to e.g. us not fullscreening their windows. Apps that set #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain #. * about these apps but make them work. -#. -#: ../src/core/window.c:6225 +#: ../src/core/window.c:6331 #, c-format msgid "" "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " "%d x %d and max size %d x %d; this doesn't make much sense.\n" msgstr "" -#: ../src/core/window-props.c:244 +#: ../src/core/window-props.c:252 #, c-format msgid "Application set a bogus _NET_WM_PID %lu\n" msgstr "" #. Translators: the title of a window from another machine -#: ../src/core/window-props.c:388 +#: ../src/core/window-props.c:396 #, c-format msgid "%s (on %s)" msgstr "" #. Simple case-- don't bother to look it up. It's root. -#: ../src/core/window-props.c:420 +#: ../src/core/window-props.c:428 #, c-format msgid "%s (as superuser)" msgstr "" #. Translators: the title of a window owned by another user #. * on this machine -#: ../src/core/window-props.c:438 +#: ../src/core/window-props.c:446 #, c-format msgid "%s (as %s)" msgstr "" #. Translators: the title of a window owned by another user #. * on this machine, whose name we don't know -#: ../src/core/window-props.c:444 +#: ../src/core/window-props.c:452 #, c-format msgid "%s (as another user)" msgstr "" -#: ../src/core/window-props.c:1430 +#: ../src/core/window-props.c:1438 #, c-format msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" msgstr "" @@ -471,698 +694,52 @@ msgid "" "list\n" msgstr "" -#: ../src/include/all-keybindings.h:88 -msgid "Switch to workspace 1" -msgstr "" - -#: ../src/include/all-keybindings.h:90 -msgid "Switch to workspace 2" -msgstr "" - -#: ../src/include/all-keybindings.h:92 -msgid "Switch to workspace 3" -msgstr "" - -#: ../src/include/all-keybindings.h:94 -msgid "Switch to workspace 4" -msgstr "" - -#: ../src/include/all-keybindings.h:96 -msgid "Switch to workspace 5" -msgstr "" - -#: ../src/include/all-keybindings.h:98 -msgid "Switch to workspace 6" -msgstr "" - -#: ../src/include/all-keybindings.h:100 -msgid "Switch to workspace 7" -msgstr "" - -#: ../src/include/all-keybindings.h:102 -msgid "Switch to workspace 8" -msgstr "" - -#: ../src/include/all-keybindings.h:104 -msgid "Switch to workspace 9" -msgstr "" - -#: ../src/include/all-keybindings.h:106 -msgid "Switch to workspace 10" -msgstr "" - -#: ../src/include/all-keybindings.h:108 -msgid "Switch to workspace 11" -msgstr "" - -#: ../src/include/all-keybindings.h:110 -msgid "Switch to workspace 12" -msgstr "" - -#: ../src/include/all-keybindings.h:122 -msgid "Switch to workspace on the left of the current workspace" -msgstr "" - -#: ../src/include/all-keybindings.h:126 -msgid "Switch to workspace on the right of the current workspace" -msgstr "" - -#: ../src/include/all-keybindings.h:130 -msgid "Switch to workspace above the current workspace" -msgstr "" - -#: ../src/include/all-keybindings.h:134 -msgid "Switch to workspace below the current workspace" -msgstr "" - -#: ../src/include/all-keybindings.h:150 -msgid "Move between windows of an application, using a popup window" -msgstr "" - -#: ../src/include/all-keybindings.h:153 -msgid "Move backward between windows of an application, using a popup window" -msgstr "" - -#: ../src/include/all-keybindings.h:157 -msgid "Move between windows, using a popup window" -msgstr "" - -#: ../src/include/all-keybindings.h:160 -msgid "Move backward between windows, using a popup window" -msgstr "" - -#: ../src/include/all-keybindings.h:163 -msgid "Move between panels and the desktop, using a popup window" -msgstr "" - -#: ../src/include/all-keybindings.h:166 -msgid "Move backward between panels and the desktop, using a popup window" -msgstr "" - -#: ../src/include/all-keybindings.h:171 -msgid "Move between windows of an application immediately" -msgstr "" - -#: ../src/include/all-keybindings.h:174 -msgid "Move backward between windows of an application immediately" -msgstr "" - -#: ../src/include/all-keybindings.h:177 -msgid "Move between windows immediately" -msgstr "" - -#: ../src/include/all-keybindings.h:180 -msgid "Move backward between windows immediately" -msgstr "" - -#: ../src/include/all-keybindings.h:183 -msgid "Move between panels and the desktop immediately" -msgstr "" - -#: ../src/include/all-keybindings.h:186 -msgid "Move backward between panels and the desktop immediately" -msgstr "" - -#: ../src/include/all-keybindings.h:191 -msgid "Hide all normal windows and set focus to the desktop" -msgstr "" - -#: ../src/include/all-keybindings.h:194 -msgid "Show the panel's main menu" -msgstr "" - -#: ../src/include/all-keybindings.h:197 -msgid "Show the panel's \"Run Application\" dialog box" -msgstr "" - -#: ../src/include/all-keybindings.h:238 -msgid "Take a screenshot" -msgstr "" - -#: ../src/include/all-keybindings.h:240 -msgid "Take a screenshot of a window" -msgstr "" - -#: ../src/include/all-keybindings.h:242 -msgid "Run a terminal" -msgstr "" - -#: ../src/include/all-keybindings.h:257 -msgid "Activate the window menu" -msgstr "" - -#: ../src/include/all-keybindings.h:260 -msgid "Toggle fullscreen mode" -msgstr "" - -#: ../src/include/all-keybindings.h:262 -msgid "Toggle maximization state" -msgstr "" - -#: ../src/include/all-keybindings.h:264 -msgid "Toggle whether a window will always be visible over other windows" -msgstr "" - -#: ../src/include/all-keybindings.h:266 -msgid "Maximize window" -msgstr "Äpişgäni Ulalt" - -#: ../src/include/all-keybindings.h:268 -msgid "Restore window" -msgstr "" - -#: ../src/include/all-keybindings.h:270 -msgid "Toggle shaded state" -msgstr "" - -#: ../src/include/all-keybindings.h:272 -msgid "Minimize window" -msgstr "Äpişgäni Kiçelt" - -#: ../src/include/all-keybindings.h:274 -msgid "Close window" -msgstr "Äpişgäni Bagla" - -#: ../src/include/all-keybindings.h:276 -msgid "Move window" -msgstr "Äpişgäni Göçir" - -#: ../src/include/all-keybindings.h:278 -msgid "Resize window" -msgstr "" - -#: ../src/include/all-keybindings.h:281 -msgid "Toggle whether window is on all workspaces or just one" -msgstr "" - -#: ../src/include/all-keybindings.h:285 -msgid "Move window to workspace 1" -msgstr "" - -#: ../src/include/all-keybindings.h:288 -msgid "Move window to workspace 2" -msgstr "" - -#: ../src/include/all-keybindings.h:291 -msgid "Move window to workspace 3" -msgstr "" - -#: ../src/include/all-keybindings.h:294 -msgid "Move window to workspace 4" -msgstr "" - -#: ../src/include/all-keybindings.h:297 -msgid "Move window to workspace 5" -msgstr "" - -#: ../src/include/all-keybindings.h:300 -msgid "Move window to workspace 6" -msgstr "" - -#: ../src/include/all-keybindings.h:303 -msgid "Move window to workspace 7" -msgstr "" - -#: ../src/include/all-keybindings.h:306 -msgid "Move window to workspace 8" -msgstr "" - -#: ../src/include/all-keybindings.h:309 -msgid "Move window to workspace 9" -msgstr "" - -#: ../src/include/all-keybindings.h:312 -msgid "Move window to workspace 10" -msgstr "" - -#: ../src/include/all-keybindings.h:315 -msgid "Move window to workspace 11" -msgstr "" - -#: ../src/include/all-keybindings.h:318 -msgid "Move window to workspace 12" -msgstr "" - -#: ../src/include/all-keybindings.h:330 -msgid "Move window one workspace to the left" -msgstr "" - -#: ../src/include/all-keybindings.h:333 -msgid "Move window one workspace to the right" -msgstr "" - -#: ../src/include/all-keybindings.h:336 -msgid "Move window one workspace up" -msgstr "" - -#: ../src/include/all-keybindings.h:339 -msgid "Move window one workspace down" -msgstr "" - -#: ../src/include/all-keybindings.h:342 -msgid "Raise window if it's covered by another window, otherwise lower it" -msgstr "" - -#: ../src/include/all-keybindings.h:344 -msgid "Raise window above other windows" -msgstr "" - -#: ../src/include/all-keybindings.h:346 -msgid "Lower window below other windows" -msgstr "" - -#: ../src/include/all-keybindings.h:350 -msgid "Maximize window vertically" -msgstr "" - -#: ../src/include/all-keybindings.h:354 -msgid "Maximize window horizontally" -msgstr "" - -#: ../src/include/all-keybindings.h:358 -msgid "Move window to north-west (top left) corner" -msgstr "" - -#: ../src/include/all-keybindings.h:361 -msgid "Move window to north-east (top right) corner" -msgstr "" - -#: ../src/include/all-keybindings.h:364 -msgid "Move window to south-west (bottom left) corner" -msgstr "" - -#: ../src/include/all-keybindings.h:367 -msgid "Move window to south-east (bottom right) corner" -msgstr "" - -#: ../src/include/all-keybindings.h:371 -msgid "Move window to north (top) side of screen" -msgstr "" - -#: ../src/include/all-keybindings.h:374 -msgid "Move window to south (bottom) side of screen" -msgstr "" - -#: ../src/include/all-keybindings.h:377 -msgid "Move window to east (right) side of screen" -msgstr "" - -#: ../src/include/all-keybindings.h:380 -msgid "Move window to west (left) side of screen" -msgstr "" - -#: ../src/include/all-keybindings.h:383 -msgid "Move window to center of screen" -msgstr "" - -#: ../src/marco.schemas.in.in.h:1 -msgid "" -"(Not implemented) Navigation works in terms of applications not windows" -msgstr "" - -#: ../src/marco.schemas.in.in.h:2 -msgid "" -"A font description string describing a font for window titlebars. The size " -"from the description will only be used if the titlebar_font_size option is " -"set to 0. Also, this option is disabled if the titlebar_uses_desktop_font " -"option is set to true." -msgstr "" - -#: ../src/marco.schemas.in.in.h:3 -msgid "Action on title bar double-click" -msgstr "" - -#: ../src/marco.schemas.in.in.h:4 -msgid "Action on title bar middle-click" -msgstr "" - -#: ../src/marco.schemas.in.in.h:5 -msgid "Action on title bar right-click" -msgstr "" - -#: ../src/marco.schemas.in.in.h:6 -msgid "Arrangement of buttons on the titlebar" -msgstr "" - -#: ../src/marco.schemas.in.in.h:7 -msgid "" -"Arrangement of buttons on the titlebar. The value should be a string, such " -"as \"menu:minimize,maximize,spacer,close\"; the colon separates the left " -"corner of the window from the right corner, and the button names are comma-" -"separated. Duplicate buttons are not allowed. Unknown button names are " -"silently ignored so that buttons can be added in future marco versions " -"without breaking older versions. A special spacer tag can be used to insert " -"some space between two adjacent buttons." -msgstr "" - -#: ../src/marco.schemas.in.in.h:8 -msgid "Automatically raises the focused window" -msgstr "" - -#: ../src/marco.schemas.in.in.h:9 -msgid "" -"Clicking a window while holding down this modifier key will move the window " -"(left click), resize the window (middle click), or show the window menu " -"(right click). The middle and right click operations may be swapped using " -"the \"resize_with_right_button\" key. Modifier is expressed as " -"\"<Alt>\" or \"<Super>\" for example." -msgstr "" - -#: ../src/marco.schemas.in.in.h:10 -msgid "Commands to run in response to keybindings" -msgstr "" - -#: ../src/marco.schemas.in.in.h:11 -msgid "Compositing Manager" -msgstr "" - -#: ../src/marco.schemas.in.in.h:12 -msgid "Control how new windows get focus" -msgstr "" - -#: ../src/marco.schemas.in.in.h:13 -msgid "Current theme" -msgstr "" - -#: ../src/marco.schemas.in.in.h:14 -msgid "Delay in milliseconds for the auto raise option" -msgstr "" - -#: ../src/marco.schemas.in.in.h:15 -msgid "Determines whether Marco is a compositing manager." -msgstr "" - -#: ../src/marco.schemas.in.in.h:16 -msgid "" -"Determines whether applications or the system can generate audible 'beeps'; " -"may be used in conjunction with 'visual bell' to allow silent 'beeps'." -msgstr "" - -#: ../src/marco.schemas.in.in.h:17 -msgid "Disable misfeatures that are required by old or broken applications" -msgstr "" - -#: ../src/marco.schemas.in.in.h:18 -msgid "Enable Visual Bell" -msgstr "" - -#: ../src/marco.schemas.in.in.h:19 -msgid "" -"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " -"the focused window will be automatically raised after a delay specified by " -"the auto_raise_delay key. This is not related to clicking on a window to " -"raise it, nor to entering a window during drag-and-drop." -msgstr "" - -#: ../src/marco.schemas.in.in.h:20 -msgid "" -"If true, ignore the titlebar_font option, and use the standard application " -"font for window titles." -msgstr "" - -#: ../src/marco.schemas.in.in.h:21 -msgid "" -"If true, marco will give the user less feedback by using wireframes, " -"avoiding animations, or other means. This is a significant reduction in " -"usability for many users, but may allow legacy applications to continue " -"working, and may also be a useful tradeoff for terminal servers. However, " -"the wireframe feature is disabled when accessibility is on." -msgstr "" - -#: ../src/marco.schemas.in.in.h:22 -msgid "" -"If true, then Marco works in terms of applications rather than windows. The " -"concept is a bit abstract, but in general an application-based setup is more" -" like the Mac and less like Windows. When you focus a window in application-" -"based mode, all the windows in the application will be raised. Also, in " -"application-based mode, focus clicks are not passed through to windows in " -"other applications. Application-based mode is, however, largely " -"unimplemented at the moment." -msgstr "" - -#: ../src/marco.schemas.in.in.h:23 -msgid "If true, trade off usability for less resource usage" -msgstr "" - -#: ../src/marco.schemas.in.in.h:24 -msgid "Modifier to use for modified window click actions" -msgstr "" - -#: ../src/marco.schemas.in.in.h:25 -msgid "Name of workspace" -msgstr "" - -#: ../src/marco.schemas.in.in.h:26 -msgid "Number of workspaces" -msgstr "" - -#: ../src/marco.schemas.in.in.h:27 -msgid "" -"Number of workspaces. Must be more than zero, and has a fixed maximum to " -"prevent making the desktop unusable by accidentally asking for too many " -"workspaces." -msgstr "" - -#: ../src/marco.schemas.in.in.h:28 -msgid "Run a defined command" -msgstr "" - -#: ../src/marco.schemas.in.in.h:29 -msgid "" -"Set this to true to resize with the right button and show a menu with the " -"middle button while holding down the key given in \"mouse_button_modifier\";" -" set it to false to make it work the opposite way around." -msgstr "" - -#: ../src/marco.schemas.in.in.h:30 -msgid "" -"Setting this option to false can lead to buggy behavior, so users are " -"strongly discouraged from changing it from the default of true. Many actions" -" (e.g. clicking in the client area, moving or resizing the window) normally " -"raise the window as a side-effect. Setting this option to false, which is " -"strongly discouraged, will decouple raising from other user actions, and " -"ignore raise requests generated by applications. See " -"http://bugzilla.gnome.org/show_bug.cgi?id=445447#c6. Even when this option " -"is false, windows can still be raised by an alt-left-click anywhere on the " -"window, a normal click on the window decorations, or by special messages " -"from pagers, such as activation requests from tasklist applets. This option " -"is currently disabled in click-to-focus mode. Note that the list of ways to " -"raise windows when raise_on_click is false does not include programmatic " -"requests from applications to raise windows; such requests will be ignored " -"regardless of the reason for the request. If you are an application " -"developer and have a user complaining that your application does not work " -"with this setting disabled, tell them it is _their_ fault for breaking their" -" window manager and that they need to change this option back to true or " -"live with the \"bug\" they requested." -msgstr "" - -#: ../src/marco.schemas.in.in.h:31 -msgid "" -"Some applications disregard specifications in ways that result in window " -"manager misfeatures. This option puts Marco in a rigorously correct mode, " -"which gives a more consistent user interface, provided one does not need to " -"run any misbehaving applications." -msgstr "" - -#: ../src/marco.schemas.in.in.h:32 -msgid "System Bell is Audible" -msgstr "" - -#: ../src/marco.schemas.in.in.h:33 -msgid "" -"Tells Marco how to implement the visual indication that the system bell or " -"another application 'bell' indicator has been rung. Currently there are two " -"valid values, \"fullscreen\", which causes a fullscreen white-black flash, " -"and \"frame_flash\" which causes the titlebar of the application which sent " -"the bell signal to flash. If the application which sent the bell is unknown " -"(as is usually the case for the default \"system beep\"), the currently " -"focused window's titlebar is flashed." -msgstr "" - -#: ../src/marco.schemas.in.in.h:34 -msgid "" -"The /apps/marco/global_keybindings/run_command_N keys define keybindings " -"that correspond to these commands. Pressing the keybinding for run_command_N" -" will execute command_N." -msgstr "" - -#: ../src/marco.schemas.in.in.h:35 -msgid "" -"The /apps/marco/global_keybindings/run_command_screenshot key defines a " -"keybinding which causes the command specified by this setting to be invoked." -msgstr "" - -#: ../src/marco.schemas.in.in.h:36 -msgid "" -"The /apps/marco/global_keybindings/run_command_window_screenshot key defines" -" a keybinding which causes the command specified by this setting to be " -"invoked." -msgstr "" - -#: ../src/marco.schemas.in.in.h:37 -msgid "" -"The keybinding that runs the correspondingly-numbered command in " -"/apps/marco/keybinding_commands The format looks like \"<Control>a\" " -"or \"<Shift><Alt>F1\". The parser is fairly liberal and allows " -"lower or upper case, and also abbreviations such as \"<Ctl>\" and " -"\"<Ctrl>\". If you set the option to the special string \"disabled\", " -"then there will be no keybinding for this action." -msgstr "" - -#: ../src/marco.schemas.in.in.h:38 -msgid "The name of a workspace." -msgstr "" - -#: ../src/marco.schemas.in.in.h:39 -msgid "The screenshot command" -msgstr "" - -#: ../src/marco.schemas.in.in.h:40 -msgid "" -"The theme determines the appearance of window borders, titlebar, and so " -"forth." -msgstr "" - -#: ../src/marco.schemas.in.in.h:41 -msgid "" -"The time delay before raising a window if auto_raise is set to true. The " -"delay is given in thousandths of a second." -msgstr "" - -#: ../src/marco.schemas.in.in.h:42 -msgid "" -"The window focus mode indicates how windows are activated. It has three " -"possible values; \"click\" means windows must be clicked in order to focus " -"them, \"sloppy\" means windows are focused when the mouse enters the window," -" and \"mouse\" means windows are focused when the mouse enters the window " -"and unfocused when the mouse leaves the window." -msgstr "" - -#: ../src/marco.schemas.in.in.h:43 -msgid "The window screenshot command" -msgstr "" - -#: ../src/marco.schemas.in.in.h:44 -msgid "" -"This option determines the effects of double-clicking on the title bar. " -"Current valid options are 'toggle_shade', which will shade/unshade the " -"window, 'toggle_maximize' which will maximize/unmaximize the window, " -"'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will " -"maximize/unmaximize the window in that direction only, 'minimize' which will" -" minimize the window, 'shade' which will roll the window up, 'menu' which " -"will display the window menu, 'lower' which will put the window behind all " -"the others, and 'none' which will not do anything." -msgstr "" - -#: ../src/marco.schemas.in.in.h:45 -msgid "" -"This option determines the effects of middle-clicking on the title bar. " -"Current valid options are 'toggle_shade', which will shade/unshade the " -"window, 'toggle_maximize' which will maximize/unmaximize the window, " -"'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will " -"maximize/unmaximize the window in that direction only, 'minimize' which will" -" minimize the window, 'shade' which will roll the window up, 'menu' which " -"will display the window menu, 'lower' which will put the window behind all " -"the others, and 'none' which will not do anything." -msgstr "" - -#: ../src/marco.schemas.in.in.h:46 -msgid "" -"This option determines the effects of right-clicking on the title bar. " -"Current valid options are 'toggle_shade', which will shade/unshade the " -"window, 'toggle_maximize' which will maximize/unmaximize the window, " -"'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will " -"maximize/unmaximize the window in that direction only, 'minimize' which will" -" minimize the window, 'shade' which will roll the window up, 'menu' which " -"will display the window menu, 'lower' which will put the window behind all " -"the others, and 'none' which will not do anything." -msgstr "" - -#: ../src/marco.schemas.in.in.h:47 -msgid "" -"This option provides additional control over how newly created windows get " -"focus. It has two possible values; \"smart\" applies the user's normal focus" -" mode, and \"strict\" results in windows started from a terminal not being " -"given focus." -msgstr "" - -#: ../src/marco.schemas.in.in.h:48 -msgid "" -"Turns on a visual indication when an application or the system issues a " -"'bell' or 'beep'; useful for the hard-of-hearing and for use in noisy " -"environments." -msgstr "" - -#: ../src/marco.schemas.in.in.h:49 -msgid "Use standard system font in window titles" -msgstr "" - -#: ../src/marco.schemas.in.in.h:50 -msgid "Visual Bell Type" -msgstr "" - -#: ../src/marco.schemas.in.in.h:51 -msgid "Whether raising should be a side-effect of other user interactions" -msgstr "" - -#: ../src/marco.schemas.in.in.h:52 -msgid "Whether to resize with the right button" -msgstr "" - -#: ../src/marco.schemas.in.in.h:53 -msgid "Window focus mode" -msgstr "" - -#: ../src/marco.schemas.in.in.h:54 -msgid "Window title font" -msgstr "" - #: ../src/tools/marco-message.c:150 #, c-format msgid "Usage: %s\n" msgstr "" -#: ../src/ui/frames.c:1124 +#: ../src/ui/frames.c:1199 msgid "Close Window" msgstr "Äpişgäni Bagla" -#: ../src/ui/frames.c:1127 +#: ../src/ui/frames.c:1202 msgid "Window Menu" msgstr "Äpişge Menüsi" -#: ../src/ui/frames.c:1130 +#: ../src/ui/frames.c:1205 msgid "Minimize Window" msgstr "Äpişgäni Kiçelt" -#: ../src/ui/frames.c:1133 +#: ../src/ui/frames.c:1208 msgid "Maximize Window" msgstr "Äpişgäni Ulalt" -#: ../src/ui/frames.c:1136 +#: ../src/ui/frames.c:1211 msgid "Restore Window" msgstr "" -#: ../src/ui/frames.c:1139 +#: ../src/ui/frames.c:1214 msgid "Roll Up Window" msgstr "" -#: ../src/ui/frames.c:1142 +#: ../src/ui/frames.c:1217 msgid "Unroll Window" msgstr "" -#: ../src/ui/frames.c:1145 +#: ../src/ui/frames.c:1220 msgid "Keep Window On Top" msgstr "" -#: ../src/ui/frames.c:1148 +#: ../src/ui/frames.c:1223 msgid "Remove Window From Top" msgstr "" -#: ../src/ui/frames.c:1151 +#: ../src/ui/frames.c:1226 msgid "Always On Visible Workspace" msgstr "" -#: ../src/ui/frames.c:1154 +#: ../src/ui/frames.c:1229 msgid "Put Window On Only One Workspace" msgstr "" @@ -1271,8 +848,7 @@ msgstr "" #. * that use the shift key. If the text on this key isn't typically #. * translated on keyboards used for your language, don't translate #. * this. -#. -#: ../src/ui/metaaccellabel.c:104 +#: ../src/ui/metaaccellabel.c:143 msgid "Shift" msgstr "Şift" @@ -1280,8 +856,7 @@ msgstr "Şift" #. * that use the control key. If the text on this key isn't typically #. * translated on keyboards used for your language, don't translate #. * this. -#. -#: ../src/ui/metaaccellabel.c:110 +#: ../src/ui/metaaccellabel.c:149 msgid "Ctrl" msgstr "Kontrol" @@ -1289,8 +864,7 @@ msgstr "Kontrol" #. * that use the alt key. If the text on this key isn't typically #. * translated on keyboards used for your language, don't translate #. * this. -#. -#: ../src/ui/metaaccellabel.c:116 +#: ../src/ui/metaaccellabel.c:155 msgid "Alt" msgstr "Alt" @@ -1298,8 +872,7 @@ msgstr "Alt" #. * that use the meta key. If the text on this key isn't typically #. * translated on keyboards used for your language, don't translate #. * this. -#. -#: ../src/ui/metaaccellabel.c:122 +#: ../src/ui/metaaccellabel.c:161 msgid "Meta" msgstr "Meta" @@ -1307,8 +880,7 @@ msgstr "Meta" #. * that use the super key. If the text on this key isn't typically #. * translated on keyboards used for your language, don't translate #. * this. -#. -#: ../src/ui/metaaccellabel.c:128 +#: ../src/ui/metaaccellabel.c:167 msgid "Super" msgstr "Super" @@ -1316,8 +888,7 @@ msgstr "Super" #. * that use the hyper key. If the text on this key isn't typically #. * translated on keyboards used for your language, don't translate #. * this. -#. -#: ../src/ui/metaaccellabel.c:134 +#: ../src/ui/metaaccellabel.c:173 msgid "Hyper" msgstr "Hyper" @@ -1325,8 +896,7 @@ msgstr "Hyper" #. * that use the mod2 key. If the text on this key isn't typically #. * translated on keyboards used for your language, don't translate #. * this. -#. -#: ../src/ui/metaaccellabel.c:140 +#: ../src/ui/metaaccellabel.c:179 msgid "Mod2" msgstr "Mod2" @@ -1334,8 +904,7 @@ msgstr "Mod2" #. * that use the mod3 key. If the text on this key isn't typically #. * translated on keyboards used for your language, don't translate #. * this. -#. -#: ../src/ui/metaaccellabel.c:146 +#: ../src/ui/metaaccellabel.c:185 msgid "Mod3" msgstr "Mod3" @@ -1343,8 +912,7 @@ msgstr "Mod3" #. * that use the mod4 key. If the text on this key isn't typically #. * translated on keyboards used for your language, don't translate #. * this. -#. -#: ../src/ui/metaaccellabel.c:152 +#: ../src/ui/metaaccellabel.c:191 msgid "Mod4" msgstr "Mod4" @@ -1352,15 +920,13 @@ msgstr "Mod4" #. * that use the mod5 key. If the text on this key isn't typically #. * translated on keyboards used for your language, don't translate #. * this. -#. -#: ../src/ui/metaaccellabel.c:158 +#: ../src/ui/metaaccellabel.c:197 msgid "Mod5" msgstr "Mod5" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. -#. -#: ../src/ui/resizepopup.c:113 +#: ../src/ui/resizepopup.c:117 #, c-format msgid "%d x %d" msgstr "%d x %d" @@ -1401,208 +967,207 @@ msgstr "" msgid "Frame geometry does not specify size of buttons" msgstr "" -#: ../src/ui/theme.c:1021 +#: ../src/ui/theme.c:1027 #, c-format msgid "Gradients should have at least two colors" msgstr "" -#: ../src/ui/theme.c:1147 +#: ../src/ui/theme.c:1153 #, c-format msgid "" "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL]" " where NORMAL is the state; could not parse \"%s\"" msgstr "" -#: ../src/ui/theme.c:1161 +#: ../src/ui/theme.c:1167 #, c-format msgid "" "GTK color specification must have a close bracket after the state, e.g. " "gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\"" msgstr "" -#: ../src/ui/theme.c:1172 +#: ../src/ui/theme.c:1178 #, c-format msgid "Did not understand state \"%s\" in color specification" msgstr "" -#: ../src/ui/theme.c:1185 +#: ../src/ui/theme.c:1191 #, c-format msgid "Did not understand color component \"%s\" in color specification" msgstr "" -#: ../src/ui/theme.c:1215 +#: ../src/ui/theme.c:1221 #, c-format msgid "" "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the " "format" msgstr "" -#: ../src/ui/theme.c:1226 +#: ../src/ui/theme.c:1232 #, c-format msgid "Could not parse alpha value \"%s\" in blended color" msgstr "" -#: ../src/ui/theme.c:1236 +#: ../src/ui/theme.c:1242 #, c-format msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0" msgstr "" -#: ../src/ui/theme.c:1283 +#: ../src/ui/theme.c:1289 #, c-format msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format" msgstr "" -#: ../src/ui/theme.c:1294 +#: ../src/ui/theme.c:1300 #, c-format msgid "Could not parse shade factor \"%s\" in shaded color" msgstr "" -#: ../src/ui/theme.c:1304 +#: ../src/ui/theme.c:1310 #, c-format msgid "Shade factor \"%s\" in shaded color is negative" msgstr "" -#: ../src/ui/theme.c:1333 +#: ../src/ui/theme.c:1339 #, c-format msgid "Could not parse color \"%s\"" msgstr "" -#: ../src/ui/theme.c:1587 +#: ../src/ui/theme.c:1593 #, c-format msgid "Coordinate expression contains character '%s' which is not allowed" msgstr "" -#: ../src/ui/theme.c:1614 +#: ../src/ui/theme.c:1620 #, c-format msgid "" "Coordinate expression contains floating point number '%s' which could not be" " parsed" msgstr "" -#: ../src/ui/theme.c:1628 +#: ../src/ui/theme.c:1634 #, c-format msgid "Coordinate expression contains integer '%s' which could not be parsed" msgstr "" -#: ../src/ui/theme.c:1750 +#: ../src/ui/theme.c:1756 #, c-format msgid "" "Coordinate expression contained unknown operator at the start of this text: " "\"%s\"" msgstr "" -#: ../src/ui/theme.c:1807 +#: ../src/ui/theme.c:1813 #, c-format msgid "Coordinate expression was empty or not understood" msgstr "" -#: ../src/ui/theme.c:1918 ../src/ui/theme.c:1928 ../src/ui/theme.c:1962 +#: ../src/ui/theme.c:1924 ../src/ui/theme.c:1934 ../src/ui/theme.c:1968 #, c-format msgid "Coordinate expression results in division by zero" msgstr "" -#: ../src/ui/theme.c:1970 +#: ../src/ui/theme.c:1976 #, c-format msgid "" "Coordinate expression tries to use mod operator on a floating-point number" msgstr "" -#: ../src/ui/theme.c:2026 +#: ../src/ui/theme.c:2032 #, c-format msgid "Coordinate expression has an operator \"%s\" where an operand was expected" msgstr "" -#: ../src/ui/theme.c:2035 +#: ../src/ui/theme.c:2041 #, c-format msgid "Coordinate expression had an operand where an operator was expected" msgstr "" -#: ../src/ui/theme.c:2043 +#: ../src/ui/theme.c:2049 #, c-format msgid "Coordinate expression ended with an operator instead of an operand" msgstr "" -#: ../src/ui/theme.c:2053 +#: ../src/ui/theme.c:2059 #, c-format msgid "" "Coordinate expression has operator \"%c\" following operator \"%c\" with no " "operand in between" msgstr "" -#: ../src/ui/theme.c:2200 ../src/ui/theme.c:2241 +#: ../src/ui/theme.c:2206 ../src/ui/theme.c:2247 #, c-format msgid "Coordinate expression had unknown variable or constant \"%s\"" msgstr "" -#: ../src/ui/theme.c:2295 +#: ../src/ui/theme.c:2301 #, c-format msgid "Coordinate expression parser overflowed its buffer." msgstr "" -#: ../src/ui/theme.c:2324 +#: ../src/ui/theme.c:2330 #, c-format msgid "Coordinate expression had a close parenthesis with no open parenthesis" msgstr "" -#: ../src/ui/theme.c:2388 +#: ../src/ui/theme.c:2394 #, c-format msgid "" "Coordinate expression had an open parenthesis with no close parenthesis" msgstr "" -#: ../src/ui/theme.c:2399 +#: ../src/ui/theme.c:2405 #, c-format msgid "Coordinate expression doesn't seem to have any operators or operands" msgstr "" -#: ../src/ui/theme.c:2603 ../src/ui/theme.c:2623 ../src/ui/theme.c:2643 +#: ../src/ui/theme.c:2609 ../src/ui/theme.c:2629 ../src/ui/theme.c:2649 #, c-format msgid "Theme contained an expression that resulted in an error: %s\n" msgstr "" -#: ../src/ui/theme.c:4220 +#: ../src/ui/theme.c:4456 #, c-format msgid "" "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be " "specified for this frame style" msgstr "" -#: ../src/ui/theme.c:4728 ../src/ui/theme.c:4753 +#: ../src/ui/theme.c:5089 ../src/ui/theme.c:5114 #, c-format msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" msgstr "" -#: ../src/ui/theme.c:4797 +#: ../src/ui/theme.c:5158 #, c-format msgid "Failed to load theme \"%s\": %s\n" msgstr "" -#: ../src/ui/theme.c:4927 ../src/ui/theme.c:4934 ../src/ui/theme.c:4941 -#: ../src/ui/theme.c:4948 ../src/ui/theme.c:4955 +#: ../src/ui/theme.c:5288 ../src/ui/theme.c:5295 ../src/ui/theme.c:5302 +#: ../src/ui/theme.c:5309 ../src/ui/theme.c:5316 #, c-format msgid "No <%s> set for theme \"%s\"" msgstr "" -#: ../src/ui/theme.c:4963 +#: ../src/ui/theme.c:5324 #, c-format msgid "" "No frame style set for window type \"%s\" in theme \"%s\", add a <window " "type=\"%s\" style_set=\"whatever\"/> element" msgstr "" -#: ../src/ui/theme.c:5406 ../src/ui/theme.c:5468 ../src/ui/theme.c:5531 +#: ../src/ui/theme.c:5797 ../src/ui/theme.c:5859 ../src/ui/theme.c:5922 #, c-format msgid "User-defined constants must begin with a capital letter; \"%s\" does not" msgstr "" -#: ../src/ui/theme.c:5414 ../src/ui/theme.c:5476 ../src/ui/theme.c:5539 +#: ../src/ui/theme.c:5805 ../src/ui/theme.c:5867 ../src/ui/theme.c:5930 #, c-format msgid "Constant \"%s\" has already been defined" msgstr "" #. Translators: This means that an attribute which should have been found #. * on an XML element was not in fact found. -#. #: ../src/ui/theme-parser.c:226 #, c-format msgid "No \"%s\" attribute on element <%s>" @@ -7,13 +7,13 @@ # Микола Ткач <[email protected]>, 2013 # Stefano Karapetsas <[email protected]>, 2012 # Yarema aka Knedlyk <[email protected]>, 2012 -# Микола Ткач <[email protected]>, 2014 +# Микола Ткач <[email protected]>, 2014-2015 msgid "" msgstr "" "Project-Id-Version: MATE Desktop Environment\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-10-12 18:09+0200\n" -"PO-Revision-Date: 2014-10-12 16:38+0000\n" +"PO-Revision-Date: 2015-03-24 15:28+0000\n" "Last-Translator: Микола Ткач <[email protected]>\n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/MATE/language/uk/)\n" "MIME-Version: 1.0\n" @@ -28,7 +28,7 @@ msgstr "Стільниця" #: ../src/50-marco-desktop-key.xml.in.h:2 msgid "Show the panel's \"Run Application\" dialog box" -msgstr "Показати діалогове вікно панелі «Виконати програму»" +msgstr "Показати діалогове вікно панелі «Виконати проґраму»" #: ../src/50-marco-desktop-key.xml.in.h:3 msgid "Show the panel's main menu" @@ -56,7 +56,7 @@ msgstr "Перехід між вікнами через контекстне в� #: ../src/50-marco-global-key.xml.in.h:3 msgid "Move between windows of an application, using a popup window" -msgstr "Перемикати фокус вводу між вікнами програми через контекстне вікно" +msgstr "Перемикати фокус вводу між вікнами проґрами через контекстне вікно" #: ../src/50-marco-global-key.xml.in.h:4 msgid "Move between panels and the desktop, using a popup window" @@ -76,55 +76,55 @@ msgstr "Негайний перехід між панелями та стіль� #: ../src/50-marco-global-key.xml.in.h:8 msgid "Hide all normal windows and set focus to the desktop" -msgstr "Приховувати всі звичайні вікна та активувати стільницю" +msgstr "Приховувати усі звичайні вікна та активувати стільницю" #: ../src/50-marco-global-key.xml.in.h:9 msgid "Switch to workspace 1" -msgstr "Перейти в робочий простір 1" +msgstr "Перейти на робочий простір 1" #: ../src/50-marco-global-key.xml.in.h:10 msgid "Switch to workspace 2" -msgstr "Перейти в робочий простір 2" +msgstr "Перейти на робочий простір 2" #: ../src/50-marco-global-key.xml.in.h:11 msgid "Switch to workspace 3" -msgstr "Перейти в робочий простір 3" +msgstr "Перейти на робочий простір 3" #: ../src/50-marco-global-key.xml.in.h:12 msgid "Switch to workspace 4" -msgstr "Перейти в робочий простір 4" +msgstr "Перейти на робочий простір 4" #: ../src/50-marco-global-key.xml.in.h:13 msgid "Switch to workspace 5" -msgstr "Перейти в робочий простір 5" +msgstr "Перейти на робочий простір 5" #: ../src/50-marco-global-key.xml.in.h:14 msgid "Switch to workspace 6" -msgstr "Перейти в робочий простір 6" +msgstr "Перейти на робочий простір 6" #: ../src/50-marco-global-key.xml.in.h:15 msgid "Switch to workspace 7" -msgstr "Перейти в робочий простір 7" +msgstr "Перейти на робочий простір 7" #: ../src/50-marco-global-key.xml.in.h:16 msgid "Switch to workspace 8" -msgstr "Перейти в робочий простір 8" +msgstr "Перейти на робочий простір 8" #: ../src/50-marco-global-key.xml.in.h:17 msgid "Switch to workspace 9" -msgstr "Перейти в робочий простір 9" +msgstr "Перейти на робочий простір 9" #: ../src/50-marco-global-key.xml.in.h:18 msgid "Switch to workspace 10" -msgstr "Перейти в робочий простір 10" +msgstr "Перейти на робочий простір 10" #: ../src/50-marco-global-key.xml.in.h:19 msgid "Switch to workspace 11" -msgstr "Перейти в робочий простір 11" +msgstr "Перейти на робочий простір 11" #: ../src/50-marco-global-key.xml.in.h:20 msgid "Switch to workspace 12" -msgstr "Перейти в робочий простір 12" +msgstr "Перейти на робочий простір 12" #: ../src/50-marco-global-key.xml.in.h:21 msgid "Switch to workspace on the left of the current workspace" @@ -192,7 +192,7 @@ msgstr "Чи буде вікно розташоване на усіх робоч #: ../src/50-marco-window-key.xml.in.h:13 msgid "Raise window if it's covered by another window, otherwise lower it" -msgstr "Підняти вікно вікно на передній план, якщо воно затінене іншим, інакше опустити його" +msgstr "Підняти вікно на передній план, якщо воно затінене іншим, інакше опустити його" #: ../src/50-marco-window-key.xml.in.h:14 msgid "Raise window above other windows" @@ -200,7 +200,7 @@ msgstr "Підняти вікно над іншими" #: ../src/50-marco-window-key.xml.in.h:15 msgid "Lower window below other windows" -msgstr "Перемістити вікна нижче усіх вікон" +msgstr "Помістити вікно під іншими вікнами" #: ../src/50-marco-window-key.xml.in.h:16 msgid "Maximize window vertically" @@ -401,7 +401,7 @@ msgid "" "Copyright (C) 2001-%s Havoc Pennington, Red Hat, Inc., and others\n" "This is free software; see the source for copying conditions.\n" "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" -msgstr "marco %s\nАвторське право (C) 2001-%s Havoc Pennington, Red Hat, Inc., and others\nЦе - вільне програмне забезпечення; умови копіювання дивіться у текстах програми.\nНе надається НІЯКИХ гарантій; навіть ПРИДАТНОСТІ ДЛЯ ПРОДАЖУ чи ВІДПОВІДНОСТІ ПЕВНІЙ МЕТІ.\n" +msgstr "marco %s\nАвторське право (C) 2001-%s Havoc Pennington, Red Hat, Inc., and others\nЦе - вільне проґрамне забезпечення; умови копіювання дивіться у текстах проґрами.\nНе надається НІЯКИХ гарантій; навіть ПРИДАТНОСТІ ДЛЯ ПРОДАЖУ чи ВІДПОВІДНОСТІ ПЕВНІЙ МЕТІ.\n" #: ../src/core/main.c:275 msgid "Disable connection to session manager" @@ -433,11 +433,11 @@ msgstr "Зробити виклики X синхронними" #: ../src/core/main.c:316 msgid "Turn compositing on" -msgstr "Увімкнути менеджер композиції" +msgstr "Увімкнути композитний менеджер" #: ../src/core/main.c:322 msgid "Turn compositing off" -msgstr "Вимкнути менеджер композиції" +msgstr "Вимкнути композитний менеджер" #: ../src/core/main.c:328 msgid "" @@ -472,7 +472,7 @@ msgstr "Значення %d ключа GSettings «%s» не входить у � msgid "" "Workarounds for broken applications disabled. Some applications may not " "behave properly.\n" -msgstr "Трюк для роботи із зіпсованими програмами вимкнено. Деякі додатки можуть поводитись неправильно.\n" +msgstr "Трюк для роботи із зіпсованими проґрамами вимкнено. Деякі додатки можуть поводитися неправильно.\n" #: ../src/core/prefs.c:1090 #, c-format @@ -644,7 +644,7 @@ msgstr "Вікно %s встановило натяк MWM, який вказує #: ../src/core/window-props.c:252 #, c-format msgid "Application set a bogus _NET_WM_PID %lu\n" -msgstr "Програма встановила неправильне значення параметру _NET_WM_PID %lu\n" +msgstr "Проґрама встановила неправильне значення параметру _NET_WM_PID %lu\n" #. Translators: the title of a window from another machine #: ../src/core/window-props.c:396 @@ -685,7 +685,7 @@ msgid "" "and actually has type %s format %d n_items %d.\n" "This is most likely an application bug, not a window manager bug.\n" "The window has title=\"%s\" class=\"%s\" name=\"%s\"\n" -msgstr "Вікно 0x%lx має властивість %s\nтип якої очікувався %s у форматі %d\nале насправді має тип %s формат %d n_items %d.\nШвидше за все - це помилка у програмі, а не у менеджері вікон.\nВікно має title=\"%s\" class=\"%s\" name=\"%s\"\n" +msgstr "Вікно 0x%lx має властивість %s\nтип якої очікувався %s у форматі %d\nале насправді має тип %s формат %d n_items %d.\nШвидше за все - це помилка у проґрамі, а не у менеджері вікон.\nВікно має title=\"%s\" class=\"%s\" name=\"%s\"\n" #: ../src/core/xprops.c:401 #, c-format @@ -734,11 +734,11 @@ msgstr "Розкотити вікно" #: ../src/ui/frames.c:1220 msgid "Keep Window On Top" -msgstr "Тримати вікно нагорі" +msgstr "Тримати вікно поверх інших" #: ../src/ui/frames.c:1223 msgid "Remove Window From Top" -msgstr "Прибрати вікно з гори" +msgstr "Прибрати вікно з переднього плану" #: ../src/ui/frames.c:1226 msgid "Always On Visible Workspace" @@ -792,7 +792,7 @@ msgstr "Перемістити заголовок на _екран" #. Translators: Translate this string the same way as you do in libwnck! #: ../src/ui/menu.c:82 ../src/ui/menu.c:84 msgid "Always on _Top" -msgstr "Завжди зго_ри" +msgstr "Завжди по_верх інших" #. Translators: Translate this string the same way as you do in libwnck! #: ../src/ui/menu.c:86 @@ -1559,7 +1559,7 @@ msgstr "/Вікна/_Правий док" #: ../src/ui/theme-viewer.c:85 msgid "/Windows/_All docks" -msgstr "б/Вікна/Всі _доки" +msgstr "б/Вікна/Усі _доки" #: ../src/ui/theme-viewer.c:86 msgid "/Windows/Des_ktop" @@ -1584,7 +1584,7 @@ msgstr "Прямокутник" #: ../src/ui/theme-viewer.c:380 msgid "Normal Application Window" -msgstr "Звичайне вікно програми" +msgstr "Звичайне вікно проґрами" #: ../src/ui/theme-viewer.c:384 msgid "Dialog Box" @@ -1673,12 +1673,12 @@ msgstr "перевірка виразу позиції повернула зна #: ../src/ui/theme-viewer.c:1252 msgid "Error was expected but none given" -msgstr "Очікувалась помилка, але її не трапилося" +msgstr "Очікувалася помилка, але її не трапилося" #: ../src/ui/theme-viewer.c:1254 #, c-format msgid "Error %d was expected but %d given" -msgstr "Очікувалась помилка %d, але трапилася помилка %d" +msgstr "Очікувалася помилка %d, але трапилася помилка %d" #: ../src/ui/theme-viewer.c:1260 #, c-format diff --git a/src/50-marco-window-key.xml.in b/src/50-marco-window-key.xml.in index 2dcfabc3..0b3ecef4 100644 --- a/src/50-marco-window-key.xml.in +++ b/src/50-marco-window-key.xml.in @@ -70,6 +70,14 @@ _description="Maximize window horizontally" /> <KeyListEntry + name="tile-to-side-e" + _description="Tile window to east (right) side of screen" /> + + <KeyListEntry + name="tile-to-side-w" + _description="Tile window to west (left) side of screen" /> + + <KeyListEntry name="move-to-corner-nw" _description="Move window to north-west (top left) corner" /> diff --git a/src/compositor/compositor-private.h b/src/compositor/compositor-private.h index 93f3e05b..61e7ffb0 100644 --- a/src/compositor/compositor-private.h +++ b/src/compositor/compositor-private.h @@ -50,6 +50,9 @@ struct _MetaCompositor MetaScreen *screen, MetaWindow *window); + void (*free_window) (MetaCompositor *compositor, + MetaWindow *window); + void (*maximize_window) (MetaCompositor *compositor, MetaWindow *window); void (*unmaximize_window) (MetaCompositor *compositor, diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c index 7d31f303..c1218ebc 100644 --- a/src/compositor/compositor-xrender.c +++ b/src/compositor/compositor-xrender.c @@ -50,39 +50,8 @@ #include <X11/extensions/Xfixes.h> #include <X11/extensions/Xrender.h> -#if COMPOSITE_MAJOR > 0 || COMPOSITE_MINOR >= 2 -#define HAVE_NAME_WINDOW_PIXMAP 1 -#endif - -#if COMPOSITE_MAJOR > 0 || COMPOSITE_MINOR >= 3 -#define HAVE_COW 1 -#else -/* Don't have a cow man...HAAHAAHAA */ -#endif - #define USE_IDLE_REPAINT 1 -#ifdef HAVE_COMPOSITE_EXTENSIONS -static inline gboolean -composite_at_least_version (MetaDisplay *display, - int maj, int min) -{ - static int major = -1; - static int minor = -1; - - if (major == -1) - meta_display_get_compositor_version (display, &major, &minor); - - return (major > maj || (major == maj && minor >= min)); -} - -#define have_name_window_pixmap(display) \ - composite_at_least_version (display, 0, 2) -#define have_cow(display) \ - composite_at_least_version (display, 0, 3) - -#endif - typedef enum _MetaCompWindowType { META_COMP_WINDOW_NORMAL, @@ -180,7 +149,6 @@ typedef struct _MetaCompWindow Window id; XWindowAttributes attrs; -#ifdef HAVE_NAME_WINDOW_PIXMAP Pixmap back_pixmap; /* When the window is shaded back_pixmap will be replaced with the pixmap @@ -188,7 +156,6 @@ typedef struct _MetaCompWindow so that we can still see what the window looked like when it is needed for the _get_window_pixmap function */ Pixmap shaded_back_pixmap; -#endif int mode; @@ -1062,21 +1029,21 @@ get_window_picture (MetaCompWindow *cw) XRenderPictureAttributes pa; XRenderPictFormat *format; Drawable draw; + int error_code; draw = cw->id; meta_error_trap_push (display); -#ifdef HAVE_NAME_WINDOW_PIXMAP - if (have_name_window_pixmap (display)) - { - if (cw->back_pixmap == None) - cw->back_pixmap = XCompositeNameWindowPixmap (xdisplay, cw->id); + if (cw->back_pixmap == None) + cw->back_pixmap = XCompositeNameWindowPixmap (xdisplay, cw->id); - if (cw->back_pixmap != None) - draw = cw->back_pixmap; - } -#endif + error_code = meta_error_trap_pop_with_return (display, FALSE); + if (error_code != 0) + cw->back_pixmap = None; + + if (cw->back_pixmap != None) + draw = cw->back_pixmap; format = get_window_format (cw); if (format) @@ -1085,13 +1052,13 @@ get_window_picture (MetaCompWindow *cw) pa.subwindow_mode = IncludeInferiors; + meta_error_trap_push (display); pict = XRenderCreatePicture (xdisplay, draw, format, CPSubwindowMode, &pa); meta_error_trap_pop (display, FALSE); return pict; } - meta_error_trap_pop (display, FALSE); return None; } @@ -1231,22 +1198,10 @@ paint_windows (MetaScreen *screen, { int x, y, wid, hei; -#ifdef HAVE_NAME_WINDOW_PIXMAP - if (have_name_window_pixmap (display)) - { - x = cw->attrs.x; - y = cw->attrs.y; - wid = cw->attrs.width + cw->attrs.border_width * 2; - hei = cw->attrs.height + cw->attrs.border_width * 2; - } - else -#endif - { - x = cw->attrs.x + cw->attrs.border_width; - y = cw->attrs.y + cw->attrs.border_width; - wid = cw->attrs.width; - hei = cw->attrs.height; - } + x = cw->attrs.x; + y = cw->attrs.y; + wid = cw->attrs.width + cw->attrs.border_width * 2; + hei = cw->attrs.height + cw->attrs.border_width * 2; XFixesSetPictureClipRegion (xdisplay, root_buffer, 0, 0, paint_region); @@ -1322,22 +1277,11 @@ paint_windows (MetaScreen *screen, if (cw->mode == WINDOW_ARGB) { int x, y, wid, hei; -#ifdef HAVE_NAME_WINDOW_PIXMAP - if (have_name_window_pixmap (display)) - { - x = cw->attrs.x; - y = cw->attrs.y; - wid = cw->attrs.width + cw->attrs.border_width * 2; - hei = cw->attrs.height + cw->attrs.border_width * 2; - } - else -#endif - { - x = cw->attrs.x + cw->attrs.border_width; - y = cw->attrs.y + cw->attrs.border_width; - wid = cw->attrs.width; - hei = cw->attrs.height; - } + + x = cw->attrs.x; + y = cw->attrs.y; + wid = cw->attrs.width + cw->attrs.border_width * 2; + hei = cw->attrs.height + cw->attrs.border_width * 2; XRenderComposite (xdisplay, PictOpOver, cw->picture, cw->alpha_pict, root_buffer, 0, 0, 0, 0, @@ -1553,24 +1497,38 @@ free_win (MetaCompWindow *cw, MetaDisplay *display = meta_screen_get_display (cw->screen); Display *xdisplay = meta_display_get_xdisplay (display); MetaCompScreen *info = meta_screen_get_compositor_data (cw->screen); + XRectangle r; + XserverRegion region; -#ifdef HAVE_NAME_WINDOW_PIXMAP - if (have_name_window_pixmap (display)) + /* + * If we are deleting a window with a compositor shadow, + * trigger a repaint of the area it was covering. + * This fixes an issue where the shadow beneath a + * (GTK3) tooltip was not being erased after the tooltip + * disappeared. + */ + if (cw->shadow) { + r.x = cw->attrs.x + cw->shadow_dx; + r.y = cw->attrs.y + cw->shadow_dy; + r.width = cw->attrs.width + cw->shadow_width; + r.height = cw->attrs.height + cw->shadow_height; + region = XFixesCreateRegion (xdisplay, &r, 1); + add_damage(cw->screen, region); + } + + + /* See comment in map_win */ + if (cw->back_pixmap && destroy) { - /* See comment in map_win */ - if (cw->back_pixmap && destroy) - { - XFreePixmap (xdisplay, cw->back_pixmap); - cw->back_pixmap = None; - } + XFreePixmap (xdisplay, cw->back_pixmap); + cw->back_pixmap = None; + } - if (cw->shaded_back_pixmap && destroy) - { - XFreePixmap (xdisplay, cw->shaded_back_pixmap); - cw->shaded_back_pixmap = None; - } + if (cw->shaded_back_pixmap && destroy) + { + XFreePixmap (xdisplay, cw->shaded_back_pixmap); + cw->shaded_back_pixmap = None; } -#endif if (cw->picture) { @@ -1644,7 +1602,6 @@ map_win (MetaDisplay *display, if (cw == NULL) return; -#ifdef HAVE_NAME_WINDOW_PIXMAP /* The reason we deallocate this here and not in unmap is so that we will still have a valid pixmap for whenever the window is unmapped */ @@ -1659,7 +1616,6 @@ map_win (MetaDisplay *display, XFreePixmap (xdisplay, cw->shaded_back_pixmap); cw->shaded_back_pixmap = None; } -#endif cw->attrs.map_state = IsViewable; cw->damaged = FALSE; @@ -1853,11 +1809,8 @@ add_win (MetaScreen *screen, XSelectInput (xdisplay, xwindow, event_mask); - -#ifdef HAVE_NAME_WINDOW_PIXMAP cw->back_pixmap = None; cw->shaded_back_pixmap = None; -#endif cw->damaged = FALSE; cw->shaped = is_shaped (display, xwindow); @@ -2039,32 +1992,28 @@ resize_win (MetaCompWindow *cw, if (cw->attrs.width != width || cw->attrs.height != height) { -#ifdef HAVE_NAME_WINDOW_PIXMAP - if (have_name_window_pixmap (display)) + if (cw->shaded_back_pixmap) + { + XFreePixmap (xdisplay, cw->shaded_back_pixmap); + cw->shaded_back_pixmap = None; + } + + if (cw->back_pixmap) { - if (cw->shaded_back_pixmap) + /* If the window is shaded, we store the old backing pixmap + so we can return a proper image of the window */ + if (cw->window && meta_window_is_shaded (cw->window)) { - XFreePixmap (xdisplay, cw->shaded_back_pixmap); - cw->shaded_back_pixmap = None; + cw->shaded_back_pixmap = cw->back_pixmap; + cw->back_pixmap = None; } - - if (cw->back_pixmap) + else { - /* If the window is shaded, we store the old backing pixmap - so we can return a proper image of the window */ - if (cw->window && meta_window_is_shaded (cw->window)) - { - cw->shaded_back_pixmap = cw->back_pixmap; - cw->back_pixmap = None; - } - else - { - XFreePixmap (xdisplay, cw->back_pixmap); - cw->back_pixmap = None; - } + XFreePixmap (xdisplay, cw->back_pixmap); + cw->back_pixmap = None; } } -#endif + if (cw->picture) { XRenderFreePicture (xdisplay, cw->picture); @@ -2501,29 +2450,22 @@ show_overlay_window (MetaScreen *screen, { MetaDisplay *display = meta_screen_get_display (screen); Display *xdisplay = meta_display_get_xdisplay (display); + XserverRegion region; -#ifdef HAVE_COW - if (have_cow (display)) - { - XserverRegion region; - - region = XFixesCreateRegion (xdisplay, NULL, 0); + region = XFixesCreateRegion (xdisplay, NULL, 0); - XFixesSetWindowShapeRegion (xdisplay, cow, ShapeBounding, 0, 0, 0); - XFixesSetWindowShapeRegion (xdisplay, cow, ShapeInput, 0, 0, region); + XFixesSetWindowShapeRegion (xdisplay, cow, ShapeBounding, 0, 0, 0); + XFixesSetWindowShapeRegion (xdisplay, cow, ShapeInput, 0, 0, region); - XFixesDestroyRegion (xdisplay, region); + XFixesDestroyRegion (xdisplay, region); - damage_screen (screen); - } -#endif + damage_screen (screen); } static void hide_overlay_window (MetaScreen *screen, Window cow) { -#ifdef HAVE_COW MetaDisplay *display = meta_screen_get_display (screen); Display *xdisplay = meta_display_get_xdisplay (display); XserverRegion region; @@ -2531,7 +2473,6 @@ hide_overlay_window (MetaScreen *screen, region = XFixesCreateRegion (xdisplay, NULL, 0); XFixesSetWindowShapeRegion (xdisplay, cow, ShapeBounding, 0, 0, region); XFixesDestroyRegion (xdisplay, region); -#endif } static Window @@ -2543,17 +2484,8 @@ get_output_window (MetaScreen *screen) xroot = meta_screen_get_xroot (screen); -#ifdef HAVE_COW - if (have_cow (display)) - { - output = XCompositeGetOverlayWindow (xdisplay, xroot); - XSelectInput (xdisplay, output, ExposureMask); - } - else -#endif - { - output = xroot; - } + output = XCompositeGetOverlayWindow (xdisplay, xroot); + XSelectInput (xdisplay, output, ExposureMask); return output; } @@ -2690,9 +2622,7 @@ xrender_unmanage_screen (MetaCompositor *compositor, CompositeRedirectManual); meta_screen_unset_cm_selection (screen); -#ifdef HAVE_COW XCompositeReleaseOverlayWindow (xdisplay, info->output); -#endif g_free (info); @@ -2751,23 +2681,38 @@ xrender_end_move (MetaCompositor *compositor, #ifdef HAVE_COMPOSITE_EXTENSIONS #endif } +#endif /* 0 */ static void xrender_free_window (MetaCompositor *compositor, MetaWindow *window) { #ifdef HAVE_COMPOSITE_EXTENSIONS - /* FIXME: When an undecorated window is hidden this is called, - but the window does not get readded if it is subsequentally shown again - See http://bugzilla.gnome.org/show_bug.cgi?id=504876 - - I don't *think* theres any need for this call anyway, leaving it out - does not seem to cause any side effects so far, but I should check with - someone who understands more. */ - /* destroy_win (compositor->display, window->xwindow, FALSE); */ + MetaCompositorXRender *xrc; + MetaFrame *frame; + Window xwindow; + + xrc = (MetaCompositorXRender *) compositor; + frame = meta_window_get_frame (window); + xwindow = None; + + if (frame) + { + xwindow = meta_frame_get_xwindow (frame); + } + else + { + /* FIXME: When an undecorated window is hidden this is called, but the + * window does not get readded if it is subsequentally shown again. See: + * http://bugzilla.gnome.org/show_bug.cgi?id=504876 + */ + /* xwindow = meta_window_get_xwindow (window); */ + } + + if (xwindow != None) + destroy_win (xrc->display, xwindow, FALSE); #endif } -#endif /* 0 */ static void xrender_process_event (MetaCompositor *compositor, @@ -2858,17 +2803,10 @@ xrender_get_window_pixmap (MetaCompositor *compositor, if (cw == NULL) return None; -#ifdef HAVE_NAME_WINDOW_PIXMAP - if (have_name_window_pixmap (meta_window_get_display (window))) - { - if (meta_window_is_shaded (window)) - return cw->shaded_back_pixmap; - else - return cw->back_pixmap; - } + if (meta_window_is_shaded (window)) + return cw->shaded_back_pixmap; else -#endif - return None; + return cw->back_pixmap; #endif } @@ -3056,6 +2994,7 @@ static MetaCompositor comp_info = { xrender_process_event, xrender_get_window_pixmap, xrender_set_active_window, + xrender_free_window, xrender_maximize_window, xrender_unmaximize_window, }; diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c index d23fe3f7..f7a28261 100644 --- a/src/compositor/compositor.c +++ b/src/compositor/compositor.c @@ -156,6 +156,10 @@ void meta_compositor_end_move (MetaCompositor *compositor, void meta_compositor_free_window (MetaCompositor *compositor, MetaWindow *window) { +#ifdef HAVE_COMPOSITE_EXTENSIONS + if (compositor && compositor->free_window) + compositor->free_window (compositor, window); +#endif } void diff --git a/src/core/display-private.h b/src/core/display-private.h index dc270a96..069e0ccf 100644 --- a/src/core/display-private.h +++ b/src/core/display-private.h @@ -276,8 +276,6 @@ struct _MetaDisplay { #ifdef HAVE_COMPOSITE_EXTENSIONS int composite_event_base; int composite_error_base; - int composite_major_version; - int composite_minor_version; int damage_event_base; int damage_error_base; int xfixes_event_base; @@ -420,8 +418,7 @@ void meta_display_ungrab_focus_window_button (MetaDisplay *display, MetaWindow *window); /* Next two functions are defined in edge-resistance.c */ -void meta_display_compute_resistance_and_snapping_edges (MetaDisplay *display); -void meta_display_cleanup_edges (MetaDisplay *display); +void meta_display_cleanup_edges (MetaDisplay *display); /* make a request to ensure the event serial has changed */ void meta_display_increment_event_serial (MetaDisplay *display); diff --git a/src/core/display.c b/src/core/display.c index 6a4831fb..caa76247 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -558,6 +558,9 @@ meta_display_open (void) #ifdef HAVE_COMPOSITE_EXTENSIONS { + int composite_major_version = 0; + int composite_minor_version = 0; + the_display->have_composite = FALSE; the_display->composite_error_base = 0; @@ -572,18 +575,16 @@ meta_display_open (void) } else { - the_display->composite_major_version = 0; - the_display->composite_minor_version = 0; if (XCompositeQueryVersion (the_display->xdisplay, - &the_display->composite_major_version, - &the_display->composite_minor_version)) + &composite_major_version, + &composite_minor_version)) { the_display->have_composite = TRUE; } else { - the_display->composite_major_version = 0; - the_display->composite_minor_version = 0; + composite_major_version = 0; + composite_minor_version = 0; } } @@ -591,8 +592,8 @@ meta_display_open (void) "extn ver %d %d\n", the_display->composite_error_base, the_display->composite_event_base, - the_display->composite_major_version, - the_display->composite_minor_version); + composite_major_version, + composite_minor_version); the_display->have_damage = FALSE; @@ -3662,18 +3663,6 @@ meta_display_begin_grab_op (MetaDisplay *display, g_assert (display->grab_window != NULL || display->grab_screen != NULL); g_assert (display->grab_op != META_GRAB_OP_NONE); - /* If this is a move or resize, cache the window edges for - * resistance/snapping - */ - if (meta_grab_op_is_resizing (display->grab_op) || - meta_grab_op_is_moving (display->grab_op)) - { - meta_topic (META_DEBUG_WINDOW_OPS, - "Computing edges to resist-movement or snap-to for %s.\n", - window->desc); - meta_display_compute_resistance_and_snapping_edges (display); - } - /* Save the old stacking */ if (GRAB_OP_IS_WINDOW_SWITCH (display->grab_op)) { @@ -5401,17 +5390,6 @@ meta_display_remove_autoraise_callback (MetaDisplay *display) } } -#ifdef HAVE_COMPOSITE_EXTENSIONS -void -meta_display_get_compositor_version (MetaDisplay *display, - int *major, - int *minor) -{ - *major = display->composite_major_version; - *minor = display->composite_minor_version; -} -#endif - Display * meta_display_get_xdisplay (MetaDisplay *display) { diff --git a/src/core/edge-resistance.c b/src/core/edge-resistance.c index 51e77d54..aa4fcb6a 100644 --- a/src/core/edge-resistance.c +++ b/src/core/edge-resistance.c @@ -63,6 +63,8 @@ struct MetaEdgeResistanceData ResistanceDataForAnEdge bottom_data; }; +static void compute_resistance_and_snapping_edges (MetaDisplay *display); + /* !WARNING!: this function can return invalid indices (namely, either -1 or * edges->len); this is by design, but you need to remember this. */ @@ -550,7 +552,9 @@ apply_edge_resistance_to_each_side (MetaDisplay *display, gboolean modified; int new_left, new_right, new_top, new_bottom; - g_assert (display->grab_edge_resistance_data != NULL); + if (display->grab_edge_resistance_data == NULL) + compute_resistance_and_snapping_edges (display); + edge_data = display->grab_edge_resistance_data; if (auto_snap) @@ -671,7 +675,8 @@ meta_display_cleanup_edges (MetaDisplay *display) MetaEdgeResistanceData *edge_data = display->grab_edge_resistance_data; GHashTable *edges_to_be_freed; - g_assert (edge_data != NULL); + if (edge_data == NULL) /* Not currently cached */ + return; /* We first need to clean out any window edges */ edges_to_be_freed = g_hash_table_new_full (g_direct_hash, g_direct_equal, @@ -938,8 +943,8 @@ initialize_grab_edge_resistance_data (MetaDisplay *display) edge_data->bottom_data.keyboard_buildup = 0; } -void -meta_display_compute_resistance_and_snapping_edges (MetaDisplay *display) +static void +compute_resistance_and_snapping_edges (MetaDisplay *display) { GList *stacked_windows; GList *cur_window_iter; @@ -952,6 +957,11 @@ meta_display_compute_resistance_and_snapping_edges (MetaDisplay *display) */ GSList *rem_windows, *rem_win_stacking; + g_assert (display->grab_window != NULL); + meta_topic (META_DEBUG_WINDOW_OPS, + "Computing edges to resist-movement or snap-to for %s.\n", + display->grab_window->desc); + /* * 1st: Get the list of relevant windows, from bottom to top */ diff --git a/src/core/keybindings.c b/src/core/keybindings.c index 821d432a..068199b8 100644 --- a/src/core/keybindings.c +++ b/src/core/keybindings.c @@ -2329,7 +2329,7 @@ static void error_on_command (int command_index, const char *command, const char *message, - int screen_number, + const char *screen_name, guint32 timestamp) { if (command_index < 0) @@ -2358,7 +2358,7 @@ error_on_command (int command_index, meta_show_dialog ("--error", text, NULL, - screen_number, + screen_name, NULL, NULL, 0, NULL, NULL); @@ -2370,7 +2370,7 @@ error_on_command (int command_index, meta_show_dialog ("--error", message, NULL, - screen_number, + screen_name, NULL, NULL, 0, NULL, NULL); } @@ -2441,7 +2441,7 @@ handle_run_command (MetaDisplay *display, s = g_strdup_printf (_("No command %d has been defined.\n"), which + 1); - error_on_command (which, NULL, s, screen->number, event->xkey.time); + error_on_command (which, NULL, s, screen->screen_name, event->xkey.time); g_free (s); return; @@ -2450,7 +2450,7 @@ handle_run_command (MetaDisplay *display, err = NULL; if (!meta_spawn_command_line_async_on_screen (command, screen, &err)) { - error_on_command (which, command, err->message, screen->number, event->xkey.time); + error_on_command (which, command, err->message, screen->screen_name, event->xkey.time); g_error_free (err); } @@ -3058,7 +3058,6 @@ handle_toggle_above (MetaDisplay *display, meta_window_make_above (window); } -/* TODO: actually use this keybinding, without messing up the existing keybinding schema */ static void handle_toggle_tiled (MetaDisplay *display, MetaScreen *screen, @@ -3071,14 +3070,20 @@ handle_toggle_tiled (MetaDisplay *display, if ((META_WINDOW_TILED_LEFT (window) && mode == META_TILE_LEFT) || (META_WINDOW_TILED_RIGHT (window) && mode == META_TILE_RIGHT)) { - window->tile_mode = META_TILE_NONE; - if (window->saved_maximize) - meta_window_maximize (window, META_MAXIMIZE_VERTICAL | - META_MAXIMIZE_HORIZONTAL); - else - meta_window_unmaximize (window, META_MAXIMIZE_VERTICAL | + { + window->tile_mode = META_TILE_MAXIMIZED; + window->tile_monitor_number = meta_screen_get_xinerama_for_window (window->screen, window)->number; + meta_window_maximize (window, META_MAXIMIZE_VERTICAL | META_MAXIMIZE_HORIZONTAL); + } + else + { + window->tile_mode = META_TILE_NONE; + window->tile_monitor_number = -1; + meta_window_unmaximize (window, META_MAXIMIZE_VERTICAL | + META_MAXIMIZE_HORIZONTAL); + } } else if (meta_window_can_tile (window)) { @@ -3090,6 +3095,13 @@ handle_toggle_tiled (MetaDisplay *display, * we just set the flag and rely on meta_window_tile() syncing it to * save an additional roundtrip. */ + + /* If we skip meta_window_unmaximize we have to manually reset the + * window->saved_maximize flag. + */ + if (!META_WINDOW_MAXIMIZED (window)) + window->saved_maximize = FALSE; + window->maximized_horizontally = FALSE; meta_window_tile (window); } @@ -3439,7 +3451,7 @@ handle_run_terminal (MetaDisplay *display, "keybinding press\n"); s = g_strdup_printf (_("No terminal command has been defined.\n")); - error_on_command (-1, NULL, s, screen->number, event->xkey.time); + error_on_command (-1, NULL, s, screen->screen_name, event->xkey.time); g_free (s); return; @@ -3448,7 +3460,7 @@ handle_run_terminal (MetaDisplay *display, err = NULL; if (!meta_spawn_command_line_async_on_screen (command, screen, &err)) { - error_on_command (-1, command, err->message, screen->number, + error_on_command (-1, command, err->message, screen->screen_name, event->xkey.time); g_error_free (err); diff --git a/src/core/place.c b/src/core/place.c index 99cedd14..bcfafe42 100644 --- a/src/core/place.c +++ b/src/core/place.c @@ -87,6 +87,47 @@ northwestcmp (gconstpointer a, gconstpointer b) return 0; } +static gboolean +place_by_pointer(MetaWindow *window, + MetaFrameGeometry *fgeom, + MetaPlacementMode placement_mode, + int *new_x, + int *new_y) +{ + int window_width, window_height; + Window root_return, child_return; + int root_x_return, root_y_return; + int win_x_return, win_y_return; + unsigned int mask_return; + + XQueryPointer (window->display->xdisplay, + window->screen->xroot, + &root_return, + &child_return, + &root_x_return, + &root_y_return, + &win_x_return, + &win_y_return, + &mask_return); + + window_width = window->frame ? window->frame->rect.width : window->rect.width; + window_height = window->frame ? window->frame->rect.height : window->rect.height; + + if (fgeom) { + *new_x = root_x_return + fgeom->left_width - window_width / 2; + *new_y = root_y_return + fgeom->top_height - window_height / 2; + } + else { + *new_x = root_x_return - window_width / 2; + *new_y = root_y_return - window_height / 2; + } + + if (placement_mode == META_PLACEMENT_MODE_MANUAL) + window->move_after_placement = TRUE; + + return TRUE; +} + static void find_next_cascade (MetaWindow *window, MetaFrameGeometry *fgeom, @@ -663,6 +704,7 @@ meta_window_place (MetaWindow *window, { GList *windows; const MetaXineramaScreenInfo *xi; + MetaPlacementMode placement_mode; /* frame member variables should NEVER be used in here, only * MetaFrameGeometry. But remember fgeom == NULL @@ -853,6 +895,16 @@ meta_window_place (MetaWindow *window, x = xi->rect.x; y = xi->rect.y; + /* Placement based on pointer position */ + placement_mode = meta_prefs_get_placement_mode(); + + if (placement_mode == META_PLACEMENT_MODE_POINTER || + placement_mode == META_PLACEMENT_MODE_MANUAL) + { + if (place_by_pointer (window, fgeom, placement_mode, &x, &y)) + goto done_check_denied_focus; + } + if (find_first_fit (window, fgeom, windows, xi->number, x, y, &x, &y)) diff --git a/src/core/prefs.c b/src/core/prefs.c index 8847614e..2f3e9392 100644 --- a/src/core/prefs.c +++ b/src/core/prefs.c @@ -162,10 +162,14 @@ static void button_layout_handler (MetaPreference, const gchar*, gboolean*); static gboolean update_binding (MetaKeyPref *binding, gchar *value); -static void init_bindings (void); +static void init_bindings (GSettings *); +static void init_screen_bindings (void); +static void init_window_bindings (void); static void init_commands (void); static void init_workspace_names (void); +static MetaPlacementMode placement_mode = META_PLACEMENT_MODE_AUTOMATIC; + typedef struct { MetaPrefsChangedFunc func; @@ -315,6 +319,11 @@ static MetaEnumPreference preferences_enum[] = META_PREF_ACTION_RIGHT_CLICK_TITLEBAR, (gint *) &action_right_click_titlebar, }, + { "placement-mode", + KEY_GENERAL_SCHEMA, + META_PREF_PLACEMENT_MODE, + (gint *) &placement_mode, + }, { NULL, NULL, 0, NULL }, }; @@ -890,13 +899,6 @@ meta_prefs_init (void) g_hash_table_insert (settings_schemas, KEY_MATE_TERMINAL_SCHEMA, settings_mate_terminal); g_hash_table_insert (settings_schemas, KEY_MATE_MOUSE_SCHEMA, settings_mate_mouse); - /* Pick up initial values. */ - - handle_preference_init_enum (); - handle_preference_init_bool (); - handle_preference_init_string (); - handle_preference_init_int (); - g_signal_connect (settings_general, "changed", G_CALLBACK (change_notify), NULL); g_signal_connect (settings_command, "changed", G_CALLBACK (change_notify), NULL); g_signal_connect (settings_screen_bindings, "changed", G_CALLBACK (change_notify), NULL); @@ -909,7 +911,15 @@ meta_prefs_init (void) g_signal_connect (settings_mate_mouse, "changed::" KEY_MATE_MOUSE_CURSOR_THEME, G_CALLBACK (change_notify), NULL); g_signal_connect (settings_mate_mouse, "changed::" KEY_MATE_MOUSE_CURSOR_SIZE, G_CALLBACK (change_notify), NULL); - init_bindings (); + /* Pick up initial values. */ + + handle_preference_init_enum (); + handle_preference_init_bool (); + handle_preference_init_string (); + handle_preference_init_int (); + + init_screen_bindings (); + init_window_bindings (); init_commands (); init_workspace_names (); } @@ -972,7 +982,7 @@ change_notify (GSettings *settings, g_free(str); } - else if (g_strcmp0 (schema_name, KEY_WORKSPACE_NAME_SCHEMA)) + else if (g_strcmp0 (schema_name, KEY_WORKSPACE_NAME_SCHEMA) == 0) { gchar *str; str = g_settings_get_string (settings, key); @@ -1553,6 +1563,9 @@ meta_preference_to_string (MetaPreference pref) case META_PREF_SIDE_BY_SIDE_TILING: return "SIDE_BY_SIDE_TILING"; + + case META_PREF_PLACEMENT_MODE: + return "PLACEMENT_MODE"; } return "(unknown)"; @@ -1582,32 +1595,32 @@ static MetaKeyPref key_bindings[] = { #undef keybind static void -init_bindings (void) +init_bindings (GSettings *settings) { - const char *prefix[] = { - KEY_WINDOW_BINDINGS_SCHEMA, - KEY_SCREEN_BINDINGS_SCHEMA, - NULL - }; - int i; gchar **list = NULL; gchar *str_val = NULL; - GSettings *bindings_settings = NULL; - for (i = 0; prefix[i]; i++) + list = g_settings_list_keys (settings); + while (*list != NULL) { - bindings_settings = g_settings_new (prefix [i]); - list = g_settings_list_keys (bindings_settings); - while (*list != NULL) - { - str_val = g_settings_get_string (bindings_settings, *list); - update_key_binding (*list, str_val); - list++; - } + str_val = g_settings_get_string (settings, *list); + update_key_binding (*list, str_val); + list++; } + g_free (str_val); - g_object_unref (bindings_settings); +} + +static void +init_screen_bindings (void) +{ + init_bindings (settings_screen_bindings); +} +static void +init_window_bindings (void) +{ + init_bindings (settings_window_bindings); } static void @@ -1623,6 +1636,7 @@ init_commands (void) update_command (*list, str_val); list++; } + g_free (str_val); } @@ -1639,6 +1653,7 @@ init_workspace_names (void) update_workspace_name (*list, str_val); list++; } + g_free (str_val); } @@ -2236,6 +2251,12 @@ meta_prefs_get_force_fullscreen (void) return force_fullscreen; } +MetaPlacementMode +meta_prefs_get_placement_mode (void) +{ + return placement_mode; +} + void meta_prefs_set_force_compositing_manager (gboolean whether) { diff --git a/src/core/window-private.h b/src/core/window-private.h index 20e619cb..0b3cf594 100644 --- a/src/core/window-private.h +++ b/src/core/window-private.h @@ -139,6 +139,9 @@ struct _MetaWindow guint maximize_vertically_after_placement : 1; guint minimize_after_placement : 1; + /* Whether to move after placement */ + guint move_after_placement : 1; + /* The current or requested tile mode. If maximized_vertically is true, * this is the current mode. If not, it is the mode which will be * requested after the window grab is released */ diff --git a/src/core/window.c b/src/core/window.c index 95d49885..30ebfa85 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -461,6 +461,7 @@ meta_window_new_with_attrs (MetaDisplay *display, window->maximize_horizontally_after_placement = FALSE; window->maximize_vertically_after_placement = FALSE; window->minimize_after_placement = FALSE; + window->move_after_placement = FALSE; window->fullscreen = FALSE; window->fullscreen_after_placement = FALSE; window->fullscreen_monitors[0] = -1; @@ -2346,6 +2347,13 @@ meta_window_show (MetaWindow *window) if (takes_focus_on_map) { meta_window_focus (window, timestamp); + + if (window->move_after_placement) + { + meta_window_begin_grab_op(window, META_GRAB_OP_KEYBOARD_MOVING, + FALSE, timestamp); + window->move_after_placement = FALSE; + } } else { @@ -2670,14 +2678,9 @@ meta_window_maximize (MetaWindow *window, if (window->tile_mode != META_TILE_NONE) { saved_rect = &window->saved_rect; - window->maximized_vertically = FALSE; - } - - if (window->tile_mode != META_TILE_NONE) - { - saved_rect = &window->saved_rect; window->maximized_vertically = FALSE; + window->tile_mode = META_TILE_NONE; } meta_window_maximize_internal (window, @@ -2751,7 +2754,7 @@ meta_window_can_tile (MetaWindow *window) MetaRectangle tile_area; /*if (!META_WINDOW_ALLOWS_RESIZE (window))*/ - if (!META_WINDOW_ALLOWS_RESIZE (window)) + if (!meta_window_can_tile_maximized (window) || window->shaded) return FALSE; monitor = meta_screen_get_current_xinerama (window->screen); @@ -2780,15 +2783,6 @@ meta_window_unmaximize (MetaWindow *window, /* At least one of the two directions ought to be set */ gboolean unmaximize_horizontally, unmaximize_vertically; - /* Restore tiling if necessary */ - if (window->tile_mode == META_TILE_LEFT || - window->tile_mode == META_TILE_RIGHT) - { - window->maximized_horizontally = FALSE; - meta_window_tile (window); - return; - } - unmaximize_horizontally = directions & META_MAXIMIZE_HORIZONTAL; unmaximize_vertically = directions & META_MAXIMIZE_VERTICAL; g_assert (unmaximize_horizontally || unmaximize_vertically); @@ -3333,6 +3327,7 @@ send_sync_request (MetaWindow *window) ev.data.l[1] = meta_display_get_current_time (window->display); ev.data.l[2] = XSyncValueLow32 (value); ev.data.l[3] = XSyncValueHigh32 (value); + ev.data.l[4] = 0; /* We don't need to trap errors here as we are already * inside an error_trap_push()/pop() pair. @@ -5194,8 +5189,7 @@ meta_window_client_message (MetaWindow *window, { meta_verbose ("WM_CHANGE_STATE client message, state: %ld\n", event->xclient.data.l[0]); - if (event->xclient.data.l[0] == IconicState && - window->has_minimize_func) + if (event->xclient.data.l[0] == IconicState) meta_window_minimize (window); return TRUE; @@ -5599,6 +5593,8 @@ static gboolean process_property_notify (MetaWindow *window, XPropertyEvent *event) { + Window xid = window->xwindow; + if (meta_is_verbose ()) /* avoid looking up the name if we don't have to */ { char *property_name = XGetAtomName (window->display->xdisplay, @@ -5609,7 +5605,13 @@ process_property_notify (MetaWindow *window, XFree (property_name); } - meta_window_reload_property (window, event->atom, FALSE); + if (event->atom == window->display->atom__NET_WM_USER_TIME && + window->user_time_window) + { + xid = window->user_time_window; + } + + meta_window_reload_property_from_xwindow (window, xid, event->atom, FALSE); return TRUE; } @@ -6735,8 +6737,8 @@ meta_window_show_menu (MetaWindow *window, if (!window->has_maximize_func) insensitive |= META_MENU_OP_UNMAXIMIZE | META_MENU_OP_MAXIMIZE; - /*if (!window->has_minimize_func) - insensitive |= META_MENU_OP_MINIMIZE;*/ + if (!window->has_minimize_func) + insensitive |= META_MENU_OP_MINIMIZE; /*if (!window->has_close_func) insensitive |= META_MENU_OP_DELETE;*/ diff --git a/src/core/workspace.c b/src/core/workspace.c index d61529d2..e2a397a0 100644 --- a/src/core/workspace.c +++ b/src/core/workspace.c @@ -382,6 +382,10 @@ meta_workspace_activate_with_focus (MetaWorkspace *workspace, if (workspace->screen->active_workspace) workspace_switch_sound(workspace->screen->active_workspace, workspace); + /* Free any cached pointers to the workspaces's edges from + * a current resize or move operation */ + meta_display_cleanup_edges (workspace->screen->display); + /* Note that old can be NULL; e.g. when starting up */ old = workspace->screen->active_workspace; @@ -545,6 +549,11 @@ meta_workspace_invalidate_work_area (MetaWorkspace *workspace) "Invalidating work area for workspace %d\n", meta_workspace_index (workspace)); + /* If we are in the middle of a resize or move operation, we + * might have cached pointers to the workspace's edges */ + if (workspace == workspace->screen->active_workspace) + meta_display_cleanup_edges (workspace->screen->display); + g_free (workspace->work_area_xinerama); workspace->work_area_xinerama = NULL; diff --git a/src/core/xprops.c b/src/core/xprops.c index f9b4578a..a54e2185 100644 --- a/src/core/xprops.c +++ b/src/core/xprops.c @@ -264,6 +264,16 @@ cardinal_list_from_results (GetPropertyResults *results, *n_cardinals_p = results->n_items; results->prop = NULL; +#if GLIB_SIZEOF_LONG == 8 + /* Xlib sign-extends format=32 items, but we want them unsigned */ + { + int i; + + for (i = 0; i < *n_cardinals_p; i++) + (*cardinals_p)[i] = (*cardinals_p)[i] & 0xffffffff; + } +#endif + return TRUE; } @@ -608,6 +618,10 @@ cardinal_with_atom_type_from_results (GetPropertyResults *results, return FALSE; *cardinal_p = *(gulong*) results->prop; +#if GLIB_SIZEOF_LONG == 8 + /* Xlib sign-extends format=32 items, but we want them unsigned */ + *cardinal_p &= 0xffffffff; +#endif XFree (results->prop); results->prop = NULL; @@ -632,6 +646,29 @@ meta_prop_get_cardinal_with_atom_type (MetaDisplay *display, return cardinal_with_atom_type_from_results (&results, prop_type, cardinal_p); } +static char * +text_property_to_utf8 (Display *xdisplay, + const XTextProperty *prop) +{ + char *ret = NULL; + char **local_list = NULL; + int count = 0; + int res; + + res = XmbTextPropertyToTextList (xdisplay, prop, &local_list, &count); + if (res == XNoMemory || res == XLocaleNotSupported || res == XConverterNotFound) + goto out; + + if (count == 0) + goto out; + + ret = g_strdup (local_list[0]); + + out: + meta_XFree (local_list); + return ret; +} + static gboolean text_property_from_results (GetPropertyResults *results, char **utf8_str_p) @@ -646,8 +683,7 @@ text_property_from_results (GetPropertyResults *results, tp.format = results->format; tp.nitems = results->n_items; - *utf8_str_p = meta_text_property_to_utf8 (results->display->xdisplay, - &tp); + *utf8_str_p = text_property_to_utf8 (results->display->xdisplay, &tp); if (tp.value != NULL) XFree (tp.value); diff --git a/src/include/all-keybindings.h b/src/include/all-keybindings.h index 50532c4b..a26720a1 100644 --- a/src/include/all-keybindings.h +++ b/src/include/all-keybindings.h @@ -252,6 +252,11 @@ keybind (maximize-vertically, handle_maximize_vertically, 0, keybind (maximize-horizontally, handle_maximize_horizontally, 0, BINDING_PER_WINDOW) +keybind (tile-to-side-e, handle_toggle_tiled, META_TILE_RIGHT, + BINDING_PER_WINDOW) +keybind (tile-to-side-w, handle_toggle_tiled, META_TILE_LEFT, + BINDING_PER_WINDOW) + keybind (move-to-corner-nw, handle_move_to_corner_nw, 0, BINDING_PER_WINDOW) keybind (move-to-corner-ne, handle_move_to_corner_ne, 0, diff --git a/src/include/common.h b/src/include/common.h index 69755e24..74137967 100644 --- a/src/include/common.h +++ b/src/include/common.h @@ -312,4 +312,14 @@ struct _MetaButtonLayout (ycoord) >= (rect).y && \ (ycoord) < ((rect).y + (rect).height)) +/* + * Placement mode + */ +typedef enum +{ + META_PLACEMENT_MODE_AUTOMATIC, + META_PLACEMENT_MODE_POINTER, + META_PLACEMENT_MODE_MANUAL +} MetaPlacementMode; + #endif diff --git a/src/include/display.h b/src/include/display.h index a8dc49eb..5b0e5642 100644 --- a/src/include/display.h +++ b/src/include/display.h @@ -29,9 +29,6 @@ #define meta_XFree(p) do { if ((p)) XFree ((p)); } while (0) -void meta_display_get_compositor_version (MetaDisplay *display, - int *major, - int *minor); Display *meta_display_get_xdisplay (MetaDisplay *display); MetaCompositor *meta_display_get_compositor (MetaDisplay *display); GSList *meta_display_get_screens (MetaDisplay *display); diff --git a/src/include/prefs.h b/src/include/prefs.h index d804207c..a2fbbf55 100644 --- a/src/include/prefs.h +++ b/src/include/prefs.h @@ -64,7 +64,8 @@ typedef enum META_PREF_RESIZE_WITH_RIGHT_BUTTON, META_PREF_CENTER_NEW_WINDOWS, META_PREF_SIDE_BY_SIDE_TILING, - META_PREF_FORCE_FULLSCREEN + META_PREF_FORCE_FULLSCREEN, + META_PREF_PLACEMENT_MODE } MetaPreference; typedef void (* MetaPrefsChangedFunc) (MetaPreference pref, @@ -112,6 +113,8 @@ MetaActionTitlebar meta_prefs_get_action_double_click_titlebar (void); MetaActionTitlebar meta_prefs_get_action_middle_click_titlebar (void); MetaActionTitlebar meta_prefs_get_action_right_click_titlebar (void); +MetaPlacementMode meta_prefs_get_placement_mode (void); + void meta_prefs_set_num_workspaces (int n_workspaces); const char* meta_prefs_get_workspace_name (int i); diff --git a/src/include/ui.h b/src/include/ui.h index e7ce90aa..70987d33 100644 --- a/src/include/ui.h +++ b/src/include/ui.h @@ -134,20 +134,6 @@ void meta_ui_window_menu_popup (MetaWindowMenu *menu, guint32 timestamp); void meta_ui_window_menu_free (MetaWindowMenu *menu); -#if !GTK_CHECK_VERSION (3, 0, 0) -MetaImageWindow* meta_image_window_new (Display *xdisplay, - int screen_number, - int max_width, - int max_height); -void meta_image_window_free (MetaImageWindow *iw); -void meta_image_window_set_showing (MetaImageWindow *iw, - gboolean showing); -void meta_image_window_set (MetaImageWindow *iw, - GdkPixbuf *pixbuf, - int x, - int y); -#endif - GdkPixbuf* meta_gdk_pixbuf_get_from_pixmap (GdkPixbuf *dest, Pixmap xpixmap, int src_x, @@ -170,9 +156,6 @@ GdkPixbuf* meta_ui_get_default_mini_icon (MetaUI *ui); gboolean meta_ui_window_should_not_cause_focus (Display *xdisplay, Window xwindow); -char* meta_text_property_to_utf8 (Display *xdisplay, - const XTextProperty *prop); - void meta_ui_set_current_theme (const char *name, gboolean force_reload); gboolean meta_ui_have_a_theme (void); diff --git a/src/marco.convert b/src/marco.convert index eb1f623b..21c8799f 100644 --- a/src/marco.convert +++ b/src/marco.convert @@ -142,6 +142,8 @@ raise = /apps/marco/window_keybindings/raise lower = /apps/marco/window_keybindings/lower maximize-vertically = /apps/marco/window_keybindings/maximize_vertically maximize-horizontally = /apps/marco/window_keybindings/maximize_horizontally +tile-to-side-e = /apps/marco/window_keybindings/tile_to_side_e +tile-to-side-w = /apps/marco/window_keybindings/tile_to_side_w move-to-corner-nw = /apps/marco/window_keybindings/move_to_corner_nw move-to-corner-ne = /apps/marco/window_keybindings/move_to_corner_ne move-to-corner-sw = /apps/marco/window_keybindings/move_to_corner_sw diff --git a/src/org.mate.marco.gschema.xml b/src/org.mate.marco.gschema.xml index 5a1bef84..6b4a8562 100644 --- a/src/org.mate.marco.gschema.xml +++ b/src/org.mate.marco.gschema.xml @@ -30,6 +30,11 @@ <value nick="menu" value="7"/> <value nick="last" value="8"/> </enum> + <enum id="org.mate.Marco.placement_type"> + <value value="0" nick="automatic"/> + <value value="1" nick="pointer"/> + <value value="2" nick="manual"/> + </enum> <schema id="org.mate.Marco" path="/org/mate/marco/"> <child name="general" schema="org.mate.Marco.general"/> @@ -171,6 +176,11 @@ <summary>Whether to enable side-by-side tiling</summary> <description>If enabled, dropping windows on screen edges maximizes them vertically and resizes them horizontally to cover half of the available area. Drag-dropping to the top maximizes the window.</description> </key> + <key name="placement-mode" enum="org.mate.Marco.placement_type"> + <default>'automatic'</default> + <summary>Window placement mode</summary> + <description>The window placement mode indicates how new windows are positioned. "automatic" means the system chooses a location automatically based on the space available on the desktop, or by a simple cascade if there is no space; "pointer" means that new windows are placed according to the mouse pointer position; "manual" means that the user must manually place the new window with the mouse or keyboard.</description> + </key> </schema> <schema id="org.mate.Marco.workspace-names" path="/org/mate/marco/workspace-names/"> @@ -843,6 +853,16 @@ <summary>Maximize window horizontally</summary> <description>The format looks like "<Control>a" or "<Shift><Alt>F1". The parser is fairly liberal and allows lower or upper case, and also abbreviations such as "<Ctl>" and "<Ctrl>". If you set the option to the special string "disabled", then there will be no keybinding for this action.</description> </key> + <key name="tile-to-side-e" type="s"> + <default>'disabled'</default> + <summary>Tile window to east (right) side of screen</summary> + <description>The format looks like "<Control>a" or "<Shift><Alt>F1". The parser is fairly liberal and allows lower or upper case, and also abbreviations such as "<Ctl>" and "<Ctrl>". If you set the option to the special string "disabled", then there will be no keybinding for this action.</description> + </key> + <key name="tile-to-side-w" type="s"> + <default>'disabled'</default> + <summary>Tile window to west (left) side of screen</summary> + <description>The format looks like "<Control>a" or "<Shift><Alt>F1". The parser is fairly liberal and allows lower or upper case, and also abbreviations such as "<Ctl>" and "<Ctrl>". If you set the option to the special string "disabled", then there will be no keybinding for this action.</description> + </key> <key name="move-to-corner-nw" type="s"> <default>'disabled'</default> <summary>Move window to north-west (top left) corner</summary> diff --git a/src/tools/marco-window-demo.c b/src/tools/marco-window-demo.c index 1585b385..edff5f71 100644 --- a/src/tools/marco-window-demo.c +++ b/src/tools/marco-window-demo.c @@ -74,19 +74,22 @@ static void on_realize_set_struts (GtkWindow *window, gpointer data) { + GtkWidget *widget; int left; int right; int top; int bottom; - g_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (window))); + widget = GTK_WIDGET (window); + + g_return_if_fail (gtk_widget_get_realized (widget)); left = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (window), "meta-strut-left")); right = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (window), "meta-strut-right")); top = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (window), "meta-strut-top")); bottom = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (window), "meta-strut-bottom")); - set_gdk_window_struts (gtk_widget_get_window (GTK_WIDGET (window)), + set_gdk_window_struts (gtk_widget_get_window (widget), left, right, top, bottom); } @@ -97,6 +100,10 @@ set_gtk_window_struts (GtkWidget *window, int top, int bottom) { + GtkWidget *widget; + + widget = GTK_WIDGET (window); + g_object_set_data (G_OBJECT (window), "meta-strut-left", GINT_TO_POINTER (left)); g_object_set_data (G_OBJECT (window), "meta-strut-right", @@ -115,8 +122,8 @@ set_gtk_window_struts (GtkWidget *window, G_CALLBACK (on_realize_set_struts), NULL); - if (gtk_widget_get_realized (GTK_WIDGET (window))) - set_gdk_window_struts (gtk_widget_get_window (GTK_WIDGET (window)), + if (gtk_widget_get_realized (widget)) + set_gdk_window_struts (gtk_widget_get_window (widget), left, right, top, bottom); } @@ -157,6 +164,10 @@ static void set_gtk_window_type (GtkWindow *window, const char *type) { + GtkWidget *widget; + + widget = GTK_WIDGET (window); + g_object_set_data (G_OBJECT (window), "meta-window-type", (char*) type); g_signal_handlers_disconnect_by_func (G_OBJECT (window), @@ -168,8 +179,8 @@ set_gtk_window_type (GtkWindow *window, G_CALLBACK (on_realize_set_type), NULL); - if (gtk_widget_get_realized (GTK_WIDGET (window))) - set_gdk_window_type (gtk_widget_get_window (GTK_WIDGET (window)), + if (gtk_widget_get_realized (widget)) + set_gdk_window_type (gtk_widget_get_window (widget), type); } @@ -183,14 +194,22 @@ static void on_realize_set_border_only (GtkWindow *window, gpointer data) { - g_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (window))); + GtkWidget *widget; + + widget = GTK_WIDGET (window); - set_gdk_window_border_only (gtk_widget_get_window (GTK_WIDGET (window))); + g_return_if_fail (gtk_widget_get_realized (widget)); + + set_gdk_window_border_only (gtk_widget_get_window (widget)); } static void set_gtk_window_border_only (GtkWindow *window) { +GtkWidget *widget; + + widget = GTK_WIDGET (window); + g_signal_handlers_disconnect_by_func (G_OBJECT (window), on_realize_set_border_only, NULL); @@ -200,8 +219,8 @@ set_gtk_window_border_only (GtkWindow *window) G_CALLBACK (on_realize_set_border_only), NULL); - if (gtk_widget_get_realized (GTK_WIDGET (window))) - set_gdk_window_border_only (gtk_widget_get_window (GTK_WIDGET (window))); + if (gtk_widget_get_realized (widget)) + set_gdk_window_border_only (gtk_widget_get_window (widget)); } int @@ -307,9 +326,8 @@ dialog_cb (GSimpleAction *action, gpointer callback_data) #else static void -dialog_cb (gpointer callback_data, - guint callback_action, - GtkWidget *widget) +dialog_cb (GtkAction *action, + gpointer callback_data) #endif { make_dialog (GTK_WIDGET (callback_data), 1); @@ -322,9 +340,8 @@ modal_dialog_cb (GSimpleAction *action, gpointer callback_data) #else static void -modal_dialog_cb (gpointer callback_data, - guint callback_action, - GtkWidget *widget) +modal_dialog_cb (GtkAction *action, + gpointer callback_data) #endif { GtkWidget *dialog; @@ -349,9 +366,8 @@ no_parent_dialog_cb (GSimpleAction *action, gpointer callback_data) #else static void -no_parent_dialog_cb (gpointer callback_data, - guint callback_action, - GtkWidget *widget) +no_parent_dialog_cb (GtkAction *action, + gpointer callback_data) #endif { make_dialog (NULL, 1); @@ -364,9 +380,8 @@ utility_cb (GSimpleAction *action, gpointer callback_data) #else static void -utility_cb (gpointer callback_data, - guint callback_action, - GtkWidget *widget) +utility_cb (GtkAction *action, + gpointer callback_data) #endif { GtkWidget *window; @@ -405,9 +420,8 @@ toolbar_cb (GSimpleAction *action, gpointer callback_data) #else static void -toolbar_cb (gpointer callback_data, - guint callback_action, - GtkWidget *widget) +toolbar_cb (GtkAction *action, + gpointer callback_data) #endif { GtkWidget *window; @@ -437,9 +451,8 @@ menu_cb (GSimpleAction *action, gpointer callback_data) #else static void -menu_cb (gpointer callback_data, - guint callback_action, - GtkWidget *widget) +menu_cb (GtkAction *action, + gpointer callback_data) #endif { GtkWidget *window; @@ -469,9 +482,8 @@ override_redirect_cb (GSimpleAction *action, gpointer callback_data) #else static void -override_redirect_cb (gpointer callback_data, - guint callback_action, - GtkWidget *widget) +override_redirect_cb (GtkAction *action, + gpointer callback_data) #endif { GtkWidget *window; @@ -498,9 +510,8 @@ border_only_cb (GSimpleAction *action, gpointer callback_data) #else static void -border_only_cb (gpointer callback_data, - guint callback_action, - GtkWidget *widget) +border_only_cb (GtkAction *action, + gpointer callback_data) #endif { GtkWidget *window; @@ -575,9 +586,8 @@ splashscreen_cb (GSimpleAction *action, gpointer callback_data) #else static void -splashscreen_cb (gpointer callback_data, - guint callback_action, - GtkWidget *widget) +splashscreen_cb (GtkAction *action, + gpointer callback_data) #endif { GtkWidget *window; @@ -691,15 +701,14 @@ dock_cb (GSimpleAction *action, gpointer callback_data) #else static void -dock_cb (gpointer callback_data, - guint callback_action, - GtkWidget *widget) +dock_cb (GtkAction *action, + gpointer callback_data) #endif { -#if GTK_CHECK_VERSION (3, 0, 0) guint callback_action; const gchar *name; +#if GTK_CHECK_VERSION (3, 0, 0) g_object_get (G_OBJECT (action), "name", &name, NULL); if (!g_strcmp0 (name, "top-dock")) @@ -714,6 +723,21 @@ dock_cb (gpointer callback_data, callback_action = DOCK_ALL; else return; +#else + name = gtk_action_get_name (action); + + if (!g_strcmp0 (name, "Top dock")) + callback_action = DOCK_TOP; + else if (!g_strcmp0 (name, "Bottom dock")) + callback_action = DOCK_BOTTOM; + else if (!g_strcmp0 (name, "Left dock")) + callback_action = DOCK_LEFT; + else if (!g_strcmp0 (name, "Right dock")) + callback_action = DOCK_RIGHT; + else if (!g_strcmp0 (name, "All docks")) + callback_action = DOCK_ALL; + else + return; #endif if (callback_action == DOCK_ALL) { @@ -735,9 +759,8 @@ desktop_cb (GSimpleAction *action, gpointer callback_data) #else static void -desktop_cb (gpointer callback_data, - guint callback_action, - GtkWidget *widget) +desktop_cb (GtkAction *action, + gpointer callback_data) #endif { GtkWidget *window; @@ -777,30 +800,6 @@ desktop_cb (gpointer callback_data, gtk_widget_show_all (window); } -#if !GTK_CHECK_VERSION(3, 0, 0) -static GtkItemFactoryEntry menu_items[] = -{ - { "/_Windows", NULL, NULL, 0, "<Branch>" }, - { "/Windows/tearoff", NULL, NULL, 0, "<Tearoff>" }, - { "/Windows/_Dialog", "<control>d", dialog_cb, 0, NULL }, - { "/Windows/_Modal dialog", NULL, modal_dialog_cb, 0, NULL }, - { "/Windows/_Parentless dialog", NULL, no_parent_dialog_cb, 0, NULL }, - { "/Windows/_Utility", "<control>u", utility_cb, 0, NULL }, - { "/Windows/_Splashscreen", "<control>s", splashscreen_cb, 0, NULL }, - { "/Windows/_Top dock", NULL, dock_cb, DOCK_TOP, NULL }, - { "/Windows/_Bottom dock", NULL, dock_cb, DOCK_BOTTOM, NULL }, - { "/Windows/_Left dock", NULL, dock_cb, DOCK_LEFT, NULL }, - { "/Windows/_Right dock", NULL, dock_cb, DOCK_RIGHT, NULL }, - { "/Windows/_All docks", NULL, dock_cb, DOCK_ALL, NULL }, - { "/Windows/Des_ktop", NULL, desktop_cb, 0, NULL }, - { "/Windows/Me_nu", NULL, menu_cb, 0, NULL }, - { "/Windows/Tool_bar", NULL, toolbar_cb, 0, NULL }, - { "/Windows/Override Redirect", NULL, override_redirect_cb, 0, NULL }, - { "/Windows/Border Only", NULL, border_only_cb, 0, NULL } -}; - -#endif - #if GTK_CHECK_VERSION (3, 0, 0) static void sleep_cb (GSimpleAction *action, @@ -808,7 +807,7 @@ sleep_cb (GSimpleAction *action, gpointer data) #else static void -sleep_cb (GtkWidget *button, +sleep_cb (GtkAction *action, gpointer data) #endif { @@ -822,12 +821,13 @@ toggle_aspect_ratio (GSimpleAction *action, gpointer data) #else static void -toggle_aspect_ratio (GtkWidget *button, +toggle_aspect_ratio (GtkAction *action, gpointer data) #endif { GtkWidget *window; GdkGeometry geom; + GtkWidget *widget = GTK_WIDGET (data); if (aspect_on) { @@ -842,11 +842,7 @@ toggle_aspect_ratio (GtkWidget *button, aspect_on = !aspect_on; -#if GTK_CHECK_VERSION(3, 0, 0) - window = gtk_widget_get_ancestor (GTK_WIDGET(data), GTK_TYPE_WINDOW); -#else - window = gtk_widget_get_ancestor (button, GTK_TYPE_WINDOW); -#endif + window = gtk_widget_get_ancestor (widget, GTK_TYPE_WINDOW); if (window) gtk_window_set_geometry_hints (GTK_WINDOW (window), GTK_WIDGET (data), @@ -867,11 +863,7 @@ toggle_decorated_cb (GtkWidget *button, #endif { GtkWidget *window; -#if GTK_CHECK_VERSION (3, 0, 0) window = gtk_widget_get_ancestor (data, GTK_TYPE_WINDOW); -#else - window = gtk_widget_get_ancestor (button, GTK_TYPE_WINDOW); -#endif if (window) gtk_window_set_decorated (GTK_WINDOW (window), !gtk_window_get_decorated (GTK_WINDOW (window))); @@ -1088,6 +1080,90 @@ create_toolbar (void) return toolbar; } +#else +static const gchar *menu_item_string = + "<ui>\n" + "<menubar>\n" + "<menu name='Windows' action='Windows'>\n" + "<menuitem name='Dialog' action='Dialog'/>\n" + "<menuitem name='Modal dialog' action='Modal dialog'/>\n" + "<menuitem name='Parentless dialog' action='Parentless dialog'/>\n" + "<menuitem name='Utility' action='Utility'/>\n" + "<menuitem name='Splashscreen' action='Splashscreen'/>\n" + "<menuitem name='Top dock' action='Top dock'/>\n" + "<menuitem name='Bottom dock' action='Bottom dock'/>\n" + "<menuitem name='Left dock' action='Left dock'/>\n" + "<menuitem name='Right dock' action='Right dock'/>\n" + "<menuitem name='All docks' action='All docks'/>\n" + "<menuitem name='Desktop' action='Desktop'/>\n" + "<menuitem name='Menu' action='Menu'/>\n" + "<menuitem name='Toolbar' action='Toolbar'/>\n" + "<menuitem name='Override Redirect' action='Override Redirect'/>\n" + "<menuitem name='Border Only' action='Border Only'/>\n" + "</menu>\n" + "</menubar>\n" + "<toolbar>\n" + "<toolitem name='New' action='New'/>\n" + "<toolitem name='Lock' action='Lock'/>\n" + "<toolitem name='Decorations' action='Decorations'/>\n" + "<toolitem name='Ratio' action='Ratio'/>\n" + "<toolitem name='Quit' action='Quit'/>\n" + "</toolbar>\n" + "</ui>\n"; + +static const GtkActionEntry menu_items[] = +{ + { "Windows", NULL, "_Windows", NULL, + NULL, NULL }, + { "Dialog", NULL, "_Dialog", "<control>d", + NULL, G_CALLBACK (dialog_cb) }, + { "Modal dialog", NULL, "_Modal dialog", NULL, + NULL, G_CALLBACK (modal_dialog_cb) }, + { "Parentless dialog", NULL, "_Parentless dialog", NULL, + NULL, G_CALLBACK (no_parent_dialog_cb) }, + { "Utility", NULL, "_Utility", "<control>u", + NULL, G_CALLBACK (utility_cb) }, + { "Splashscreen", NULL, "_Splashscreen", "<control>s", + NULL, G_CALLBACK (splashscreen_cb) }, + { "Top dock", NULL, "_Top dock", NULL, + NULL, G_CALLBACK (dock_cb) }, + { "Bottom dock", NULL, "_Bottom dock", NULL, + NULL, G_CALLBACK (dock_cb) }, + { "Left dock", NULL, "_Left dock", NULL, + NULL, G_CALLBACK (dock_cb) }, + { "Right dock", NULL, "_Right dock", NULL, + NULL, G_CALLBACK (dock_cb) }, + { "All docks", NULL, "_All docks", NULL, + NULL, G_CALLBACK (dock_cb) }, + { "Desktop", NULL, "Des_ktop", NULL, + NULL, G_CALLBACK (desktop_cb) }, + { "Menu", NULL, "Me_nu", NULL, + NULL, G_CALLBACK (menu_cb) }, + { "Toolbar", NULL, "Tool_bar", NULL, + NULL, G_CALLBACK (toolbar_cb) }, + { "Override Redirect", NULL, "Override Redirect", NULL, + NULL, G_CALLBACK (override_redirect_cb) }, + { "Border Only", NULL, "Border Only", NULL, + NULL, G_CALLBACK (border_only_cb) } +}; + +static const GtkActionEntry tool_items[] = +{ + { "New", GTK_STOCK_NEW, NULL, NULL, + "Open another one of these windows", G_CALLBACK (do_appwindow) }, + { "Lock", GTK_STOCK_OPEN, NULL, NULL, + "This is a demo button that" + " locks up the demo", G_CALLBACK (sleep_cb) }, + { "Decorations", GTK_STOCK_OPEN, NULL, NULL, + "This is a demo button that " + "toggles window decorations", G_CALLBACK (toggle_decorated_cb) }, + { "Quit", GTK_STOCK_QUIT, NULL, NULL, + "This is a demo button with " + " a 'quit' icon", G_CALLBACK (clicked_toolbar_cb) }, + { "Ratio", GTK_STOCK_OPEN, NULL, NULL, + "This is a demo button that locks the aspect ratio " + "using a hint", G_CALLBACK (toggle_aspect_ratio) } +}; #endif #if GTK_CHECK_VERSION (3, 0, 0) @@ -1103,27 +1179,20 @@ do_appwindow (void) GtkWidget *window; #if GTK_CHECK_VERSION (3, 0, 0) GtkWidget *grid; + GtkWidget *toolbar; + GSimpleActionGroup *action_group; + GtkBuilder *builder; #else GtkWidget *table; -#endif - GtkWidget *toolbar; -#if !GTK_CHECK_VERSION (3, 0, 0) GtkWidget *handlebox; + GtkActionGroup *action_group; + GtkUIManager *ui_manager; #endif GtkWidget *statusbar; GtkWidget *contents; GtkWidget *sw; GtkTextBuffer *buffer; - #if GTK_CHECK_VERSION(3, 0, 0) - GSimpleActionGroup *action_group; - GtkBuilder *builder; - #else - GtkAccelGroup *accel_group; - GtkItemFactory *item_factory; - #endif - - /* Create the toplevel window */ @@ -1179,27 +1248,27 @@ do_appwindow (void) /* Create the menubar */ - accel_group = gtk_accel_group_new (); - gtk_window_add_accel_group (GTK_WINDOW (window), accel_group); - g_object_unref (accel_group); + contents = gtk_text_view_new (); + + action_group = gtk_action_group_new ("mainmenu"); + gtk_action_group_add_actions (action_group, + menu_items, + G_N_ELEMENTS (menu_items), + window); + gtk_action_group_add_actions (action_group, + tool_items, + G_N_ELEMENTS (tool_items), + window); - item_factory = gtk_item_factory_new (GTK_TYPE_MENU_BAR, "<main>", accel_group); + ui_manager = gtk_ui_manager_new (); - /* Set up item factory to go away with the window */ - g_object_ref (item_factory); - g_object_ref_sink (item_factory); - g_object_unref (item_factory); - g_object_set_data_full (G_OBJECT (window), - "<main>", - item_factory, - (GDestroyNotify) g_object_unref); + gtk_ui_manager_insert_action_group (ui_manager, action_group, 0); /* create menu items */ - gtk_item_factory_create_items (item_factory, G_N_ELEMENTS (menu_items), - menu_items, window); + gtk_ui_manager_add_ui_from_string (ui_manager, menu_item_string, -1, NULL); gtk_table_attach (GTK_TABLE (table), - gtk_item_factory_get_widget (item_factory, "<main>"), + gtk_ui_manager_get_widget (ui_manager, "/ui/menubar"), /* X direction */ /* Y direction */ 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, 0, @@ -1237,7 +1306,6 @@ do_appwindow (void) gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); - contents = gtk_text_view_new (); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (contents), PANGO_WRAP_WORD); @@ -1247,68 +1315,11 @@ do_appwindow (void) #if !GTK_CHECK_VERSION (3, 0, 0) /* Create the toolbar */ - toolbar = gtk_toolbar_new (); - - GtkToolItem *newButton = gtk_tool_button_new_from_stock(GTK_STOCK_NEW); - gtk_tool_item_set_tooltip_text(newButton, - "Open another one of these windows"); - g_signal_connect(G_OBJECT(newButton), - "clicked", - G_CALLBACK(do_appwindow), - window); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), - newButton, - -1); /*-1 means append to end of toolbar*/ - - - GtkToolItem *lockButton = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN); - gtk_tool_item_set_tooltip_text(lockButton, - "This is a demo button that locks up the demo"); - g_signal_connect(G_OBJECT(lockButton), - "clicked", - G_CALLBACK(sleep_cb), - window); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), - lockButton, - -1); /*-1 means append to end of toolbar*/ - - - GtkToolItem *decoButton = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN); - gtk_tool_item_set_tooltip_text(decoButton, - "This is a demo button that toggles window decorations"); - g_signal_connect(G_OBJECT(decoButton), - "clicked", - G_CALLBACK(toggle_decorated_cb), - window); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), - decoButton, - -1); /*-1 means append to end of toolbar*/ - - GtkToolItem *lockRatioButton = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN); - gtk_tool_item_set_tooltip_text(lockRatioButton, - "This is a demo button that locks the aspect ratio using a hint"); - g_signal_connect(G_OBJECT(lockRatioButton), - "clicked", - G_CALLBACK(toggle_aspect_ratio), - window); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), - lockRatioButton, - -1); /*-1 means append to end of toolbar*/ - - GtkToolItem *quitButton = gtk_tool_button_new_from_stock(GTK_STOCK_QUIT); - gtk_tool_item_set_tooltip_text(quitButton, - "This is a demo button with a 'quit' icon"); - g_signal_connect(G_OBJECT(quitButton), - "clicked", - G_CALLBACK(clicked_toolbar_cb), - window); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), - quitButton, - -1); /*-1 means append to end of toolbar*/ handlebox = gtk_handle_box_new (); - gtk_container_add (GTK_CONTAINER (handlebox), toolbar); + gtk_container_add (GTK_CONTAINER (handlebox), + gtk_ui_manager_get_widget (ui_manager, "/ui/toolbar")); gtk_table_attach (GTK_TABLE (table), handlebox, @@ -1362,6 +1373,7 @@ do_appwindow (void) g_object_unref (action_group); g_object_unref (builder); #else + g_object_unref (ui_manager); return window; #endif } diff --git a/src/ui/draw-workspace.c b/src/ui/draw-workspace.c index a40579db..4feb25c9 100644 --- a/src/ui/draw-workspace.c +++ b/src/ui/draw-workspace.c @@ -26,12 +26,7 @@ */ #include "draw-workspace.h" - -#if GTK_CHECK_VERSION (3, 0, 0) -#define MATE_DESKTOP_USE_UNSTABLE_API -#include <libmate-desktop/mate-desktop-utils.h> -#endif - +#include "theme.h" static void get_window_rect (const WnckWindowDisplayInfo *win, @@ -110,7 +105,7 @@ draw_window (GtkWidget *widget, #if GTK_CHECK_VERSION (3, 0, 0) style = gtk_widget_get_style_context (widget); if (is_active) - mate_desktop_gtk_style_get_light_color (style, state, &color); + meta_gtk_style_get_light_color (style, state, &color); else gtk_style_context_get_background_color (style, state, &color); gdk_cairo_set_source_rgba (cr, &color); @@ -268,7 +263,7 @@ wnck_draw_workspace (GtkWidget *widget, #if GTK_CHECK_VERSION (3, 0, 0) GdkRGBA color; - mate_desktop_gtk_style_get_dark_color (style,state, &color); + meta_gtk_style_get_dark_color (style,state, &color); gdk_cairo_set_source_rgba (cr, &color); #else gdk_cairo_set_source_color (cr, >k_widget_get_style (widget)->dark[state]); diff --git a/src/ui/fixedtip.c b/src/ui/fixedtip.c index fc1be2af..7037eab3 100644 --- a/src/ui/fixedtip.c +++ b/src/ui/fixedtip.c @@ -72,7 +72,7 @@ draw_handler (GtkWidget *tooltips, #else static gint -expose_handler (GtkTooltips *tooltips) +expose_handler (GtkTooltip *tooltips) { gtk_paint_flat_box (gtk_widget_get_style (tip), gtk_widget_get_window (tip), GTK_STATE_NORMAL, GTK_SHADOW_OUT, diff --git a/src/ui/frames.c b/src/ui/frames.c index 099c5052..99260936 100644 --- a/src/ui/frames.c +++ b/src/ui/frames.c @@ -161,6 +161,24 @@ meta_frames_get_type (void) #endif +static GObject * +meta_frames_constructor (GType gtype, + guint n_properties, + GObjectConstructParam *properties) +{ + GObject *object; + GObjectClass *gobject_class; + + gobject_class = G_OBJECT_CLASS (parent_class); + object = gobject_class->constructor (gtype, n_properties, properties); + + g_object_set (object, + "type", GTK_WINDOW_POPUP, + NULL); + + return object; +} + static void meta_frames_class_init (MetaFramesClass *class) { @@ -180,6 +198,7 @@ meta_frames_class_init (MetaFramesClass *class) parent_class = g_type_class_peek_parent (class); #endif + gobject_class->constructor = meta_frames_constructor; gobject_class->finalize = meta_frames_finalize; #if !GTK_CHECK_VERSION(3, 0, 0) object_class->destroy = meta_frames_destroy; @@ -245,10 +264,6 @@ prefs_changed_callback (MetaPreference pref, static void meta_frames_init (MetaFrames *frames) { - #if !GTK_CHECK_VERSION(3, 0, 0) - GTK_WINDOW (frames)->type = GTK_WINDOW_POPUP; - #endif - frames->text_heights = g_hash_table_new (NULL, NULL); frames->frames = g_hash_table_new (unsigned_long_hash, unsigned_long_equal); @@ -565,6 +580,8 @@ meta_frames_ensure_layout (MetaFrames *frames, pango_layout_set_auto_dir (frame->layout, FALSE); + pango_layout_set_single_paragraph_mode (frame->layout, TRUE); + font_desc = meta_gtk_widget_get_font_desc (widget, scale, meta_prefs_get_titlebar_font ()); @@ -662,8 +679,9 @@ meta_frames_attach_style (MetaFrames *frames, frame->style = g_object_ref (gtk_widget_get_style_context (GTK_WIDGET (frames))); #else /* Weirdly, gtk_style_attach() steals a reference count from the style passed in */ - g_object_ref (GTK_WIDGET (frames)->style); - frame->style = gtk_style_attach (GTK_WIDGET (frames)->style, frame->window); + g_object_ref (gtk_widget_get_style (GTK_WIDGET (frames))); + frame->style = gtk_style_attach (gtk_widget_get_style (GTK_WIDGET (frames)), + frame->window); #endif } @@ -2324,7 +2342,7 @@ clip_to_screen (GdkRegion *region, MetaUIFrame *frame) META_CORE_GET_FRAME_Y, &frame_area.y, META_CORE_GET_FRAME_WIDTH, &frame_area.width, META_CORE_GET_FRAME_HEIGHT, &frame_area.height, - META_CORE_GET_SCREEN_WIDTH, &screen_area.height, + META_CORE_GET_SCREEN_WIDTH, &screen_area.width, META_CORE_GET_SCREEN_HEIGHT, &screen_area.height, META_CORE_GET_END); diff --git a/src/ui/menu.c b/src/ui/menu.c index 1dfc7140..407ef986 100644 --- a/src/ui/menu.c +++ b/src/ui/menu.c @@ -381,6 +381,7 @@ meta_window_menu_new (MetaFrames *frames, Display *display; Window xroot; GdkScreen *screen; + GdkWindow *window; GtkWidget *submenu; int j; @@ -393,7 +394,7 @@ meta_window_menu_new (MetaFrames *frames, meta_verbose ("Creating %d-workspace menu current space %lu\n", n_workspaces, active_workspace); - GdkWindow* window = gtk_widget_get_window (GTK_WIDGET (frames)); + window = gtk_widget_get_window (GTK_WIDGET (frames)); display = GDK_WINDOW_XDISPLAY (window); @@ -440,20 +441,11 @@ meta_window_menu_new (MetaFrames *frames, "workspace", GINT_TO_POINTER (j)); - #if GTK_CHECK_VERSION(3, 0, 0) g_signal_connect_data (G_OBJECT (submi), "activate", G_CALLBACK (activate_cb), md, (GClosureNotify) g_free, 0); - #else - gtk_signal_connect_full (GTK_OBJECT (submi), - "activate", - G_CALLBACK (activate_cb), - NULL, - md, - g_free, FALSE, FALSE); - #endif gtk_menu_shell_append (GTK_MENU_SHELL (submenu), submi); @@ -476,20 +468,11 @@ meta_window_menu_new (MetaFrames *frames, md->menu = menu; md->op = menuitem.op; - #if GTK_CHECK_VERSION(3, 0, 0) g_signal_connect_data (G_OBJECT (mi), "activate", G_CALLBACK (activate_cb), md, (GClosureNotify) g_free, 0); - #else - gtk_signal_connect_full (GTK_OBJECT (mi), - "activate", - G_CALLBACK (activate_cb), - NULL, - md, - g_free, FALSE, FALSE); - #endif } if (mi) @@ -518,14 +501,8 @@ void meta_window_menu_popup(MetaWindowMenu* menu, int root_x, int root_y, int bu gtk_menu_popup(GTK_MENU (menu->menu), NULL, NULL, popup_position_func, pt, button, timestamp); - #if GTK_CHECK_VERSION(3, 0, 0) if (!gtk_widget_get_visible (menu->menu)) - #else - if (!GTK_MENU_SHELL(menu->menu)->have_xgrab) - #endif - { - meta_warning("GtkMenu failed to grab the pointer\n"); - } + meta_warning("GtkMenu failed to grab the pointer\n"); } void meta_window_menu_free(MetaWindowMenu* menu) diff --git a/src/ui/metaaccellabel.c b/src/ui/metaaccellabel.c index 3ef870bc..da040ee8 100644 --- a/src/ui/metaaccellabel.c +++ b/src/ui/metaaccellabel.c @@ -423,52 +423,61 @@ meta_accel_label_expose_event (GtkWidget *widget, GtkMisc *misc = GTK_MISC (accel_label); PangoLayout *layout; - if (GTK_WIDGET_DRAWABLE (accel_label)) + if (gtk_widget_is_drawable (GTK_WIDGET (accel_label))) { int ac_width; + GtkAllocation allocation; + GtkRequisition requisition; + gtk_widget_get_allocation (widget, &allocation); + gtk_widget_get_requisition (widget, &requisition); ac_width = meta_accel_label_get_accel_width (accel_label); - if (widget->allocation.width >= widget->requisition.width + ac_width) + if (allocation.width >= requisition.width + ac_width) { GtkTextDirection direction = gtk_widget_get_direction (widget); - gint x; - gint y; + gfloat xalign, yalign; + gint x, y; + gint xpad, ypad; + + gtk_misc_get_padding (misc, &xpad, &ypad); + gtk_misc_get_alignment (misc, &xalign, &yalign); if (direction == GTK_TEXT_DIR_RTL) { - widget->allocation.x += ac_width; + allocation.x += ac_width; } - widget->allocation.width -= ac_width; + allocation.width -= ac_width; + gtk_widget_set_allocation (widget, &allocation); if (GTK_WIDGET_CLASS (parent_class)->expose_event) GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event); if (direction == GTK_TEXT_DIR_RTL) { - widget->allocation.x -= ac_width; + allocation.x -= ac_width; } - widget->allocation.width += ac_width; + allocation.width += ac_width; + gtk_widget_set_allocation (widget, &allocation); if (direction == GTK_TEXT_DIR_RTL) { - x = widget->allocation.x + misc->xpad; + x = allocation.x + allocation.width - xpad - ac_width; } else { - x = widget->allocation.x + widget->allocation.width - misc->xpad - ac_width; + x = allocation.x + allocation.width - xpad - ac_width; } - y = (widget->allocation.y * (1.0 - misc->yalign) + - (widget->allocation.y + widget->allocation.height - - (widget->requisition.height - misc->ypad * 2)) * - misc->yalign) + 1.5; + y = (allocation.y * (1.0 - yalign) + + (allocation.y + allocation.height - + (requisition.height - ypad * 2)) * yalign) + 1.5; layout = gtk_widget_create_pango_layout (widget, accel_label->accel_string); - gtk_paint_layout (widget->style, - widget->window, - GTK_WIDGET_STATE (widget), + gtk_paint_layout (gtk_widget_get_style (widget), + gtk_widget_get_window (widget), + gtk_widget_get_state (widget), FALSE, &event->area, widget, diff --git a/src/ui/preview-widget.c b/src/ui/preview-widget.c index 58122706..9138c6f5 100644 --- a/src/ui/preview-widget.c +++ b/src/ui/preview-widget.c @@ -103,19 +103,17 @@ meta_preview_class_init (MetaPreviewClass *class) gobject_class->finalize = meta_preview_finalize; - #if GTK_CHECK_VERSION(3, 0, 0) +#if GTK_CHECK_VERSION(3, 0, 0) widget_class->draw = meta_preview_draw; widget_class->get_preferred_width = meta_preview_get_preferred_width; widget_class->get_preferred_height = meta_preview_get_preferred_height; - #else - widget_class->expose_event = meta_preview_expose; - widget_class->size_request = meta_preview_size_request; - #endif - widget_class->size_allocate = meta_preview_size_allocate; -#if GTK_CHECK_VERSION(3, 0, 0) gtk_container_class_handle_border_width (GTK_CONTAINER_CLASS (class)); +#else + widget_class->expose_event = meta_preview_expose; + widget_class->size_request = meta_preview_size_request; #endif + widget_class->size_allocate = meta_preview_size_allocate; } static void @@ -162,11 +160,7 @@ meta_preview_new (void) { MetaPreview *preview; - #if GTK_CHECK_VERSION(3, 0, 0) preview = g_object_new (META_TYPE_PREVIEW, NULL); - #else - preview = gtk_type_new (META_TYPE_PREVIEW); - #endif return GTK_WIDGET (preview); } @@ -447,9 +441,6 @@ meta_preview_expose (GtkWidget *widget, return GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event); } -#endif - -#if !GTK_CHECK_VERSION (3, 0, 0) static void meta_preview_size_request (GtkWidget *widget, GtkRequisition *req) @@ -620,7 +611,7 @@ meta_preview_get_icon (void) NULL); else default_icon = gtk_icon_theme_load_icon (theme, - "gtk-missing-image", + "image-missing", META_ICON_WIDTH, 0, NULL); @@ -653,7 +644,7 @@ meta_preview_get_mini_icon (void) NULL); else default_icon = gtk_icon_theme_load_icon (theme, - "gtk-missing-image", + "image-missing", META_MINI_ICON_WIDTH, 0, NULL); diff --git a/src/ui/tabpopup.c b/src/ui/tabpopup.c index dfbdf1a4..12fb4250 100644 --- a/src/ui/tabpopup.c +++ b/src/ui/tabpopup.c @@ -535,16 +535,16 @@ display_entry (MetaTabPopup *popup, if (popup->outline) { + window = gtk_widget_get_window (popup->outline_window); + /* Do stuff behind gtk's back */ - gdk_window_hide (gtk_widget_get_window(popup->outline_window)); + gdk_window_hide (window); meta_core_increment_event_serial (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); rect = te->rect; rect.x = 0; rect.y = 0; - window = gtk_widget_get_window(GTK_WIDGET(popup->outline_window)); - gdk_window_move_resize (window, te->rect.x, te->rect.y, te->rect.width, te->rect.height); @@ -554,7 +554,7 @@ display_entry (MetaTabPopup *popup, gdk_window_set_background_rgba (window, &black); #else gdk_window_set_background (window, - &popup->outline_window->style->black); + >k_widget_get_style (popup->outline_window)->black); #endif region = gdk_region_rectangle (&rect); @@ -828,35 +828,41 @@ meta_select_image_expose_event (GtkWidget *widget, { if (META_SELECT_IMAGE (widget)->selected) { - int x, y, w, h; + GtkAllocation allocation; + GtkRequisition requisition; GtkMisc *misc; GtkStyle *style; GtkStateType state; + GdkWindow *window; + int x, y, w, h; + int xpad, ypad; + float xalign, yalign; cairo_t *cr; - GtkAllocation allocation; - - gtk_widget_get_allocation(widget, &allocation); misc = GTK_MISC (widget); - x = (allocation.x * (1.0 - misc->xalign) + + gtk_widget_get_allocation(widget, &allocation); + gtk_widget_get_requisition (widget, &requisition); + gtk_misc_get_padding (misc, &xpad, &ypad); + gtk_misc_get_alignment (misc, &xalign, &yalign); + + x = (allocation.x * (1.0 - xalign) + (allocation.x + allocation.width - - (widget->requisition.width - misc->xpad * 2)) * - misc->xalign) + 0.5; - y = (allocation.y * (1.0 - misc->yalign) + + - (requisition.width - xpad * 2)) * xalign) + 0.5; + y = (allocation.y * (1.0 - yalign) + (allocation.y + allocation.height - - (widget->requisition.height - misc->ypad * 2)) * - misc->yalign) + 0.5; + - (requisition.height - ypad * 2)) * yalign) + 0.5; x -= INSIDE_SELECT_RECT + 1; y -= INSIDE_SELECT_RECT + 1; - w = widget->requisition.width - OUTSIDE_SELECT_RECT * 2 - 1; - h = widget->requisition.height - OUTSIDE_SELECT_RECT * 2 - 1; + w = requisition.width - OUTSIDE_SELECT_RECT * 2 - 1; + h = requisition.height - OUTSIDE_SELECT_RECT * 2 - 1; + window = gtk_widget_get_window (widget); style = gtk_widget_get_style (widget); state = gtk_widget_get_state (widget); - cr = gdk_cairo_create (gtk_widget_get_window(widget)); + cr = gdk_cairo_create (window); cairo_set_line_width (cr, 2.0); gdk_cairo_set_source_color (cr, &style->fg[state]); @@ -1127,13 +1133,12 @@ meta_select_workspace_expose_event (GtkWidget *widget, { MetaWorkspace *workspace; WnckWindowDisplayInfo *windows; + GtkAllocation allocation; GtkStyle *style; + GdkWindow *window; cairo_t *cr; int i, n_windows; GList *tmp, *list; - GtkAllocation allocation; - - gtk_widget_get_allocation(widget, &allocation); workspace = META_SELECT_WORKSPACE (widget)->workspace; @@ -1170,8 +1175,11 @@ meta_select_workspace_expose_event (GtkWidget *widget, g_list_free (list); + window = gtk_widget_get_window (widget); + gtk_widget_get_allocation (widget, &allocation); + wnck_draw_workspace (widget, - gtk_widget_get_window(widget), + window, SELECT_OUTLINE_WIDTH, SELECT_OUTLINE_WIDTH, allocation.width - SELECT_OUTLINE_WIDTH * 2, @@ -1188,7 +1196,7 @@ meta_select_workspace_expose_event (GtkWidget *widget, if (META_SELECT_WORKSPACE (widget)->selected) { style = gtk_widget_get_style (widget); - cr = gdk_cairo_create (gtk_widget_get_window(widget)); + cr = gdk_cairo_create (window); gdk_cairo_set_source_color (cr, &style->fg[gtk_widget_get_state (widget)]); diff --git a/src/ui/theme-viewer.c b/src/ui/theme-viewer.c index 0a5e4eb2..a9ef8103 100644 --- a/src/ui/theme-viewer.c +++ b/src/ui/theme-viewer.c @@ -76,92 +76,99 @@ static void run_position_expression_timings (void); static void run_theme_benchmark (void); -static GtkItemFactoryEntry menu_items[] = +static const gchar *menu_item_string = + "<ui>\n" + "<menubar>\n" + "<menu name='Windows' action='Windows'>\n" + "<menuitem name='Dialog' action='Dialog'/>\n" + "<menuitem name='Modal dialog' action='Modal dialog'/>\n" + "<menuitem name='Utility' action='Utility'/>\n" + "<menuitem name='Splashscreen' action='Splashscreen'/>\n" + "<menuitem name='Top dock' action='Top dock'/>\n" + "<menuitem name='Bottom dock' action='Bottom dock'/>\n" + "<menuitem name='Left dock' action='Left dock'/>\n" + "<menuitem name='Right dock' action='Right dock'/>\n" + "<menuitem name='Desktop' action='Desktop'/>\n" + "</menu>\n" + "</menubar>\n" + "<toolbar>\n" + "<separator/>\n" + "<toolitem name='New' action='New'/>\n" + "<toolitem name='Open' action='Open'/>\n" + "<toolitem name='Quit' action='Quit'/>\n" + "<separator/>\n" + "</toolbar>\n" + "</ui>\n"; + +static GtkActionEntry menu_items[] = { - { N_("/_Windows"), NULL, NULL, 0, "<Branch>" }, - { N_("/Windows/tearoff"), NULL, NULL, 0, "<Tearoff>" }, - { N_("/Windows/_Dialog"), "<control>d", NULL, 0, NULL }, - { N_("/Windows/_Modal dialog"), NULL, NULL, 0, NULL }, - { N_("/Windows/_Utility"), "<control>u", NULL, 0, NULL }, - { N_("/Windows/_Splashscreen"), "<control>s", NULL, 0, NULL }, - { N_("/Windows/_Top dock"), NULL, NULL, 0, NULL }, - { N_("/Windows/_Bottom dock"), NULL, NULL, 0, NULL }, - { N_("/Windows/_Left dock"), NULL, NULL, 0, NULL }, - { N_("/Windows/_Right dock"), NULL, NULL, 0, NULL }, - { N_("/Windows/_All docks"), NULL, NULL, 0, NULL }, - { N_("/Windows/Des_ktop"), NULL, NULL, 0, NULL } + { "Windows", NULL, N_("_Windows"), NULL, NULL, NULL }, + { "Dialog", NULL, N_("_Dialog"), "<control>d", NULL, NULL }, + { "Modal dialog", NULL, N_("_Modal dialog"), NULL, NULL, NULL }, + { "Utility", NULL, N_("_Utility"), "<control>u", NULL, NULL }, + { "Splashscreen", NULL, N_("_Splashscreen"), "<control>s", NULL, NULL }, + { "Top dock", NULL, N_("_Top dock"), NULL, NULL, NULL }, + { "Bottom dock", NULL, N_("_Bottom dock"), NULL, NULL, NULL }, + { "Left dock", NULL, N_("_Left dock"), NULL, NULL, NULL }, + { "Right dock", NULL, N_("_Right dock"), NULL, NULL, NULL }, + { "All docks", NULL, N_("_All docks"), NULL, NULL, NULL }, + { "Desktop", NULL, N_("Des_ktop"), NULL, NULL, NULL } +}; + +static GtkActionEntry tool_items[] = +{ + { "New", GTK_STOCK_NEW, NULL, NULL, + N_("Open another one of these windows"), NULL }, + { "Open", GTK_STOCK_OPEN, NULL, NULL, + N_("This is a demo button with an 'open' icon"), NULL }, + { "Quit", GTK_STOCK_QUIT, NULL, NULL, + N_("This is a demo button with a 'quit' icon"), NULL } }; static GtkWidget * normal_contents (void) { GtkWidget *table; - GtkWidget *toolbar; GtkWidget *handlebox; GtkWidget *statusbar; GtkWidget *contents; GtkWidget *sw; - GtkItemFactory *item_factory; + GtkActionGroup *action_group; + GtkUIManager *ui_manager; table = gtk_table_new (1, 4, FALSE); /* Create the menubar */ - item_factory = gtk_item_factory_new (GTK_TYPE_MENU_BAR, "<main>", NULL); + action_group = gtk_action_group_new ("mainmenu"); + gtk_action_group_add_actions (action_group, + menu_items, + G_N_ELEMENTS (menu_items), + NULL); + gtk_action_group_add_actions (action_group, + tool_items, + G_N_ELEMENTS (tool_items), + NULL); - gtk_item_factory_set_translate_func(item_factory, - (GtkTranslateFunc)gettext, NULL, NULL); + ui_manager = gtk_ui_manager_new (); - /* Set up item factory to go away */ - g_object_ref (item_factory); - g_object_ref_sink (item_factory); - g_object_unref (item_factory); - g_object_set_data_full (G_OBJECT (table), - "<main>", - item_factory, - (GDestroyNotify) g_object_unref); + gtk_ui_manager_insert_action_group (ui_manager, action_group, 0); /* create menu items */ - gtk_item_factory_create_items (item_factory, G_N_ELEMENTS (menu_items), - menu_items, NULL); + gtk_ui_manager_add_ui_from_string (ui_manager, menu_item_string, -1, NULL); gtk_table_attach (GTK_TABLE (table), - gtk_item_factory_get_widget (item_factory, "<main>"), + gtk_ui_manager_get_widget (ui_manager, "/ui/menubar"), /* X direction */ /* Y direction */ 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); - /* Create the toolbar - */ - toolbar = gtk_toolbar_new (); - - GtkToolItem *newButton = gtk_tool_button_new_from_stock(GTK_STOCK_NEW); - gtk_tool_item_set_tooltip_text(newButton, - "Open another one of these windows"); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), - newButton, - -1); /*-1 means append to end of toolbar*/ - - GtkToolItem *openButton = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN); - gtk_tool_item_set_tooltip_text(openButton, - "This is a demo button with an \'open\' icon"); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), - openButton, - -1); /*-1 means append to end of toolbar*/ - - GtkToolItem *quitButton = gtk_tool_button_new_from_stock(GTK_STOCK_QUIT); - gtk_tool_item_set_tooltip_text(quitButton, - "This is a demo button with a \'quit\' icon"); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), - quitButton, - -1); /*-1 means append to end of toolbar*/ - - handlebox = gtk_handle_box_new (); - gtk_container_add (GTK_CONTAINER (handlebox), toolbar); + gtk_container_add (GTK_CONTAINER (handlebox), + gtk_ui_manager_get_widget (ui_manager, "/ui/toolbar")); gtk_table_attach (GTK_TABLE (table), handlebox, @@ -208,6 +215,8 @@ normal_contents (void) gtk_widget_show_all (table); + g_object_unref (ui_manager); + return table; } @@ -778,6 +787,7 @@ main (int argc, char **argv) { GtkWidget *window; GtkWidget *collection; + GtkStyle *style; GError *err; clock_t start, end; GtkWidget *notebook; @@ -852,26 +862,28 @@ main (int argc, char **argv) G_CALLBACK (gtk_main_quit), NULL); gtk_widget_realize (window); - g_assert (window->style); - g_assert (window->style->font_desc); + style = gtk_widget_get_style (window); + + g_assert (style); + g_assert (style->font_desc); notebook = gtk_notebook_new (); gtk_container_add (GTK_CONTAINER (window), notebook); collection = preview_collection (FONT_SIZE_NORMAL, - window->style->font_desc); + style->font_desc); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), collection, gtk_label_new (_("Normal Title Font"))); collection = preview_collection (FONT_SIZE_SMALL, - window->style->font_desc); + style->font_desc); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), collection, gtk_label_new (_("Small Title Font"))); collection = preview_collection (FONT_SIZE_LARGE, - window->style->font_desc); + style->font_desc); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), collection, gtk_label_new (_("Large Title Font"))); @@ -922,7 +934,7 @@ get_flags (GtkWidget *widget) static int get_text_height (GtkWidget *widget) { - return meta_pango_font_desc_get_text_height (widget->style->font_desc, + return meta_pango_font_desc_get_text_height (gtk_widget_get_style (widget)->font_desc, gtk_widget_get_pango_context (widget)); } @@ -1003,7 +1015,7 @@ run_theme_benchmark (void) /* Creating the pixmap in the loop is right, since * GDK does the same with its double buffering. */ - pixmap = gdk_pixmap_new (widget->window, + pixmap = gdk_pixmap_new (gtk_widget_get_window (widget), client_width + left_width + right_width, client_height + top_height + bottom_height, -1); diff --git a/src/ui/theme.c b/src/ui/theme.c index a7dc8d08..c9f2ab47 100644 --- a/src/ui/theme.c +++ b/src/ui/theme.c @@ -64,11 +64,6 @@ #include <math.h> #if GTK_CHECK_VERSION (3, 0, 0) -#define MATE_DESKTOP_USE_UNSTABLE_API -#include <libmate-desktop/mate-desktop-utils.h> -#endif - -#if GTK_CHECK_VERSION (3, 0, 0) #define GDK_COLOR_RGBA(color) \ ((guint32) (0xff | \ ((int)((color).red * 255) << 24) | \ @@ -1312,7 +1307,6 @@ meta_color_spec_new_from_string (const char *str, spec = meta_color_spec_new (META_COLOR_SPEC_GTK); spec->data.gtk.state = state; spec->data.gtk.component = component; - g_assert (spec->data.gtk.state < N_GTK_STATES); g_assert (spec->data.gtk.component < META_GTK_COLOR_LAST); } else if (str[0] == 'b' && str[1] == 'l' && str[2] == 'e' && str[3] == 'n' && @@ -1488,6 +1482,72 @@ meta_color_spec_new_gtk (MetaGtkColorComponent component, #if GTK_CHECK_VERSION (3, 0, 0) static void +get_background_color_real (GtkStyleContext *context, + GtkStateFlags state, + GdkRGBA *color) +{ + GdkRGBA *c; + + g_return_if_fail (color != NULL); + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + + gtk_style_context_get (context, + state, + "background-color", &c, + NULL); + + *color = *c; + gdk_rgba_free (c); +} + +static void +get_background_color (GtkStyleContext *context, + GtkStateFlags state, + GdkRGBA *color) +{ + GdkRGBA empty = { 0.0, 0.0, 0.0, 0.0 }; + GdkRGBA rgba; + + get_background_color_real (context, state, &rgba); + + if (gdk_rgba_equal (&rgba, &empty)) + { + GtkWidget *toplevel; + GtkStyleContext *tmp; + + toplevel = gtk_window_new (GTK_WINDOW_TOPLEVEL); + tmp = gtk_widget_get_style_context (toplevel); + + get_background_color_real (tmp, state, &rgba); + + gtk_widget_destroy (toplevel); + } + + *color = rgba; +} + +/* Based on set_color() in gtkstyle.c */ +#define LIGHTNESS_MULT 1.3 +#define DARKNESS_MULT 0.7 +void +meta_gtk_style_get_light_color (GtkStyleContext *style, + GtkStateFlags state, + GdkRGBA *color) +{ + get_background_color (style, state, color); + gtk_style_shade (color, color, LIGHTNESS_MULT); +} + +void +meta_gtk_style_get_dark_color (GtkStyleContext *style, + GtkStateFlags state, + GdkRGBA *color) +{ + get_background_color (style, state, color); + gtk_style_shade (color, color, DARKNESS_MULT); +} + +static void meta_set_color_from_style (GdkRGBA *color, GtkStyleContext *context, GtkStateFlags state, @@ -1499,7 +1559,7 @@ meta_set_color_from_style (GdkRGBA *color, { case META_GTK_COLOR_BG: case META_GTK_COLOR_BASE: - gtk_style_context_get_background_color (context, state, color); + get_background_color (context, state, color); break; case META_GTK_COLOR_FG: case META_GTK_COLOR_TEXT: @@ -1514,18 +1574,18 @@ meta_set_color_from_style (GdkRGBA *color, color->blue = (color->blue + other.blue) / 2; break; case META_GTK_COLOR_MID: - mate_desktop_gtk_style_get_light_color (context, state, color); - mate_desktop_gtk_style_get_dark_color (context, state, &other); + meta_gtk_style_get_light_color (context, state, color); + meta_gtk_style_get_dark_color (context, state, &other); color->red = (color->red + other.red) / 2; color->green = (color->green + other.green) / 2; color->blue = (color->blue + other.blue) / 2; break; case META_GTK_COLOR_LIGHT: - mate_desktop_gtk_style_get_light_color (context, state, color); + meta_gtk_style_get_light_color (context, state, color); break; case META_GTK_COLOR_DARK: - mate_desktop_gtk_style_get_dark_color (context, state, color); + meta_gtk_style_get_dark_color (context, state, color); break; case META_GTK_COLOR_LAST: g_assert_not_reached (); @@ -3698,44 +3758,31 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, y2 = y1; /* This is one of the cases where we are matching the exact - * pixel aligned rectangle produced by X. + * pixel aligned rectangle produced by X; for zero-width lines + * the generic algorithm produces the right result so we don't + * need to handle them here. */ - if (y1 == y2 || x1 == x2) + if ((y1 == y2 || x1 == x2) && op->data.line.width != 0) { - double offset = (op->data.line.width == 0 || - op->data.line.width % 2) ? .5 : 0; - /* X includes end points for lines of width 0 */ - double line_extend = op->data.line.width == 0 ? 1. : 0.; + double offset = op->data.line.width % 2 ? .5 : 0; if (y1 == y2) { - if (x2 < x1) - { - x1 ^= x2; - x2 ^= x1; - x1 ^= x2; - } cairo_move_to (cr, x1, y1 + offset); - cairo_line_to (cr, x2 + line_extend, y2 + offset); + cairo_line_to (cr, x2, y2 + offset); } else { - if (y2 < y1) - { - y1 ^= y2; - y2 ^= y1; - y1 ^= y2; - } cairo_move_to (cr, x1 + offset, y1); - cairo_line_to (cr, x2 + offset, y2 + line_extend); + cairo_line_to (cr, x2 + offset, y2); } } else { - if (op->data.line.width <= 0) - { - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - } + /* zero-width lines include both end-points in X, unlike wide lines */ + if (op->data.line.width == 0) + cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); + cairo_move_to (cr, x1 + .5, y1 + .5); cairo_line_to (cr, x2 + .5, y2 + .5); } @@ -4745,10 +4792,10 @@ meta_frame_style_validate (MetaFrameStyle *style, } static void -button_rect (MetaButtonType type, - const MetaFrameGeometry *fgeom, - int middle_background_offset, - GdkRectangle *rect) +get_button_rect (MetaButtonType type, + const MetaFrameGeometry *fgeom, + int middle_background_offset, + GdkRectangle *rect) { switch (type) { @@ -5068,7 +5115,7 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style, { MetaButtonState button_state; - button_rect (j, fgeom, middle_bg_offset, &rect); + get_button_rect (j, fgeom, middle_bg_offset, &rect); button_state = map_button_state (j, fgeom, middle_bg_offset, button_states); op_list = get_button (style, j, button_state); @@ -5123,7 +5170,7 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style, { MetaButtonState button_state; - button_rect (j, fgeom, middle_bg_offset, &rect); + get_button_rect (j, fgeom, middle_bg_offset, &rect); rect.x += x_offset; rect.y += y_offset; diff --git a/src/ui/theme.h b/src/ui/theme.h index 66996d89..ea3ec196 100644 --- a/src/ui/theme.h +++ b/src/ui/theme.h @@ -694,8 +694,6 @@ typedef enum META_FRAME_PIECE_LAST } MetaFramePiece; -#define N_GTK_STATES 5 - /** * How to draw a frame in a particular state (say, a focussed, non-maximised, * resizable frame). This corresponds closely to the <frame_style> tag @@ -1271,6 +1269,14 @@ GtkArrowType meta_gtk_arrow_from_string (const char *s const char* meta_gtk_arrow_to_string (GtkArrowType arrow); MetaImageFillType meta_image_fill_type_from_string (const char *str); const char* meta_image_fill_type_to_string (MetaImageFillType fill_type); +#if GTK_CHECK_VERSION (3, 0, 0) +void meta_gtk_style_get_light_color (GtkStyleContext *style, + GtkStateFlags state, + GdkRGBA *color); +void meta_gtk_style_get_dark_color (GtkStyleContext *style, + GtkStateFlags state, + GdkRGBA *color); +#endif guint meta_theme_earliest_version_with_button (MetaButtonType type); diff --git a/src/ui/tile-preview.c b/src/ui/tile-preview.c index ee58600d..e14ffe25 100644 --- a/src/ui/tile-preview.c +++ b/src/ui/tile-preview.c @@ -62,24 +62,16 @@ meta_tile_preview_expose (GtkWidget *widget, { MetaTilePreview *preview = user_data; #if !GTK_CHECK_VERSION (3, 0, 0) - GdkWindow *window; - cairo_t *cr; - - window = gtk_widget_get_window (widget); - cr = gdk_cairo_create (window); + cairo_t *cr = gdk_cairo_create (event->window); #endif cairo_set_line_width (cr, 1.0); if (preview->has_alpha) { -#if GTK_CHECK_VERSION (3, 0, 0) - GdkRGBA preview_color = *preview->preview_color; -#endif - /* Fill the preview area with a transparent color */ #if GTK_CHECK_VERSION (3, 0, 0) - gdk_cairo_set_source_rgba (cr, &preview_color); + gdk_cairo_set_source_rgba (cr, preview->preview_color); #else cairo_set_source_rgba (cr, (double)preview->preview_color->red / 0xFFFF, @@ -93,7 +85,7 @@ meta_tile_preview_expose (GtkWidget *widget, /* Use the opaque color for the border */ #if GTK_CHECK_VERSION (3, 0, 0) - gdk_cairo_set_source_rgba (cr, &preview_color); + gdk_cairo_set_source_rgba (cr, preview->preview_color); #else gdk_cairo_set_source_color (cr, preview->preview_color); #endif @@ -121,6 +113,13 @@ meta_tile_preview_expose (GtkWidget *widget, 0.5, 0.5, preview->tile_rect.width - 1, preview->tile_rect.height - 1); + +#if GTK_CHECK_VERSION (3, 0, 0) + if (preview->has_alpha) { + cairo_fill_preserve (cr); + cairo_set_source_rgba (cr, preview->preview_color->red, preview->preview_color->green, preview->preview_color->blue, 1.0); + } +#endif cairo_stroke (cr); #if !GTK_CHECK_VERSION (3, 0, 0) @@ -264,13 +263,8 @@ meta_tile_preview_show (MetaTilePreview *preview, && preview->tile_rect.height == tile_rect->height) return; /* nothing to do */ - gtk_widget_show (preview->preview_window); window = gtk_widget_get_window (preview->preview_window); -#if GTK_CHECK_VERSION (3, 0, 0) meta_core_lower_beneath_focus_window (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), -#else - meta_core_lower_beneath_focus_window (gdk_display, -#endif GDK_WINDOW_XID (window), gtk_get_current_event_time ()); @@ -280,6 +274,8 @@ meta_tile_preview_show (MetaTilePreview *preview, gdk_window_invalidate_rect (window, &old_rect, FALSE); + gtk_widget_show (preview->preview_window); + preview->tile_rect = *tile_rect; gdk_window_move_resize (window, diff --git a/src/ui/ui.c b/src/ui/ui.c index bbef9395..76ef72fa 100644 --- a/src/ui/ui.c +++ b/src/ui/ui.c @@ -58,7 +58,7 @@ void meta_ui_init(int* argc, char*** argv) * GDK will no longer generate the core XEvents we process. * So at least for now, enforce the previous behavior. */ -#if GTK_CHECK_VERSION(2, 91, 7) +#if GTK_CHECK_VERSION(3, 0, 0) gdk_disable_multidevice (); #endif @@ -125,11 +125,7 @@ maybe_redirect_mouse_event (XEvent *xevent) if (!ui) return FALSE; -#if GTK_CHECK_VERSION (3, 0, 0) gdk_window = gdk_x11_window_lookup_for_display (gdisplay, window); -#else - gdk_window = gdk_window_lookup_for_display (gdisplay, window); -#endif if (gdk_window == NULL) return FALSE; @@ -584,109 +580,6 @@ meta_ui_window_menu_free (MetaWindowMenu *menu) } #if !GTK_CHECK_VERSION (3, 0, 0) -struct _MetaImageWindow -{ - GtkWidget *window; - GdkPixmap *pixmap; -}; - -MetaImageWindow* -meta_image_window_new (Display *xdisplay, - int screen_number, - int max_width, - int max_height) -{ - MetaImageWindow *iw; - GdkDisplay *gdisplay; - GdkScreen *gscreen; - - iw = g_new (MetaImageWindow, 1); - iw->window = gtk_window_new (GTK_WINDOW_POPUP); - - gdisplay = gdk_x11_lookup_xdisplay (xdisplay); - gscreen = gdk_display_get_screen (gdisplay, screen_number); - - gtk_window_set_screen (GTK_WINDOW (iw->window), gscreen); - - gtk_widget_realize (iw->window); - iw->pixmap = gdk_pixmap_new (gtk_widget_get_window (iw->window), - max_width, max_height, - -1); - - gtk_widget_set_size_request (iw->window, 1, 1); - gtk_widget_set_double_buffered (iw->window, FALSE); - gtk_widget_set_app_paintable (iw->window, TRUE); - - return iw; -} - -void -meta_image_window_free (MetaImageWindow *iw) -{ - gtk_widget_destroy (iw->window); - g_object_unref (G_OBJECT (iw->pixmap)); - g_free (iw); -} - -void -meta_image_window_set_showing (MetaImageWindow *iw, - gboolean showing) -{ - if (showing) - gtk_widget_show_all (iw->window); - else - { - gtk_widget_hide (iw->window); - meta_core_increment_event_serial (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); - } -} - -void -meta_image_window_set (MetaImageWindow *iw, - GdkPixbuf *pixbuf, - int x, - int y) -{ -#if GTK_CHECK_VERSION (3, 0, 0) - cairo_t *cr; -#endif - - /* We use a back pixmap to avoid having to handle exposes, because - * it's really too slow for large clients being minimized, etc. - * and this way flicker is genuinely zero. - */ - -#if !GTK_CHECK_VERSION (3, 0, 0) - gdk_draw_pixbuf (iw->pixmap, - gtk_widget_get_style (iw->window)->black_gc, - pixbuf, - 0, 0, - 0, 0, - gdk_pixbuf_get_width (pixbuf), - gdk_pixbuf_get_height (pixbuf), - GDK_RGB_DITHER_NORMAL, - 0, 0); -#else - cr = gdk_cairo_create (iw->pixmap); - gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); - cairo_paint (cr); - cairo_destroy (cr); -#endif - - gdk_window_set_back_pixmap (gtk_widget_get_window (iw->window), - iw->pixmap, - FALSE); - - gdk_window_move_resize (gtk_widget_get_window (iw->window), - x, y, - gdk_pixbuf_get_width (pixbuf), - gdk_pixbuf_get_height (pixbuf)); - - gdk_window_clear (gtk_widget_get_window (iw->window)); -} -#endif - -#if !GTK_CHECK_VERSION (3, 0, 0) static GdkColormap* get_cmap (GdkPixmap *pixmap) { @@ -714,7 +607,7 @@ get_cmap (GdkPixmap *pixmap) /* Be sure we aren't going to blow up due to visual mismatch */ if (cmap && - (gdk_colormap_get_visual (cmap)->depth != + (gdk_visual_get_depth (gdk_colormap_get_visual (cmap)) != gdk_drawable_get_depth (pixmap))) { cmap = NULL; @@ -791,14 +684,10 @@ meta_gdk_pixbuf_get_from_pixmap (GdkPixbuf *dest, { GdkDrawable *drawable; GdkPixbuf *retval; -#if !GTK_CHECK_VERSION (3, 0, 0) GdkColormap *cmap; -#endif retval = NULL; -#if !GTK_CHECK_VERSION (3, 0, 0) cmap = NULL; -#endif drawable = gdk_x11_window_lookup_for_display (gdk_display_get_default (), xpixmap); @@ -818,10 +707,8 @@ meta_gdk_pixbuf_get_from_pixmap (GdkPixbuf *dest, dest_x, dest_y, width, height); } -#if !GTK_CHECK_VERSION (3, 0, 0) if (cmap) g_object_unref (G_OBJECT (cmap)); -#endif if (drawable) g_object_unref (G_OBJECT (drawable)); @@ -841,6 +728,20 @@ meta_ui_pop_delay_exposes (MetaUI *ui) meta_frames_pop_delay_exposes (ui->frames); } +static GdkPixbuf * +load_default_window_icon (int size) +{ + GtkIconTheme *theme = gtk_icon_theme_get_default (); + const char *icon_name; + + if (gtk_icon_theme_has_icon (theme, META_DEFAULT_ICON_NAME)) + icon_name = META_DEFAULT_ICON_NAME; + else + icon_name = "image-missing"; + + return gtk_icon_theme_load_icon (theme, icon_name, size, 0, NULL); +} + GdkPixbuf* meta_ui_get_default_window_icon (MetaUI *ui) { @@ -848,26 +749,7 @@ meta_ui_get_default_window_icon (MetaUI *ui) if (default_icon == NULL) { - GtkIconTheme *theme; - gboolean icon_exists; - - theme = gtk_icon_theme_get_default (); - - icon_exists = gtk_icon_theme_has_icon (theme, META_DEFAULT_ICON_NAME); - - if (icon_exists) - default_icon = gtk_icon_theme_load_icon (theme, - META_DEFAULT_ICON_NAME, - META_ICON_WIDTH, - 0, - NULL); - else - default_icon = gtk_icon_theme_load_icon (theme, - "image-missing", - META_ICON_WIDTH, - 0, - NULL); - + default_icon = load_default_window_icon (META_ICON_WIDTH); g_assert (default_icon); } @@ -931,38 +813,6 @@ meta_ui_window_should_not_cause_focus (Display *xdisplay, return FALSE; } -char* -meta_text_property_to_utf8 (Display *xdisplay, - const XTextProperty *prop) -{ - GdkDisplay *display; - char **list; - int count; - char *retval; - - list = NULL; - - display = gdk_x11_lookup_xdisplay (xdisplay); - count = gdk_text_property_to_utf8_list_for_display (display, - gdk_x11_xatom_to_atom_for_display (display, prop->encoding), - prop->format, - prop->value, - prop->nitems, - &list); - - if (count == 0) - retval = NULL; - else - { - retval = list[0]; - list[0] = g_strdup (""); /* something to free */ - } - - g_strfreev (list); - - return retval; -} - void meta_ui_theme_get_frame_borders (MetaUI *ui, MetaFrameType type, @@ -1253,9 +1103,7 @@ GdkPixbuf* meta_ui_get_pixbuf_from_pixmap(Pixmap pmap) GdkPixmap* gpmap; GdkScreen* screen; GdkPixbuf* pixbuf; -#if !GTK_CHECK_VERSION (3, 0, 0) GdkColormap* cmap; -#endif int width; int height; int depth; @@ -1263,16 +1111,10 @@ GdkPixbuf* meta_ui_get_pixbuf_from_pixmap(Pixmap pmap) gpmap = gdk_pixmap_foreign_new(pmap); screen = gdk_drawable_get_screen(gpmap); -#if GTK_CHECK_VERSION(3, 0, 0) - width = gdk_window_get_width(GDK_WINDOW(gpmap)); - height = gdk_window_get_height(GDK_WINDOW(gpmap)); -#else gdk_drawable_get_size(GDK_DRAWABLE(gpmap), &width, &height); -#endif depth = gdk_drawable_get_depth(GDK_DRAWABLE(gpmap)); -#if !GTK_CHECK_VERSION (3, 0, 0) if (depth <= 24) { cmap = gdk_screen_get_system_colormap(screen); @@ -1281,7 +1123,6 @@ GdkPixbuf* meta_ui_get_pixbuf_from_pixmap(Pixmap pmap) { cmap = gdk_screen_get_rgba_colormap(screen); } -#endif pixbuf = gdk_pixbuf_get_from_drawable(NULL, gpmap, cmap, 0, 0, 0, 0, width, height); diff --git a/src/wm-tester/main.c b/src/wm-tester/main.c index d757270d..ae6db421 100644 --- a/src/wm-tester/main.c +++ b/src/wm-tester/main.c @@ -120,19 +120,11 @@ evil_timeout (gpointer data) w = gtk_window_new (GTK_WINDOW_TOPLEVEL); -#if GTK_CHECK_VERSION (3, 0, 0) gtk_window_move (GTK_WINDOW (w), g_random_int_range (0, gdk_screen_width ()), g_random_int_range (0, gdk_screen_height ())); -#else - gtk_widget_set_uposition (w, - g_random_int_range (0, - gdk_screen_width ()), - g_random_int_range (0, - gdk_screen_height ())); -#endif parent = NULL; |