diff options
-rwxr-xr-x | configure | 20 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | po/POTFILES.in | 5 | ||||
-rw-r--r-- | po/ar.gmo | bin | 7488 -> 7488 bytes | |||
-rw-r--r-- | po/ar.po | 74 | ||||
-rw-r--r-- | po/az.gmo | bin | 6590 -> 6590 bytes | |||
-rw-r--r-- | po/az.po | 74 | ||||
-rw-r--r-- | po/bg.gmo | bin | 6370 -> 6370 bytes | |||
-rw-r--r-- | po/bg.po | 74 | ||||
-rw-r--r-- | po/ca.gmo | bin | 7616 -> 7616 bytes | |||
-rw-r--r-- | po/ca.po | 74 | ||||
-rw-r--r-- | po/cs.gmo | bin | 6232 -> 6232 bytes | |||
-rw-r--r-- | po/cs.po | 74 | ||||
-rw-r--r-- | po/de.gmo | bin | 7292 -> 7292 bytes | |||
-rw-r--r-- | po/de.po | 74 | ||||
-rw-r--r-- | po/es.gmo | bin | 6409 -> 6409 bytes | |||
-rw-r--r-- | po/es.po | 74 | ||||
-rw-r--r-- | po/es_MX.gmo | bin | 6146 -> 6146 bytes | |||
-rw-r--r-- | po/es_MX.po | 74 | ||||
-rw-r--r-- | po/eu.gmo | bin | 6363 -> 6363 bytes | |||
-rw-r--r-- | po/eu.po | 74 | ||||
-rw-r--r-- | po/fa_IR.gmo | bin | 8666 -> 8666 bytes | |||
-rw-r--r-- | po/fa_IR.po | 74 | ||||
-rw-r--r-- | po/fi.gmo | bin | 6208 -> 6208 bytes | |||
-rw-r--r-- | po/fi.po | 74 | ||||
-rw-r--r-- | po/fr.gmo | bin | 7593 -> 7509 bytes | |||
-rw-r--r-- | po/fr.po | 77 | ||||
-rw-r--r-- | po/hi.gmo | bin | 9203 -> 9203 bytes | |||
-rw-r--r-- | po/hi.po | 74 | ||||
-rw-r--r-- | po/hu.gmo | bin | 6622 -> 6622 bytes | |||
-rw-r--r-- | po/hu.po | 74 | ||||
-rw-r--r-- | po/it.gmo | bin | 6622 -> 6622 bytes | |||
-rw-r--r-- | po/it.po | 74 | ||||
-rw-r--r-- | po/ja.gmo | bin | 7017 -> 7017 bytes | |||
-rw-r--r-- | po/ja.po | 74 | ||||
-rw-r--r-- | po/ko.gmo | bin | 5333 -> 5333 bytes | |||
-rw-r--r-- | po/ko.po | 74 | ||||
-rw-r--r-- | po/lt.gmo | bin | 7537 -> 7460 bytes | |||
-rw-r--r-- | po/lt.po | 80 | ||||
-rw-r--r-- | po/ms.gmo | bin | 6982 -> 6982 bytes | |||
-rw-r--r-- | po/ms.po | 74 | ||||
-rw-r--r-- | po/nl.gmo | bin | 6189 -> 6189 bytes | |||
-rw-r--r-- | po/nl.po | 74 | ||||
-rw-r--r-- | po/pl.gmo | bin | 6022 -> 6022 bytes | |||
-rw-r--r-- | po/pl.po | 74 | ||||
-rw-r--r-- | po/pt_BR.gmo | bin | 5758 -> 5758 bytes | |||
-rw-r--r-- | po/pt_BR.po | 74 | ||||
-rw-r--r-- | po/pt_PT.gmo | bin | 5945 -> 5945 bytes | |||
-rw-r--r-- | po/pt_PT.po | 74 | ||||
-rw-r--r-- | po/ru.gmo | bin | 8014 -> 8014 bytes | |||
-rw-r--r-- | po/ru.po | 74 | ||||
-rw-r--r-- | po/sv.gmo | bin | 6135 -> 6135 bytes | |||
-rw-r--r-- | po/sv.po | 74 | ||||
-rw-r--r-- | po/ta.gmo | bin | 9991 -> 9991 bytes | |||
-rw-r--r-- | po/ta.po | 74 | ||||
-rw-r--r-- | po/tr.gmo | bin | 6440 -> 6440 bytes | |||
-rw-r--r-- | po/tr.po | 74 | ||||
-rw-r--r-- | po/uk.gmo | bin | 8300 -> 8300 bytes | |||
-rw-r--r-- | po/uk.po | 74 | ||||
-rw-r--r-- | po/vi.gmo | bin | 6807 -> 6807 bytes | |||
-rw-r--r-- | po/vi.po | 74 | ||||
-rw-r--r-- | po/xfwm4.pot | 74 | ||||
-rw-r--r-- | po/zh_CN.gmo | bin | 6941 -> 6874 bytes | |||
-rw-r--r-- | po/zh_CN.po | 77 | ||||
-rw-r--r-- | po/zh_TW.gmo | bin | 6813 -> 6813 bytes | |||
-rwxr-xr-x | po/zh_TW.po | 74 | ||||
-rw-r--r-- | src/Makefile.am | 3 | ||||
-rw-r--r-- | src/Makefile.in | 74 | ||||
-rw-r--r-- | src/client.c | 864 | ||||
-rw-r--r-- | src/client.h | 58 | ||||
-rw-r--r-- | src/events.c | 712 | ||||
-rw-r--r-- | src/events.h | 2 | ||||
-rw-r--r-- | src/focus.c | 79 | ||||
-rw-r--r-- | src/focus.h | 8 | ||||
-rw-r--r-- | src/frame.c | 431 | ||||
-rw-r--r-- | src/hints.c | 54 | ||||
-rw-r--r-- | src/hints.h | 19 | ||||
-rw-r--r-- | src/keyboard.h | 6 | ||||
-rw-r--r-- | src/main.c | 249 | ||||
-rw-r--r-- | src/menu.c | 10 | ||||
-rw-r--r-- | src/menu.h | 4 | ||||
-rw-r--r-- | src/misc.c | 64 | ||||
-rw-r--r-- | src/misc.h | 22 | ||||
-rw-r--r-- | src/mypixmap.c | 47 | ||||
-rw-r--r-- | src/mypixmap.h | 31 | ||||
-rw-r--r-- | src/mywindow.c | 33 | ||||
-rw-r--r-- | src/mywindow.h | 51 | ||||
-rw-r--r-- | src/netwm.c | 68 | ||||
-rw-r--r-- | src/netwm.h | 2 | ||||
-rw-r--r-- | src/parserc.c | 2 | ||||
-rw-r--r-- | src/placement.c | 90 | ||||
-rw-r--r-- | src/placement.h | 2 | ||||
-rw-r--r-- | src/poswin.c | 1 | ||||
-rw-r--r-- | src/screen.h | 89 | ||||
-rw-r--r-- | src/session.c | 171 | ||||
-rw-r--r-- | src/session.h | 4 | ||||
-rw-r--r-- | src/settings.c | 904 | ||||
-rw-r--r-- | src/settings.h | 43 | ||||
-rw-r--r-- | src/spinning_cursor.c | 14 | ||||
-rw-r--r-- | src/spinning_cursor.h | 4 | ||||
-rw-r--r-- | src/stacking.c | 226 | ||||
-rw-r--r-- | src/stacking.h | 16 | ||||
-rw-r--r-- | src/startup_notification.c | 99 | ||||
-rw-r--r-- | src/startup_notification.h | 6 | ||||
-rw-r--r-- | src/tabwin.c | 2 | ||||
-rw-r--r-- | src/transients.c | 28 | ||||
-rw-r--r-- | src/workspaces.c | 110 | ||||
-rw-r--r-- | src/workspaces.h | 8 |
108 files changed, 3606 insertions, 3513 deletions
@@ -1822,7 +1822,7 @@ fi # Define the identity of the package. PACKAGE=xfwm4 - VERSION=4.1.3 + VERSION=4.1.4 cat >>confdefs.h <<_ACEOF @@ -24420,23 +24420,23 @@ fi else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then - echo "$as_me:$LINENO: checking for libxfcegui4-1.0 >= 4.1.18" >&5 -echo $ECHO_N "checking for libxfcegui4-1.0 >= 4.1.18... $ECHO_C" >&6 + echo "$as_me:$LINENO: checking for libxfcegui4-1.0 >= 4.1.21" >&5 +echo $ECHO_N "checking for libxfcegui4-1.0 >= 4.1.21... $ECHO_C" >&6 - if $PKG_CONFIG --exists "libxfcegui4-1.0 >= 4.1.18" ; then + if $PKG_CONFIG --exists "libxfcegui4-1.0 >= 4.1.21" ; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 succeeded=yes echo "$as_me:$LINENO: checking LIBXFCEGUI4_CFLAGS" >&5 echo $ECHO_N "checking LIBXFCEGUI4_CFLAGS... $ECHO_C" >&6 - LIBXFCEGUI4_CFLAGS=`$PKG_CONFIG --cflags "libxfcegui4-1.0 >= 4.1.18"` + LIBXFCEGUI4_CFLAGS=`$PKG_CONFIG --cflags "libxfcegui4-1.0 >= 4.1.21"` echo "$as_me:$LINENO: result: $LIBXFCEGUI4_CFLAGS" >&5 echo "${ECHO_T}$LIBXFCEGUI4_CFLAGS" >&6 echo "$as_me:$LINENO: checking LIBXFCEGUI4_LIBS" >&5 echo $ECHO_N "checking LIBXFCEGUI4_LIBS... $ECHO_C" >&6 - LIBXFCEGUI4_LIBS=`$PKG_CONFIG --libs "libxfcegui4-1.0 >= 4.1.18"` + LIBXFCEGUI4_LIBS=`$PKG_CONFIG --libs "libxfcegui4-1.0 >= 4.1.21"` echo "$as_me:$LINENO: result: $LIBXFCEGUI4_LIBS" >&5 echo "${ECHO_T}$LIBXFCEGUI4_LIBS" >&6 else @@ -24444,7 +24444,7 @@ echo "${ECHO_T}$LIBXFCEGUI4_LIBS" >&6 LIBXFCEGUI4_LIBS="" ## If we have a custom action on failure, don't print errors, but ## do set a variable so people can do so. - LIBXFCEGUI4_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libxfcegui4-1.0 >= 4.1.18"` + LIBXFCEGUI4_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libxfcegui4-1.0 >= 4.1.21"` echo $LIBXFCEGUI4_PKG_ERRORS fi @@ -24459,12 +24459,12 @@ echo "${ECHO_T}$LIBXFCEGUI4_LIBS" >&6 if test $succeeded = yes; then : else - { { echo "$as_me:$LINENO: error: Library requirements (libxfcegui4-1.0 >= 4.1.18) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5 -echo "$as_me: error: Library requirements (libxfcegui4-1.0 >= 4.1.18) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;} + { { echo "$as_me:$LINENO: error: Library requirements (libxfcegui4-1.0 >= 4.1.21) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5 +echo "$as_me: error: Library requirements (libxfcegui4-1.0 >= 4.1.21) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;} { (exit 1); exit 1; }; } fi - LIBXFCEGUI4_REQUIRED_VERSION=4.1.18 + LIBXFCEGUI4_REQUIRED_VERSION=4.1.21 diff --git a/configure.ac b/configure.ac index b6e7a3506..5b439fd53 100644 --- a/configure.ac +++ b/configure.ac @@ -7,7 +7,7 @@ AC_INIT([src/main.c]) AC_PREREQ(2.52) -AM_INIT_AUTOMAKE([xfwm4], [4.1.3]) +AM_INIT_AUTOMAKE([xfwm4], [4.1.4]) AM_CONFIG_HEADER([config.h]) @@ -52,7 +52,7 @@ BM_DEPEND([GTK], [gtk+-2.0], [2.2.0]) BM_DEPEND(LIBXFCE4MCS_CLIENT, libxfce4mcs-client-1.0, 4.0.0) BM_DEPEND(LIBXFCE4MCS_MANAGER, libxfce4mcs-manager-1.0, 4.0.0) BM_DEPEND([LIBXFCE4UTIL], [libxfce4util-1.0], [4.1.0]) -BM_DEPEND(LIBXFCEGUI4, libxfcegui4-1.0, 4.1.18) +BM_DEPEND(LIBXFCEGUI4, libxfcegui4-1.0, 4.1.21) XFCE_MCS_PLUGIN([XFCE_MCS_MANAGER], [4.0.0]) BM_DEPEND_CHECK(LIBSTARTUP_NOTIFICATION, libstartup-notification-1.0, 0.5, diff --git a/po/POTFILES.in b/po/POTFILES.in index 28dab1a74..52a5d3859 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -7,6 +7,8 @@ mcs-plugin/workspaces.h mcs-plugin/xfwm4_plugin.c src/client.c src/client.h +src/display.c +src/display.c src/events.c src/events.h src/focus.c @@ -20,7 +22,6 @@ src/icons.h src/keyboard.c src/keyboard.h src/main.c -src/main.h src/menu.c src/menu.h src/misc.c @@ -37,6 +38,8 @@ src/placement.c src/placement.h src/poswin.c src/poswin.h +src/screen.c +src/screen.c src/session.c src/session.h src/settings.c Binary files differ@@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: ar\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-3-8 8:25+0300\n" "Last-Translator: saleh alhathal <hathalsal@hotmail.com>\n" "Language-Team: arabic\n" @@ -319,107 +319,103 @@ msgstr "تنفيذ المهمة التالية عند النقر مرتين عل msgid "Advanced" msgstr "متقدم" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: العملية ليست مدعومة (بعد)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: خطء بالتقسيم" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: هناك مدير نوافذ آخر يعمل " -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: هناك بيانات منقوصة في الملفات الإفتراضية" -#: src/main.c:425 +#: src/main.c:322 #, fuzzy, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "%s: فشل في دخول نطاق : %s" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "%s: فشل في تكوين مهمة جديدة : %s" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: حدث خطأ مجهول" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "ت_كبير" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "ت_حجيم" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_اخفاء" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "اخفاء_الاخرين" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "اظ_هار" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "س_تر" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "إ_زالة الستر" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "ال_صق" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "ا_لغاء الصاق" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "سياق _مساعدة" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "دوما أعلى" # -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "إرسال الى..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_إغلاق" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "إبادة" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_إنهاء" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "إعادة تشغيل" @@ -433,7 +429,7 @@ msgstr "بيئة العمل %i" msgid "Workspace %i" msgstr "بيئة العمل %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: لم يتمكن GtkMenu من الإمساك بالمؤشر\n" @@ -443,51 +439,51 @@ msgstr "%s: لم يتمكن GtkMenu من الإمساك بالمؤشر\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: net_wm_state غير مدار (نافذة %#lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: هناك بيانات منقوصة في الملفات الإفتراضية" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: لا أستطيع تخصيص اللون النشط%s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: لا أستطيع تحليل اللون النشط %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: لا أستطيع تخصيص اللون غير النشط %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: لا أستطيع تحليل اللون غير النشط %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, fuzzy, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: جزء محدد من السمة \"%s\"مفقود, سيستخدم اﻹفتراضي" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: هناك بيانات منقوصة في الملفات الإفتراضية" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s:العد في بيئة العمل غير محدد, سأستخدم قيمة rc: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "تغيير الى ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm 4\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-12-13 01:12+0200\n" "Last-Translator: Mətin Əmirov <metin@karegen.com>\n" "Language-Team: Azerbaijani Turkish <gnome@azitt.com>\n" @@ -310,106 +310,102 @@ msgstr "Başlıq çubuğuna cüt tıqlandığında həyata keçiriləcək gediş msgid "Advanced" msgstr "Təfərruatlar" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Gedişat dəstəklənmir (hələlik)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Segmentation xətası" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Onsuz da başqa Pəncərə İdarəçisi işləyir" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Ön qurğulu fayllardan mə'lumat əksikdir" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Namə'lum xəta baş verdi" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "_Böyüt" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "_Kiçilt" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Gizlət" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "_Digərlərini gizlət" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "_Göstər" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Bur" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "_Geri bur" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "_Bütün Sahələrə" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Bu iş _sahəsinə" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Göndər..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Bağla" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Sonlandır" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "Çı_x" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Yenidən Başlat" @@ -423,7 +419,7 @@ msgstr "İş Sahəsi %i" msgid "Workspace %i" msgstr "İş Sahəsi %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu oxu ala bilmədi\n" @@ -433,51 +429,51 @@ msgstr "%s: GtkMenu oxu ala bilmədi\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: İdarə edilməyən net_wm_state (window 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Əksik ön qurğular faylı" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Fəal rəng tapıla bilmir %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Fəal rəng oxuna bilmir %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s:·Qeyri-fəal·rəng·tapıla·bilmir·%s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Qeyri-fəal rəng oxuna bilmir %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: bildirilən \"%s\" açar örtüyü əksikdir, ön qurğulusu işlədiləcək" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Ön qurğular faylında əksik qiymətlər" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: İş sahəsi tə'yin edilə bilmədi, rc qiyməti işlədiləcək: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Keç ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-03-09 19:04+0200\n" "Last-Translator: Miroslav Yordanov <miordanov@i-space.org>\n" "Language-Team: Bulgarian <bg@li.org>\n" @@ -312,106 +312,102 @@ msgstr "Действие което да се извърши при двойно msgid "Advanced" msgstr "Допълнителни" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Максимизира" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Смалява" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "Скрива" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Скрива всички останали" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "Показва" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "Сгъване" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Разгъва" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "Забожда" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Отбожда" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Изпраща на..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "Затваря" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Унищожава" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "Край" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Рестартиране" @@ -425,7 +421,7 @@ msgstr "Работно място %i" msgid "Workspace %i" msgstr "Работно място %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "" @@ -435,51 +431,51 @@ msgstr "" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Превключва на ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xfce 4\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-03-29 22:19+0100\n" "Last-Translator: Carles Munoz Gorriz <carlesmu@internautas.org>\n" "Language-Team: ca <ca@li.org>\n" @@ -309,106 +309,102 @@ msgstr "Acció a realitzar que es fa doble clic a la barra de títol:" msgid "Advanced" msgstr "Avançat" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Operació encara no suportada\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Segmentation fault (violació de segment)" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Un altre gestor de finestres s'està executant" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Falten dades dels fitxers per defecte" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "%s: No s'ha pogut entrar en mode dimoni: %s" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "%s: No s'ha pogut crear el procés nou: %s" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: S'ha produït un error desconegut" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ximitza" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Des_maximitza" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Oculta" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Oculta _totes les altres" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "_Mostra" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Enrotlla" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Des_enrotlla" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "_Omnipresent" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "No _omnipresent" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "A_juda contextual" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "Sempre al damunt" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Envia a..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "Tan_ca" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Destrueix" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Surt" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Reinicia" @@ -422,7 +418,7 @@ msgstr "Espai de treball %i (%s)" msgid "Workspace %i" msgstr "Espai de treball %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu no ha pogut capturar el punter\n" @@ -432,54 +428,54 @@ msgstr "%s: GtkMenu no ha pogut capturar el punter\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: net_wm_state (finestra 0x%lx) no gestionada" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Falten els fitxers per defecte." -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: No es pot allotjar el color actiu %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: No es pot processar el color actiu %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: No es pot allotjar el color inactiu %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: No es pot processar el color inactiu %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" "%s: No sa trobat la configuració de tecles \"%s\", es fa servir la " "configuració per defecte" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Faltes valors en els fitxers per defecte" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "" "%s: El comptador d'espais de treball no està inicialitzat, es fa servir el " "valor rc: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Canvia a..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" Binary files differ@@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Lukas Konarovsky <daeltar@daeltar.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -311,106 +311,102 @@ msgstr "Akce při dvojkliku na titulkový pruh :" msgid "Advanced" msgstr "Pokročilé" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "s: Operace není podporována (prozatím)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Segmentation fault" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Již běží jiný správce oken" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Missing data from default files" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Vyskytla se neznámá chyba" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ximalizovat" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "_Obnovit" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Minimalizovat" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Mi_nimalizovat ostatní" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "_Ukázat" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Zarolovat" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Vy_rolovat" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "_Přilepit" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Od_lepit" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Poslat na..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "Za_vřit" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Zničit" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Konec" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Restart" @@ -424,7 +420,7 @@ msgstr "Plocha %i" msgid "Workspace %i" msgstr "Plocha %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu failed to grab the pointer\n" @@ -434,51 +430,51 @@ msgstr "%s: GtkMenu failed to grab the pointer\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: Unmanaged net_wm_state (window 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Missing defaults file" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Cannot allocate active color %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Cannot parse active color %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Cannot allocate inactive color %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Cannot parse inactive color %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: specified key theme \"%s\" missing, using default" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Missing values in defaults file" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Workspace count not set, using rc value: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Přepnout na ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 1.0.0\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-01-08 00:09+0100\n" "Last-Translator: Moritz Heiber <moe@lunar-linux.org>\n" "Language-Team: none <none@none>\n" @@ -299,106 +299,102 @@ msgstr "Aktion, welche beim Doppeklicken auf die Titelleiste ausgeführt wird:" msgid "Advanced" msgstr "Weitere Optionen" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Operation (noch) nicht unterstuetzt\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Speicherzugriffsfehler" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Es läuft bereits ein anderer Fenstermanager" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Einstellungen aus den Defaults fehlen" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "%s: Konnte nicht im Hintergrund starten: %s" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "%s: Konnte keinen neuen Prozess erstellen: %s" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Ein unbekannter Fehler ist aufgetreten" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ximieren" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Maximierung aufheben" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Verstecken" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "_Andere verstecken" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "Z_eigen" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Einrollen" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Ent_rollen" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "Fest_kleben" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "_Lösen" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "Hilfe" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "Immer obenauf" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Wechseln zu ..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Schließen" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Zerstören" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Beenden" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Neu starten" @@ -412,7 +408,7 @@ msgstr "Virtueller Desktop %i" msgid "Workspace %i" msgstr "Virtueller Desktop %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenue konnte die Position des Mauszeigers nicht feststellen\n" @@ -422,52 +418,52 @@ msgstr "%s: GtkMenue konnte die Position des Mauszeigers nicht feststellen\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: Kein net_wm_state (Fenster %#lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Fehlende Einstellungen aus den Defaults" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Kann aktive Farbe nicht setzen %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Kann aktive Farbe nicht einlesen %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Kann inaktive Farbe nicht setzen %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Kann inaktive Farbe nicht einlesen %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: Theme \"%s\" nicht gefunden. Es wird das Standard-Theme verwendet." -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Fehlende Einstellungen aus den Defaults" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "" "%s: Anzahl der virtuellen Desktops nicht eingestellt. Es wird die " "Standardeinstellung verwendet: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Wechseln zu ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" Binary files differ@@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 1.0.0\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-01-13 00:00+0100\n" "Last-Translator: Jaime Buffery <nestu@lunar-linux.org>\n" "Language-Team: none <LL@li.org>\n" @@ -321,107 +321,103 @@ msgstr "Acción a realizar cuando se haga doble click en la barra de título :" msgid "Advanced" msgstr "Avanzado" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Operación no soportada (aún)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Violación de segmento" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Otro Gestor de Ventanas ya está ejecutándose" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Faltan datos en ficheros de configuración por defecto" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "%s: No se pudo entrar en modo demonio" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "%s: No se pudo crear un nuevo proceso: %s" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Ha ocurrido un error desconocido" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ximizar" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Des_maximizar" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Ocultar" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Ocultar _todos los demás" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "M_ostrar" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Enrollar" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Des_enrollar" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "P_egar" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Des_pegar" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "Ayuda de contexto" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "Siempre encima" -#: src/menu.c:51 +#: src/menu.c:50 #, fuzzy msgid "Send to..." msgstr "Cambiar a ..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Cerrar" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Destruir" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Salir" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Reiniciar" @@ -435,7 +431,7 @@ msgstr "Escritorio %i" msgid "Workspace %i" msgstr "Escritorio %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu falló al intentar conseguir el puntero\n" @@ -445,52 +441,52 @@ msgstr "%s: GtkMenu falló al intentar conseguir el puntero\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: net_wm_state sin soporte (ventana 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, fuzzy, c-format msgid "%s: Missing defaults file" msgstr "%s: Faltan datos en ficheros de configuración por defecto" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: No se puede reservar el color activo %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: No se puede interpretar el color activo %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: No se puede reservar el color activo %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: No se puede interpretar el color inactivo %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" "%s: Falta el mapa de teclado especificado \"%s\", usando el de por defecto" -#: src/settings.c:803 +#: src/settings.c:839 #, fuzzy, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Faltan datos en ficheros de configuración por defecto" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Sin inicializar el contador de escritorios, usando el valor:%i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Cambiar a ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" diff --git a/po/es_MX.gmo b/po/es_MX.gmo Binary files differindex a466ac477..56a5b0eb1 100644 --- a/po/es_MX.gmo +++ b/po/es_MX.gmo diff --git a/po/es_MX.po b/po/es_MX.po index 0957744e2..514efd07f 100644 --- a/po/es_MX.po +++ b/po/es_MX.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 1.0.0\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-01-23 22:06+0100\n" "Last-Translator: Jaime Buffery <the_new_guiri@yahoo.es>\n" "Language-Team: none <LL@li.org>\n" @@ -311,107 +311,103 @@ msgstr "Acción a realizar cuando se pincha dos veces en la barra de título :" msgid "Advanced" msgstr "Avanzado" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Operación no activa (aún)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Error de segmentación" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Otro administrador de ventanas está ejecutándose" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Faltan datos en archivos de configuración por omisión" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Ha ocurrido un error desconocido" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ximizar" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Des_maximizar" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Ocultar" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Ocult_ar los demás" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "M_ostrar" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Enrollar" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Des_enrollar" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "P_egar" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Des_pegar" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 #, fuzzy msgid "Send to..." msgstr "Enviar a ..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Cerrar" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Destruir" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Salir" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Reiniciar" @@ -425,7 +421,7 @@ msgstr "Escritorio %i" msgid "Workspace %i" msgstr "Escritorio %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu no pudo posesionarse del puntero\n" @@ -435,51 +431,51 @@ msgstr "%s: GtkMenu no pudo posesionarse del puntero\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: net_wm_state sin soporte (ventana 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, fuzzy, c-format msgid "%s: Missing defaults file" msgstr "%s: Faltan datos en archivos de configuración por omisión" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: No se puede reservar el color activo %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: No se puede interpretar el color activo %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: No se puede reservar el color inactivo %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: No se puede interpretar el color inactivo %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" -#: src/settings.c:803 +#: src/settings.c:839 #, fuzzy, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Faltan datos en archivos de configuración por omisión" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Sin inicializar el contador de escritorios, usando el valor: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Cambiar a ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 1996-01-26 02:39+0100\n" "Last-Translator: Piarres Beobide Egaña <pi@beobide.net>\n" "Language-Team: Euskara <eu@li.org>\n" @@ -311,106 +311,102 @@ msgstr "Titulu barran bi aldiz klikatzerakoan egingo den ekintza :" msgid "Advanced" msgstr "Aurreratua" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Ekintza ez da (oraindik) onartzen\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Segmentazio errorea" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Beste leiho kudeatzaile bat abiarazirik dago" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Berezko konfigurazio fitxategian datuak falta dira" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Errore ezezagun bat gertatu da" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ximizatu" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Ez_maximizatu" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Ezkutatu" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Beste _guztiak ezkutatu" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "E_rakutsi" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Bildu" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Ire_ki" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "I_tsasi" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "As_katu" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Bidali hona..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "I_txi" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Suntsitu" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Irten" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Berrabiarazi" @@ -424,7 +420,7 @@ msgstr "%i Idazmahaia" msgid "Workspace %i" msgstr "%i Idazmahaia" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu errorea arratoi markatzailea eskuratzerakoan\n" @@ -434,52 +430,52 @@ msgstr "%s: GtkMenu errorea arratoi markatzailea eskuratzerakoan\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: Unmanaged net_wm_state (window 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Lehenespen fitxategia falta da" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Ezin da esleitu kolore aktibo %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Ezin da analizatu kolore aktibo %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Ezin da esleitu kolore ez-aktiboa %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Ezin da analizatu kolore ez-aktiboa %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" "%s: \"%s\" ezarritako tekla gaia ez da aurkitzen lehentsitakoa erabiliko da" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Lehenespen fixtategian balioak falta dira" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s:Idazmahai kontatzailea ez dago ezarria, Balio hau erabiliko da:%i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Aldatu hona ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" diff --git a/po/fa_IR.gmo b/po/fa_IR.gmo Binary files differindex 5a033ce4a..be9d00704 100644 --- a/po/fa_IR.gmo +++ b/po/fa_IR.gmo diff --git a/po/fa_IR.po b/po/fa_IR.po index 7c324653e..703883c01 100644 --- a/po/fa_IR.po +++ b/po/fa_IR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4.fa_IR\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-01-09 19:35+0330\n" "Last-Translator: Abbas Izad <abbasizad@hotmail.com>\n" "Language-Team: Persian <fa@li.org>\n" @@ -307,106 +307,102 @@ msgstr "عملی که هنگام دوکلیکه کردن بر نوار عنوا msgid "Advanced" msgstr "پیشرفته" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: عملیات (هنوز) پشتیبانی ندارد\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: نقص در قطعهبندی" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: مدیر پنجرهی دیگری از قبل در حال اجرا است" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: فقدان دادهها از پروندههای پیشفرض" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "%s: موفق به وارد شدن به حالت شبح نشد: %s" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "%s: ناموفق در ایجاد پروسهی جدید: %s" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: خطای ناشناسی رخ داد" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "بز_رگسازی" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "بزر_گنکردن" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_پنهان کردن" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "پنهان کردن ب_قیه" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "ن_شان دادن" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_سایهزدن" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "سایه_نزدن" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "_چسباندن" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "_چسباندن" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "را_هنمای زمینه" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "همیشه در بالا" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "فرستادن به..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_بستن" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "تخریب" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_ترک" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "راهاندازی مجدد" @@ -420,7 +416,7 @@ msgstr "فضای کاری %i" msgid "Workspace %i" msgstr "فضای کاری %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu موفق به گرفتن اشارهگر نشد\n" @@ -430,50 +426,50 @@ msgstr "%s: GtkMenu موفق به گرفتن اشارهگر نشد\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: net_wm_state (window 0x%lx) سازماندهی نشده" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: فقدان پروندهی پیشفرضها" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: نمیتوان رنگ فعال %s را جایابی کرد\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: نمیتوان رنگ فعال %s را تجزیه کرد\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: نمیتوان رنگ غیرفعال %s را جایابی کرد\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: نمیتوان رنگ غیرفعال %s را تجزیه کرد\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: طرح کلید مشخص شدهی \"%s\" وجود ندارد، از پیشفرض استفاده میشود" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: فقدان مقادیر در پروندهی پیشفرضها" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: شمارش فضای کاری گذاشته نشده، استفاده از مقدار rc: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "تعویض به ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" Binary files differ@@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 1.0.0\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-05-27 22:53--200\n" "Last-Translator: Ilkka Ollakka <ilkka.j.ollakka@students.oamk.fi>\n" "Language-Team: <>\n" @@ -303,106 +303,102 @@ msgstr "Suoritettava toiminto tuplaklikatessa otsikkopalkkia:" msgid "Advanced" msgstr "Muut" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Toiminto ei ole (vielä) tuettu\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Segmentation fault" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Toinen ikkunamanageri on jo käynnistetty" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Oletustiedostoista puuttuu tietoa" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Tuntematon virhe" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "_Suurenna" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "P_alauta" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "Pi_ilota" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Piilota kaikki _muut" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "_Näytä" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Varjosta" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "P_oista varjostus" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "_Kiinnitä" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Pois_ta Kiinnitys" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Vaihda ..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "Sulj_e" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Tuhoa" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Lopeta" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Käynnistä uudelleen" @@ -416,7 +412,7 @@ msgstr "Työpöytä %i" msgid "Workspace %i" msgstr "Työpöytä %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu epäonnistui osoittimen haltuunotossa\n" @@ -426,51 +422,51 @@ msgstr "%s: GtkMenu epäonnistui osoittimen haltuunotossa\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: ei hallittu net_wm_state (ikkuna %#lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Oletustiedostoista puuttuu tietoa" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Aktiivista väriä %s ei voi käyttää\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Aktiivista väriä %s ei voi tunnistaa \n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Ei-aktiivista väriä %s ei voi käyttää\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Ei-aktiivista väriä %s ei voi tunnistaa\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Oletustiedostoista puuttuu tietoa" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Työpöytien lukumäärää ei ole asetettu, käytetään oletusarvoa %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Siirrä ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 1.0.0\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-01-22 00:36+0100\n" "Last-Translator: Olivier Fourdan <fourdan@xfce.org>\n" "Language-Team: none <LL@li.org>\n" @@ -306,106 +306,102 @@ msgstr "Action à effectuer lors d'un double clic sur la barre de titre :" msgid "Advanced" msgstr "Avancé" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Operation pas (encore) supportée\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Erreur de segmentation" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "Impossible d'obtenir l'écran par défaut" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Un autre gestionnaire de fenêtre est déja actif" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Il manque des données dans le ficher de défaut" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "%s: Impossible de passer en mode démon : %s" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "%s: Impossible de créer le nouveau processus : %s" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Erreur inconnue" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "A_grandir" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "_Restaurer" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "Cac_her" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Cacher tous les _autres" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "Affic_her" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "En_rouler" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Dé_rouler" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "_Coller" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Dé_coller" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "A_ide contextuelle" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "Placer au dessus" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Placer sur..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Fermer" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Détruire" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Quitter" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Redémarrer" @@ -419,7 +415,7 @@ msgstr "Bureau %i (%s)" msgid "Workspace %i" msgstr "Bureau %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu n'a pas pu capturer le pointeur\n" @@ -429,53 +425,56 @@ msgstr "%s: GtkMenu n'a pas pu capturer le pointeur\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: net_wm_state non géré (window 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Il manque le ficher de défaut" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Ne peut allouer la couleur active %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Ne peut lire la couleur inactive %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Ne peut allouer la couleur inactive %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Ne peut lire la couleur inactive %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" "%s: le theme de clavier spécifié \"%s\" est manquant, utilisation du thème " "par défaut" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Il manque des données dans le ficher de défaut" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "" "%s: Nombre d'espaces de travail non fixé, utilisation de la valeur rc: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Basculer vers ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "Application inconnue!" + +#~ msgid "Cannot get default screen" +#~ msgstr "Impossible d'obtenir l'écran par défaut" Binary files differ@@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4.hi.po\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-11-01 18:18+0530\n" "Last-Translator: Ravishankar Shrivastava <raviratlami@yahoo.com>\n" "Language-Team: Hindi <indlinux-group@lists.sourceforge.net>\n" @@ -314,107 +314,103 @@ msgstr "टाइटल बार में डबल क्लिक करन msgid "Advanced" msgstr "उन्नत" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: आपरेशन हेतु समर्थन उपलब्ध नहीं (अभी) \n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: सेगमेन्टेशन फाल्ट" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: पहले से ही एक अन्य विंडो प्रबंधक चल रहा है." -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: डिफाल्ट फाइलों में से डाटा खो गया है." -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: अज्ञात त्रुटी हुई" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "बडा करें (_x)" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "अधिकतम हटाएं (_m)" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "छुपाएँ (_H)" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "अन्य सभी को छुपाएं (_a)" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "दिखाएँ (_h)" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "छाया (_S)" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "छाया हटाएं (_s)" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "स्टिक (_t)" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "अनस्टिक (_t)" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "को भेजें..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "बंद करें (_C)" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "नष्ट करें" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "निकलें (_Q)" # gnome-session/session-properties.c:173 -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "पुन शुरु करें" @@ -428,7 +424,7 @@ msgstr "कार्यस्थान %i" msgid "Workspace %i" msgstr "कार्यस्थान %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: जीटीके मेन्यू पाइन्टर पकड़ने में असफल\n" @@ -438,51 +434,51 @@ msgstr "%s: जीटीके मेन्यू पाइन्टर पक msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: अप्रबंधनीय net_wm_state (window 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: डिफाल्ट फाइल खो गया है" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: सक्रिय रंग निर्धारित नहीं कर सकता %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: सक्रिय रंग पारसे नहीं कर सकता %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: अक्रिय रंग निर्धारित नहीं कर सकता %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: अक्रिय रंग पारसे नहीं कर सकता %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: उल्लेखित कुंजी थीम \"%s\" नहीं है, डिफाल्ट उपयोग में" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: डिफाल्ट फाइल में मान खो गया है" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: कार्यस्थान संख्या सेट नहीं है, rc मान उपयोग में: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "पर स्विच करें..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: hu\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-07-16 16:19+0200\n" "Last-Translator: Egmont Koblinger <egmont@uhulinux.hu>\n" "Language-Team: Hungarian <hu@li.org>\n" @@ -312,106 +312,102 @@ msgstr "A címsoron kettős-kattintásra elvégezendő művelet" msgid "Advanced" msgstr "Haladó" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Nem támogatott művelet (egyelőre)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Szegmentálási hiba" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Már fut egy másik ablakkezelő" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Hiányzó adatok az alapértelmezett fájlokból" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Ismeretlen hiba történt" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ximalizálás" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "_Eredeti méret" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "Elre_jtés" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Összes _többi elrejtése" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "_Megjelenítés" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Felgördítés" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "_Legördítés" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "Megjelenés m_inden munkaterületen" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Munkaterületre _korlátozás" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Áthelye_zés másik munkaterületre..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Bezárás" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Megölés" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Kilépés" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Újraindítás" @@ -425,7 +421,7 @@ msgstr "%i. munkaterület" msgid "Workspace %i" msgstr "%i. munkaterület" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu nem tudta elkapni a mutatót\n" @@ -435,51 +431,51 @@ msgstr "%s: GtkMenu nem tudta elkapni a mutatót\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: Kezeletlen net_wm_state (ablak 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Alapértelmezéseket tartalmazó fájl hiányzik" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Nem lehet lefoglalni az aktív színt: %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Nem lehet értelmezni az aktív színt: %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Nem lehet allokálni az inaktív színt: %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Nem lehet értelmezni az inaktív színt: %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Hiányzó értékek az alapértelmezéseket tartalmazó fájlban" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Munkaterület-számláló nincsen beállítva, rc értéke: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Váltás..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: XFce4\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-03-11 14:02+0100\n" "Last-Translator: Alex Dupre <ale@FreeBSD.org>\n" "Language-Team: GUFI <traduzioni@gufi.org>\n" @@ -312,106 +312,102 @@ msgstr "Azione da intraprendere per il doppio click sulla barra del titolo :" msgid "Advanced" msgstr "Avanzato" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Operazione non (ancora) implementata\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Errore di segmentazione" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Un altro gestore di finestre è attualmente in esecuzione" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Dati mancanti dai file di default" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Si è verificato un errore sconosciuto" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "_Massimizza" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "_Demassimizza" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Nascondi" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Nascondi _tutti gli altri" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "_Visualizza" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Adombra" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "_Ripristina" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "_Blocca" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "_Sblocca" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Invia a..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Chiudi" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Distruggi" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Esci" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Riavvia" @@ -425,7 +421,7 @@ msgstr "Spazio di lavoro %i" msgid "Workspace %i" msgstr "Spazio di lavoro %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu non è riuscito a catturare il puntatore\n" @@ -435,51 +431,51 @@ msgstr "%s: GtkMenu non è riuscito a catturare il puntatore\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: net_wm_state (finestra 0x%lx) non gestito" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: File defaults mancante" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Impossibile allocare il colore attivo %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Impossibile interpretare il colore attivo %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Impossibile allocare il colore inattivo %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Impossibile interpretare il colore inattivo %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: manca il tema \"%s\", uso il default" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Valori mancanti nel file defaults" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Numero di spazi di lavoro non impostato, uso il valore rc: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Passa a ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 1.0.0\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-12-10 14:20+0900\n" "Last-Translator: Zhao Ji <zhao-ji@awz.ne.jp>\n" "Language-Team: xfce-users-jp <xfce-users-jp@ml.fdiary.net>\n" @@ -308,106 +308,102 @@ msgstr "タイトルバーをダブルクリックした時の動作 :" msgid "Advanced" msgstr "上級" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: この操作はサポート外です\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: セグメンテーション違反です" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: 別のウィンドウ・マネージャが実行中" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: 標準ファイルにデータが見付かりません" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: 未知のエラーが発生" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "最大化(_x)" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "元に戻す(_m)" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "隠す(_H)" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "他を隠す(_a)" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "表示(_h)" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "折りたたむ(_S)" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "伸ばす(_s)" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "貼る(_t)" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "はがす(_t)" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "送る..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "閉じる(_C)" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "殺す" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "終了(_Q)" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "再起動" @@ -421,7 +417,7 @@ msgstr "ワークスペース %i" msgid "Workspace %i" msgstr "ワークスペース %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenuはポインターを取得できませんでした\n" @@ -431,51 +427,51 @@ msgstr "%s: GtkMenuはポインターを取得できませんでした\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: net_wm_state が未管理です (window 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: 標準ファイルが、みつかりません" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: アクティブ・カラーを割り当てできません %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: アクティブ・カラーが解析できません %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: 非アクティブ・カラーを割り当てできません %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: 非アクティブ・カラーが解析できません %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: 指定されたキー・テーマ \"%s\" が見当たりません, 標準を使います" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: 標準ファイルに値が見付かりません" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: ワークスペース数 未設定, rcの値を使用: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "切替え..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 1.0.0\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-08-02 03:36+0900\n" "Last-Translator: ByungHyun Choi<byunghyunchoi@rtlinux.or.kr>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -303,106 +303,102 @@ msgstr "제목 틀을 더블클릭한 경우 취하는 동작" msgid "Advanced" msgstr "고급 설정" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "최대화(_x)" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "원래 크기로(_m)" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "숨기기(_H)" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "나머지 창 숨기기(_a)" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "보이기(_h)" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "말아 올리기(_S)" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "말린 창 내리기(_s)" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "모든 작업공간에 보이기(_t)" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "현재 작업공간에 보이기(_t)" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "도움말(_h)" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "항상 위" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "다른 작업공간으로..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "닫기(_C)" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "강제 종료" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "종료(_Q)" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "다시 시작" @@ -416,7 +412,7 @@ msgstr "작업공간 %i" msgid "Workspace %i" msgstr "작업공간 %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "" @@ -426,51 +422,51 @@ msgstr "" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "작업공간 전환" -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -6,14 +6,14 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 3.99.2\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-06-11 23:09+0300\n" "Last-Translator: Mantas <zaz@xxx.lt>\n" "Language-Team: Lithuania <komp_lt@konf.lt>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit" +"Content-Transfer-Encoding: 8bit\n" +"Report-Msgid-Bugs-To: \n" #: mcs-plugin/margins.c:123 msgid "" @@ -304,106 +304,102 @@ msgstr "Veiskmas kuris bus atliktas dukart spragtelėjus ant pavadinimo juostos" msgid "Advanced" msgstr "Išplėstas" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Operacija nėra palaikoma (kolkas)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Segmentacijos klaida" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "Neįmanoma gauti pagrindinio ekrano" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Kita langų tvarkyklė jau veikia" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Trūksta duomenų iš numatytojo failo" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "%s: Neįmanoma paleisti demono režimo: %s" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "%s: Neįmanoma sukurti naujo proceso: %s" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Įvyko nežinoma klaida" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Iš_skleisti" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "A_tstatyti" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Paslėpti" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Visus kitus p_aslėpti" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "_Rodyti" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Uždengti" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "_Atidengti" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "Priseg_ti" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Nuseg_ti" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "Konteksto _pagalba" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "Visada viršuje" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Siųsti į..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Uždaryti" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Sunaikinti" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Baigti" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Perkrauti" @@ -417,7 +413,7 @@ msgstr "Darbo laukas %i (%s)" msgid "Workspace %i" msgstr "Darbo laukas %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu nesugebėjo sugauti rodyklės\n" @@ -427,51 +423,53 @@ msgstr "%s: GtkMenu nesugebėjo sugauti rodyklės\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: Neapdorota net_wm_state (window·0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s:Nėra numatytojo failo" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Neįmanoma paskirti aktyvios spalvos %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Neįmanoma sužinoti aktyvios spalvos %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Neįmanoma paskirti pasyvios spalvos %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Neįmanoma sužinoti pasyvios spalvos %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: nustatytoji klavišų tema \"%s\"·neegzistuoja, naudojama pagrindinė" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Trūksta reikšmių numatytame faile" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Darbo vietų skaičius nenustatytas, naudojamos rc reikšmės: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Perjungti į ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "Nežinoma programa!" +#~ msgid "Cannot get default screen" +#~ msgstr "Neįmanoma gauti pagrindinio ekrano" Binary files differ@@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 4.0.3.1\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-02-08 00:28+0800\n" "Last-Translator: Harun Musa <mharun@gmx.net>\n" "Language-Team: Malay <translation-team-ms@list.sourceforge.net>\n" @@ -304,106 +304,102 @@ msgstr "Aksi untuk dilakukan apabila dwiklik pada bar tajuk :" msgid "Advanced" msgstr "Lanjutan" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Operasi tidak disokong (lagi)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Kesilapan segmentasi" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Pengurus Tetingkap lain telah sedia berlari" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Kehilangan data dari fail default" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "%s: Gagal untuk memasuki mod daemon: %s" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "%s: Gagal unuk cipta proses baru: %s" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Ralat tidak diketahui terjadi" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ksimakan" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Nyah_maksima" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Sembunyi" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Sembunyi y_ang lain-lain" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "Li_hat" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Bebayang" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Nyah_bebayang" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "L_ekat" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Nyah_lekat" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "Context _bantuan" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "Sentiasa di atas" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Hantar ke..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Tutup" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Musnah" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Keluar" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Ulangmula" @@ -417,7 +413,7 @@ msgstr "Ruangkerja %i" msgid "Workspace %i" msgstr "Ruangkerja %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu gagal untuk grab penunjuk\n" @@ -427,50 +423,50 @@ msgstr "%s: GtkMenu gagal untuk grab penunjuk\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: Takterurus net_wm_state (tetingkap 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Kehilangan fail default" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Tak boleh allocate warna aktif %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Tak boleh parse warna tak aktif %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Tak boleh allocate warna tak aktif %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Tak boleh parse warna tak aktif %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: kekunci tema dispefikasi \"%s\" hilang, guna default" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Kehilangan nilai dalam fail default" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Bilangan ruangkerja belum set, guna nilai rc: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Suis ke ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" Binary files differ@@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Jasper Huijsmans <huysmans@users.sourceforge.net>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -310,106 +310,102 @@ msgstr "Actie voor dubbelklikken op de titelbalk :" msgid "Advanced" msgstr "Geavanceerd" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Bewerking (nog) niet ondersteund\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Segmentatie fout" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: een andere Window Manager is al in gebruik" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%: Ontbrekende gegevens uit standaard bestanden" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: er is een onbekende fout opgetreden" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ximaliseren" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "On_maximaliseren" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Verbergen" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "_Andere verbergen" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "_Tonen" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Oprollen" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "_Uitrollen" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "_Plakken" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "_Loslaten" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Zenden naar..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Sluiten" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Vernietigen" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "A_fsluiten" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "_Herstarten" @@ -423,7 +419,7 @@ msgstr "Bureaublad %i" msgid "Workspace %i" msgstr "Bureaublad %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu kon de pointer niet vasthouden\n" @@ -433,51 +429,51 @@ msgstr "%s: GtkMenu kon de pointer niet vasthouden\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: Onbeheerde net_wm_state (venster 0x%#lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: defaults bestand ontbreekt" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Kan actieve kleur %s niet creëren\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Kan actieve kleur %s niet vertalen\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Kan inactieve kleur %s niet creëren\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Kan inactieve kleur %s niet vertalen\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%: Ontbrekende gegevens in defaults bestand" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Aantal bureaubladen niet ingesteld, waarde uit rc gebruiken: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Wisselen naar ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 1.0.0\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-12-25 19:40+0100\n" "Last-Translator: Daniel Mróz <beorn@alpha.pl>\n" "Language-Team: none <none@none>\n" @@ -314,107 +314,103 @@ msgstr "Akcja do wykonania przy podwójnym kliknięciu na pasku tytułowym :" msgid "Advanced" msgstr "Zaawansowane" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Operaracja jeszcze nie obsługiwana\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Naruszenie ochrony pamięci" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Inny Menadżer Okien jest już uruchomiony" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Brak danych z domyślnych plików" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Wystąpił nieznany błąd" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "_Maksymalizuj" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "_Przywróć" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Schowaj" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Schowaj _wszystkie inne" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "_Pokaż" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "Zw_iń" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Rozw_iń" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "Przyp_nij" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Odep_nij" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 #, fuzzy msgid "Send to..." msgstr "Przenieś na..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Zamknij" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Zniszcz" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Wyjdź" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "" @@ -428,7 +424,7 @@ msgstr "Obszar roboczy %i" msgid "Workspace %i" msgstr "Obszar roboczy %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu nie uzyskało wskaźnika\n" @@ -438,51 +434,51 @@ msgstr "%s: GtkMenu nie uzyskało wskaźnika\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "" -#: src/settings.c:314 +#: src/settings.c:341 #, fuzzy, c-format msgid "%s: Missing defaults file" msgstr "%s: Brak pliku danych domyślnych" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Nie mogę zaalokować aktywnego koloru %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Nie mogę zidentyfikować aktywnego koloru %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Nie mogę zaalokować nieaktywnego koloru %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Nie mogę zidentyfikować nieaktywnego koloru %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: podany temat \"%s\" nie istnieje, używam domyślnego" -#: src/settings.c:803 +#: src/settings.c:839 #, fuzzy, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Brak wartości w pliku danych domyślnych" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Liczba obszarów roboczych nie ustawiona, używam wartości: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Przełącz do ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo Binary files differindex c0c9b6ae0..d815f2344 100644 --- a/po/pt_BR.gmo +++ b/po/pt_BR.gmo diff --git a/po/pt_BR.po b/po/pt_BR.po index 0e90bf873..34d67e8cc 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-01-18 00:16-0200\n" "Last-Translator: Felix da Silva Costa <felix@online.eti.br>\n" "Language-Team: pt_BR <felix@online.eti.br>\n" @@ -306,106 +306,102 @@ msgstr "Ação a realizar quando dar um clique duplo na barra de títulos :" msgid "Advanced" msgstr "Avançado" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Operação não permitida (ainda)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Falha de segmentação" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Outro gerenciador de janelas já esta executando" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Perda de informações dos arquivos padrões" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "%s: Falha ao criar novo processo: %s" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Ocorreu um erro desconhecido" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ximizar" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Mi_nimizar" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Ocultar" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Ocultar _todos os outros" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "M_ostrar" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Sombrear" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Des_sombrear" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "Sempre no topo" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "enviar para..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Fechar" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Destruir" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Sair" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Reiniciar" @@ -419,7 +415,7 @@ msgstr "Área de trabalho %i" msgid "Workspace %i" msgstr "Área de trabalho %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu falhou para encontrar o mouse\n" @@ -429,50 +425,50 @@ msgstr "%s: GtkMenu falhou para encontrar o mouse\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Falta arquivos padrões" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Mudar para ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" diff --git a/po/pt_PT.gmo b/po/pt_PT.gmo Binary files differindex 33ae016b6..5ff75e8ea 100644 --- a/po/pt_PT.gmo +++ b/po/pt_PT.gmo diff --git a/po/pt_PT.po b/po/pt_PT.po index adaa1dbdd..53da8666b 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-09-12 22:02+0100\n" "Last-Translator: Nuno Donato <nunodonato@sapo.pt>\n" "Language-Team: Portuguese <pt@li.org>\n" @@ -312,106 +312,102 @@ msgstr "Acção a exectuar quando se faz um duplo clique na barra de título" msgid "Advanced" msgstr "Avançadas" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Operação (ainda) não suportada\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Segmentation fault" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Ja está a correr outro Gestor de Janelas" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Faltam dados dos ficheiros" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Erro desconhecido" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ximizar" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Des_maximizar" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Esconder" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Esconder _todas as outras" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "M_ostrar" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "En_rolar" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "_Desenrolar" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "_Omnipresente" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Remo_ver Omnipresença" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Enviar para..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Fechar" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Destruir" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Sair" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Reiniciar" @@ -425,7 +421,7 @@ msgstr "Area de Trabalho %i" msgid "Workspace %i" msgstr "Area de Trabalho %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu falhou a captar o ponteiro\n" @@ -435,51 +431,51 @@ msgstr "%s: GtkMenu falhou a captar o ponteiro\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: net_wm_state (window 0x%lx) não gerido" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Faltam ficheiros" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Não foi possível alocar a cor activa %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: não foi encontrado o tema especificado \"%s\" , a usar o normal" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Mudar para..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-09-03 22:20+0300\n" "Last-Translator: Dan Korostelev <daniel@ats.energo.ru>\n" "Language-Team: Russian <daniel@ats.energo.ru>\n" @@ -302,106 +302,102 @@ msgstr "Действие по двойному щелчку в области з msgid "Advanced" msgstr "Дополнительно" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Операция не поддерживается (пока)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Уже запущен другой менеджер окон" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Отсутствуют данные в стандартных файлах" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Произошла неизвестная ошибка" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Развернуть" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Восстановить" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "Скрыть" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Скрыть все остальные" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "Показать" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "Свернуть в заголовок" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Развернуть из заголовка" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "Приклеить" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Отклеить" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Перенести на..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "Закрыть" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Убить" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "Выход" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Перезапуск" @@ -415,7 +411,7 @@ msgstr "Рабочее место %i" msgid "Workspace %i" msgstr "Рабочее место %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu не смог получить курсор\n" @@ -425,53 +421,53 @@ msgstr "%s: GtkMenu не смог получить курсор\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: Не обрабатываемое net_wm_state (окно 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Отсутствует файл умолчаний" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Ошибка определения активного цвета %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Ошибка обработки активного цвета %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Ошибка определения неактивного цвета %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Ошибка обработки неактивного цвета %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" "%s: указанная тема клавиш \"%s\" отсутствует, используется тема по умолчанию" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Отсутствуют значения в файле умолчаний" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "" "%s: Не возможно установить число рабочих мест, используя значение rc: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Переключиться на ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -311,106 +311,102 @@ msgstr "Åtgärd vid dubbelklick på titelraden:" msgid "Advanced" msgstr "Avancerat" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Åtgärd ej understödd (ännu)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Segmenteringsfel" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: En annan fönsterhanterare körs redan" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Saknar data från förvalda filer" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Okänt fel inträffade" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "Ma_ximera" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Av_maximera" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Göm" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Göm _alla andra" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "V_isa" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Rulla upp" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "_Rulla ner" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "K_listrigt" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "O_klistrigt" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Skicka till..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "S_täng" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Förstör" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "A_vsluta" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Starta om" @@ -424,7 +420,7 @@ msgstr "Arbetsyta %i" msgid "Workspace %i" msgstr "Arbetsyta %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu misslyckades attfånga pekaren\n" @@ -434,51 +430,51 @@ msgstr "%s: GtkMenu misslyckades attfånga pekaren\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: Ohanterad net_wm_state (fönster 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Saknar förvalsfil" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Kan inte allokera aktiv färg %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Kan ej avläsa aktiv färg %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Kan inte allokera inaktiv färg %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Kan ej avläsa inaktiv färg %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s specificerat tangentbordstema \"%s\" saknas, använder förvalt" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Saknade värden i förvalsfil" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Skrivbordsantal inte satt, använder rc-värde: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Byt till.." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Tamil XFWM4\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-09-24 18:05-0500\n" "Last-Translator: Dinesh Nadarajah <n_dinesh@yahoo.com>\n" "Language-Team: Tamil <tamilinix@yahoogroups.com>\n" @@ -308,106 +308,102 @@ msgstr "தலைப்புப் பட்டையில் þரட்ட msgid "Advanced" msgstr "உயர்நிலை" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: இயக்கத்திட்கு ஆதரவளிப்பு þல்லை (þப்பொழுது)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: பகுதியாக்கல் பழுது" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: மற்றொரு சாளரமேலாளர் ஏற்கெனவே þயக்கப்பட்டுள்ளது" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: கொடாநிலை கோப்புகளில் இல்லாத தரவுகள்" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: தெரியாத பிழை நடைபெற்றுள்ளது" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "பெருதாக்குக" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "பெருதாக்குதல் நீக்கு" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_மறை" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "மற்றவை அனைத்தையும் மறை" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "காண்பிக்கவும்" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "நிழல்" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "நிழல் நீக்கு" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "ஒட்_டு" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "ஒட்டா_தே" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "இவ்வேலை இடத்தில் போடுக ..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_மூடு" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "அழி" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_வெளிச்செல்" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "மறுபடியும் தொடங்கு" @@ -421,7 +417,7 @@ msgstr "வேலை þடம் %i" msgid "Workspace %i" msgstr "வேலை þடம் %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenuக்கு சுட்டியை பெற முடியவில்லை\n" @@ -431,51 +427,51 @@ msgstr "%s: GtkMenuக்கு சுட்டியை பெற முடி msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: மேலாண்மையற்ற net_wm_state (சாளரம் 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: கொடாநிலை கோப்புகள் þல்லை" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: நடப்பு வண்ணம் ஒதுக்கீ வைக்க முடியவில்லை %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: நடப்பு வண்ணம் அலகிட முடியவில்லை %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: செயலற்ற வண்ணம் ஒதுக்கீ வைக்க முடியவில்லை %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: செயலற்ற வண்ணம் அழகிட முடியவில்லை %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s:ஃகுறிப்பிட்ட தோற்றம் \"%s\" காணவில்லை, கொடாநிலை பயன்படுத்தப்படுகின்றது" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: கொடாநிலை கோப்பில் þல்லாத மதிப்புகள்" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: வேலை-þட எண்ணிக்கை அமைக்கவில்லை, rc மதிப்பை பயன்படுத்தும்: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "þதட்கு மாற்றவும் ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-12-13 22:56+0200\n" "Last-Translator: Erçin EKER <erc.caldera@gmx.net>\n" "Language-Team: Turkish <tr@li.org>\n" @@ -309,106 +309,102 @@ msgstr "Başlık çubuğuna çift tıklandığında uygulanacak eylem :" msgid "Advanced" msgstr "Gelişmiş" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: İşlem desteklenmiyor (henüz)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Parçalanma hatası" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Başka bir pencere yöneticisi zaten çalışıyor" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Öntanımlı dosyalarda eksik veri" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Bilinmeyen bir hata oluştu" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "_Büyült" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "_Küçült" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "_Gizle" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Diğe_rlerini gizle" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "Gös_ter" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "Gö_lgele" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Gölgelemeyi ka_pat" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "Sa_bit" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Sab_it değil" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Gönder..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Kapat" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Yok Et" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Çıkış" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Yeni_den Başlat" @@ -422,7 +418,7 @@ msgstr "Çalışma alanı %i" msgid "Workspace %i" msgstr "Çalışma alanı %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu işaretçiyi kullanamıyor\n" @@ -432,52 +428,52 @@ msgstr "%s: GtkMenu işaretçiyi kullanamıyor\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: Yönetilmeyen net_wm_stat (pencere 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Öntanımlı dosyalar unutulmuş" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Aktif renk algılanamıyor %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Aktif renk çözümlenemiyor %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Aktif olmayan renk algılanamıyor %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Aktif olmayan renk çözümlenemiyor %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" "%s: belirlenen \"%s\" tuş teması bulunamıyor, öntanımlı olan kullanılıyor" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Öntanımlı dosyalarda değerler unutulmuş" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Çalışma alanı uygulanamıyor, rc değeri kullanılıyor: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Geç ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-10-26 15:12+0200\n" "Last-Translator: Maxim Dziumanenko <mvd@mylinux.com.ua>\n" "Language-Team: Ukrainian <uk@li.org>\n" @@ -310,106 +310,102 @@ msgstr "Дія, що виконується при подвійному клац msgid "Advanced" msgstr "Додатково" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Операція не підтримується (поки-що)\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Фатальна помилка" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Вже активний інший менеджер вікон" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: відсутні дані з типових файлів" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Виникла невідома помилка" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "М_аксимізувати" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "М_інімізувати" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "При_ховати" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Приховати _всі інші" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "_Показати" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "За_тінити" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Роз_тінити" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "При_ліпити" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Від_ліпити" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Відправити на..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "_Закрити" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Знищити" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "Ви_йти" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Перезапустити" @@ -423,7 +419,7 @@ msgstr "Робочу область %i" msgid "Workspace %i" msgstr "Робочу область %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu не вдалось захопити вказівник\n" @@ -433,52 +429,52 @@ msgstr "%s: GtkMenu не вдалось захопити вказівник\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: необроблене net_wm_state (вікно 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Відсутній файл з типовими значеннями" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Неможливо зарезервувати активний колір %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Неможливо проаналізувати активний колір %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Неможливо зарезервувати неактивний колір %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Неможливо проаналізувати неактивний колір %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: вказаний ключ теми \"%s\" не існує, використовується типовий" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Відсутні значення у файлі з типовими значеннями" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "" "%s: Лічильник робочих областей не встановлено, використовується значення: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Перемикнутись на ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 1.0.0\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2003-10-24 23:55+9\n" "Last-Translator: Lâm Vĩnh Niên <nienvl@yahoo.ca>\n" "Language-Team: none <LL@li.org>\n" @@ -308,106 +308,102 @@ msgstr "Hành động khi bấm kép trên thanh tiêu đề :" msgid "Advanced" msgstr "Cao cấp" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: Hoạt động không (chưa) được hỗ trợ\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: Lỗi segmentation" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: Trình quản lí cửa sổ khác đang chạy" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: Thiếu dữ liệu từ tập tin mặc định" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: Xảy ra lỗi chưa biết" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "_Phóng to" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "Thu _nhỏ" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "Ẩ_n" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "Ẩn tất cả cái _khác" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "_Hiển thị" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "_Che" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "Khô_ng che" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "_Dán" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "Thá_o dán" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "Gửi đến..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "Đón_g" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "Huỷ bỏ" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "_Thoát" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "Khởi động lại" @@ -421,7 +417,7 @@ msgstr "Không gian làm việc %i" msgid "Workspace %i" msgstr "Không gian làm việc %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu không bắt được con trỏ\n" @@ -431,51 +427,51 @@ msgstr "%s: GtkMenu không bắt được con trỏ\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: net_wm_state không được quản lí (cửa sổ (0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: Thiếu tập tin mặc định" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: Không thể định vị màu chủ đạo %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: Không thể phân tích màu chủ đạo %\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: Không thể định vị màu không chủ đạo %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: Không thể phân tích màu không chủ đạo %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: thiếu chủ đề chính \"%s\" đã chỉ định, dùng mặc định" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: Thiếu các giá trị trong tập tin mặc định" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: Số không gian làm việc không được thiết lập, dùng giá trị rc: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "Chuyển sang ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" diff --git a/po/xfwm4.pot b/po/xfwm4.pot index 8dc51e02d..c7b84671a 100644 --- a/po/xfwm4.pot +++ b/po/xfwm4.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -298,106 +298,102 @@ msgstr "" msgid "Advanced" msgstr "" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "" -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "" @@ -411,7 +407,7 @@ msgstr "" msgid "Workspace %i" msgstr "" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "" @@ -421,50 +417,50 @@ msgstr "" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "" -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo Binary files differindex 8eb59c88e..15adcbdfc 100644 --- a/po/zh_CN.gmo +++ b/po/zh_CN.gmo diff --git a/po/zh_CN.po b/po/zh_CN.po index 934a422de..7a37453ee 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4 1.0.0\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-06-11 16:52+0200\n" "Last-Translator: Yongtao Yang <yongtao.yang@telia.com>\n" "Language-Team: none <LL@li.org>\n" @@ -304,106 +304,102 @@ msgstr "双击标题栏所执行的动作 :" msgid "Advanced" msgstr "高级" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: 尚不支持的操作\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: 段错误" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "无法获取默认屏幕" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: 另一个窗口管理正在运行" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: 默认文件中缺少数据" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "%s: 无法进入守护进程模式: %s" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "%s: 无法创建新进程: %s" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: 发生了未知错误" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "最大化(_X)" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "恢复(_M)" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "隐藏(_H)" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "隐藏其它全部窗口(_A)" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "显示(_H)" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "卷起(_S)" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "展开(_s)" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "粘连(_T)" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "分离(_T)" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "上下文帮助(_H)" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "总是置顶" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "发送到 ..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "关闭(_C)" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "结束" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "退出(_Q)" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "重启" @@ -417,7 +413,7 @@ msgstr "工作区 %i (%s)" msgid "Workspace %i" msgstr "工作区 %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu 无法获取鼠标\n" @@ -427,54 +423,57 @@ msgstr "%s: GtkMenu 无法获取鼠标\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: 无法管理的net_wm_state (window %%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: 缺少默认文件" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: 无法分配所选颜色 %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: 无法解释所选颜色 %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: 无法分配 inactive 颜色 %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: 无法解释 inactive颜色 %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "%s: 指定的主题 \\\"%s\\\" 不存在,使用默认主题" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: 默认文件中缺少数据" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: 未设置工作区个数,使用rc文件值: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "切换到 ..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "未知的应用程序!" +#~ msgid "Cannot get default screen" +#~ msgstr "无法获取默认屏幕" + #~ msgid "Adjust workspace margins" #~ msgstr "调整工作区边缘" diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo Binary files differindex 3ce809aa0..395f0b6f8 100644 --- a/po/zh_TW.gmo +++ b/po/zh_TW.gmo diff --git a/po/zh_TW.po b/po/zh_TW.po index 41a9c549f..554132531 100755 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xfwm4\n" -"POT-Creation-Date: 2004-06-03 16:48+0200\n" +"POT-Creation-Date: 2004-06-16 00:07+0200\n" "PO-Revision-Date: 2004-04-20 16:38+0800\n" "Last-Translator: umm <umm@pchome.com.tw>\n" "Language-Team: \n" @@ -306,106 +306,102 @@ msgstr "雙擊標題列執行的動作:" msgid "Advanced" msgstr "進階" -#: src/events.c:1514 +#: src/events.c:1595 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "%s: (尚)未支援的操作\n" -#: src/main.c:214 +#: src/main.c:178 #, c-format msgid "%s: Segmentation fault" msgstr "%s: 分斷錯誤" -#: src/main.c:247 -msgid "Cannot get default screen" -msgstr "" - -#: src/main.c:411 +#: src/main.c:307 #, c-format msgid "%s: Another Window Manager is already running" msgstr "%s: 另一個視窗管理程式正在運行" -#: src/main.c:416 +#: src/main.c:312 #, c-format msgid "%s: Missing data from default files" msgstr "%s: 預設文件中缺少資料" -#: src/main.c:425 +#: src/main.c:322 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "%s: 無法進入保護模式: %s" -#: src/main.c:433 +#: src/main.c:330 #, c-format msgid "%s: Failed to create new process: %s" msgstr "%s: 無法建立新行程: %s" -#: src/main.c:454 +#: src/main.c:351 #, c-format msgid "%s: Unknown error occured" msgstr "%s: 發生未知的錯誤" -#: src/menu.c:39 +#: src/menu.c:38 msgid "Ma_ximize" msgstr "最大化(_X)" -#: src/menu.c:40 +#: src/menu.c:39 msgid "Un_maximize" msgstr "還原(_M)" -#: src/menu.c:41 +#: src/menu.c:40 msgid "_Hide" msgstr "隱藏(_H)" -#: src/menu.c:42 +#: src/menu.c:41 msgid "Hide _all others" msgstr "隱藏其他全部視窗(_A)" -#: src/menu.c:43 +#: src/menu.c:42 msgid "S_how" msgstr "顯示(_H)" -#: src/menu.c:44 +#: src/menu.c:43 msgid "_Shade" msgstr "捲起(_S)" -#: src/menu.c:45 +#: src/menu.c:44 msgid "Un_shade" msgstr "展開(_s)" -#: src/menu.c:46 +#: src/menu.c:45 msgid "S_tick" msgstr "貼連(_T)" -#: src/menu.c:47 +#: src/menu.c:46 msgid "Uns_tick" msgstr "分離(_T)" -#: src/menu.c:48 +#: src/menu.c:47 msgid "Context _help" msgstr "上下文說明(_H)" -#: src/menu.c:49 src/menu.c:50 +#: src/menu.c:48 src/menu.c:49 msgid "Always on top" msgstr "總是置頂" -#: src/menu.c:51 +#: src/menu.c:50 msgid "Send to..." msgstr "傳送到..." -#: src/menu.c:53 +#: src/menu.c:52 msgid "_Close" msgstr "關閉(_C)" -#: src/menu.c:56 +#: src/menu.c:55 msgid "Destroy" msgstr "結束" -#: src/menu.c:59 +#: src/menu.c:58 msgid "_Quit" msgstr "退出(_Q)" -#: src/menu.c:60 +#: src/menu.c:59 msgid "Restart" msgstr "重新啟動" @@ -419,7 +415,7 @@ msgstr "工作區 %i (%s)" msgid "Workspace %i" msgstr "工作區 %i" -#: src/menu.c:423 +#: src/menu.c:424 #, c-format msgid "%s: GtkMenu failed to grab the pointer\n" msgstr "%s: GtkMenu 無法取得鼠標\n" @@ -429,50 +425,50 @@ msgstr "%s: GtkMenu 無法取得鼠標\n" msgid "%s: Unmanaged net_wm_state (window 0x%lx)" msgstr "%s: 無法管理的 net_wm_state (window 0x%lx)" -#: src/settings.c:314 +#: src/settings.c:341 #, c-format msgid "%s: Missing defaults file" msgstr "%s: 缺少預設文件" -#: src/settings.c:547 +#: src/settings.c:596 #, c-format msgid "%s: Cannot allocate active color %s\n" msgstr "%s: 無法分配使用的顏色 %s\n" -#: src/settings.c:554 +#: src/settings.c:602 #, c-format msgid "%s: Cannot parse active color %s\n" msgstr "%s: 無法分析使用的顏色 %s\n" -#: src/settings.c:598 +#: src/settings.c:645 #, c-format msgid "%s: Cannot allocate inactive color %s\n" msgstr "%s: 無法分配未使用的顏色 %s\n" -#: src/settings.c:605 +#: src/settings.c:651 #, c-format msgid "%s: Cannot parse inactive color %s\n" msgstr "%s: 無法分析未使用的顏色 %s\n" -#: src/settings.c:793 +#: src/settings.c:829 #, c-format msgid "%s: specified key theme \"%s\" missing, using default" msgstr "msgid \"%s: 指定的主題 \"%s\" 不存在,使用預設主題\"" -#: src/settings.c:803 +#: src/settings.c:839 #, c-format msgid "%s: Missing values in defaults file" msgstr "%s: 預設文件中缺少數值" -#: src/settings.c:1149 +#: src/settings.c:1125 #, c-format msgid "%s: Workspace count not set, using rc value: %i" msgstr "%s: 未設定工作區數量,使用 rc 文件值: %i" -#: src/tabwin.c:68 +#: src/tabwin.c:69 msgid "Switch to ..." msgstr "切換到..." -#: src/tabwin.c:127 +#: src/tabwin.c:128 msgid "Unknown application!" msgstr "" diff --git a/src/Makefile.am b/src/Makefile.am index c08f9ffd4..5fd71d4c5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -3,6 +3,8 @@ bin_PROGRAMS = xfwm4 xfwm4_SOURCES = \ client.c \ client.h \ + display.h \ + display.c \ inline-default-icon.h \ events.c \ events.h \ @@ -35,6 +37,7 @@ xfwm4_SOURCES = \ poswin.c \ poswin.h \ screen.h \ + screen.c \ session.c \ session.h \ settings.c \ diff --git a/src/Makefile.in b/src/Makefile.in index 7533e7e1c..85a8be120 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -53,24 +53,26 @@ CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) -am_xfwm4_OBJECTS = xfwm4-client.$(OBJEXT) xfwm4-events.$(OBJEXT) \ - xfwm4-focus.$(OBJEXT) xfwm4-frame.$(OBJEXT) \ - xfwm4-hints.$(OBJEXT) xfwm4-icons.$(OBJEXT) \ - xfwm4-keyboard.$(OBJEXT) xfwm4-main.$(OBJEXT) \ - xfwm4-menu.$(OBJEXT) xfwm4-misc.$(OBJEXT) \ +am_xfwm4_OBJECTS = xfwm4-client.$(OBJEXT) xfwm4-display.$(OBJEXT) \ + xfwm4-events.$(OBJEXT) xfwm4-focus.$(OBJEXT) \ + xfwm4-frame.$(OBJEXT) xfwm4-hints.$(OBJEXT) \ + xfwm4-icons.$(OBJEXT) xfwm4-keyboard.$(OBJEXT) \ + xfwm4-main.$(OBJEXT) xfwm4-menu.$(OBJEXT) xfwm4-misc.$(OBJEXT) \ xfwm4-mypixmap.$(OBJEXT) xfwm4-mywindow.$(OBJEXT) \ xfwm4-netwm.$(OBJEXT) xfwm4-parserc.$(OBJEXT) \ xfwm4-placement.$(OBJEXT) xfwm4-poswin.$(OBJEXT) \ - xfwm4-session.$(OBJEXT) xfwm4-settings.$(OBJEXT) \ - xfwm4-spinning_cursor.$(OBJEXT) xfwm4-stacking.$(OBJEXT) \ - xfwm4-startup_notification.$(OBJEXT) xfwm4-tabwin.$(OBJEXT) \ - xfwm4-transients.$(OBJEXT) xfwm4-workspaces.$(OBJEXT) + xfwm4-screen.$(OBJEXT) xfwm4-session.$(OBJEXT) \ + xfwm4-settings.$(OBJEXT) xfwm4-spinning_cursor.$(OBJEXT) \ + xfwm4-stacking.$(OBJEXT) xfwm4-startup_notification.$(OBJEXT) \ + xfwm4-tabwin.$(OBJEXT) xfwm4-transients.$(OBJEXT) \ + xfwm4-workspaces.$(OBJEXT) xfwm4_OBJECTS = $(am_xfwm4_OBJECTS) xfwm4_DEPENDENCIES = DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/xfwm4-client.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-display.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-events.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-focus.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-frame.Po \ @@ -86,6 +88,7 @@ am__depfiles_maybe = depfiles @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-parserc.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-placement.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-poswin.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-screen.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-session.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-settings.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-spinning_cursor.Po \ @@ -259,6 +262,8 @@ target_alias = @target_alias@ xfwm4_SOURCES = \ client.c \ client.h \ + display.h \ + display.c \ inline-default-icon.h \ events.c \ events.h \ @@ -291,6 +296,7 @@ xfwm4_SOURCES = \ poswin.c \ poswin.h \ screen.h \ + screen.c \ session.c \ session.h \ settings.c \ @@ -406,6 +412,7 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-client.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-display.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-events.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-focus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-frame.Po@am__quote@ @@ -421,6 +428,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-parserc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-placement.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-poswin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-screen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-session.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-settings.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-spinning_cursor.Po@am__quote@ @@ -478,6 +486,30 @@ xfwm4-client.lo: client.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-client.lo `test -f 'client.c' || echo '$(srcdir)/'`client.c +xfwm4-display.o: display.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -MT xfwm4-display.o -MD -MP -MF "$(DEPDIR)/xfwm4-display.Tpo" -c -o xfwm4-display.o `test -f 'display.c' || echo '$(srcdir)/'`display.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfwm4-display.Tpo" "$(DEPDIR)/xfwm4-display.Po"; else rm -f "$(DEPDIR)/xfwm4-display.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display.c' object='xfwm4-display.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/xfwm4-display.Po' tmpdepfile='$(DEPDIR)/xfwm4-display.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-display.o `test -f 'display.c' || echo '$(srcdir)/'`display.c + +xfwm4-display.obj: display.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -MT xfwm4-display.obj -MD -MP -MF "$(DEPDIR)/xfwm4-display.Tpo" -c -o xfwm4-display.obj `if test -f 'display.c'; then $(CYGPATH_W) 'display.c'; else $(CYGPATH_W) '$(srcdir)/display.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfwm4-display.Tpo" "$(DEPDIR)/xfwm4-display.Po"; else rm -f "$(DEPDIR)/xfwm4-display.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display.c' object='xfwm4-display.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/xfwm4-display.Po' tmpdepfile='$(DEPDIR)/xfwm4-display.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-display.obj `if test -f 'display.c'; then $(CYGPATH_W) 'display.c'; else $(CYGPATH_W) '$(srcdir)/display.c'; fi` + +xfwm4-display.lo: display.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -MT xfwm4-display.lo -MD -MP -MF "$(DEPDIR)/xfwm4-display.Tpo" -c -o xfwm4-display.lo `test -f 'display.c' || echo '$(srcdir)/'`display.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfwm4-display.Tpo" "$(DEPDIR)/xfwm4-display.Plo"; else rm -f "$(DEPDIR)/xfwm4-display.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display.c' object='xfwm4-display.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/xfwm4-display.Plo' tmpdepfile='$(DEPDIR)/xfwm4-display.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-display.lo `test -f 'display.c' || echo '$(srcdir)/'`display.c + xfwm4-events.o: events.c @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -MT xfwm4-events.o -MD -MP -MF "$(DEPDIR)/xfwm4-events.Tpo" -c -o xfwm4-events.o `test -f 'events.c' || echo '$(srcdir)/'`events.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfwm4-events.Tpo" "$(DEPDIR)/xfwm4-events.Po"; else rm -f "$(DEPDIR)/xfwm4-events.Tpo"; exit 1; fi @@ -838,6 +870,30 @@ xfwm4-poswin.lo: poswin.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-poswin.lo `test -f 'poswin.c' || echo '$(srcdir)/'`poswin.c +xfwm4-screen.o: screen.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -MT xfwm4-screen.o -MD -MP -MF "$(DEPDIR)/xfwm4-screen.Tpo" -c -o xfwm4-screen.o `test -f 'screen.c' || echo '$(srcdir)/'`screen.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfwm4-screen.Tpo" "$(DEPDIR)/xfwm4-screen.Po"; else rm -f "$(DEPDIR)/xfwm4-screen.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='screen.c' object='xfwm4-screen.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/xfwm4-screen.Po' tmpdepfile='$(DEPDIR)/xfwm4-screen.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-screen.o `test -f 'screen.c' || echo '$(srcdir)/'`screen.c + +xfwm4-screen.obj: screen.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -MT xfwm4-screen.obj -MD -MP -MF "$(DEPDIR)/xfwm4-screen.Tpo" -c -o xfwm4-screen.obj `if test -f 'screen.c'; then $(CYGPATH_W) 'screen.c'; else $(CYGPATH_W) '$(srcdir)/screen.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfwm4-screen.Tpo" "$(DEPDIR)/xfwm4-screen.Po"; else rm -f "$(DEPDIR)/xfwm4-screen.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='screen.c' object='xfwm4-screen.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/xfwm4-screen.Po' tmpdepfile='$(DEPDIR)/xfwm4-screen.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-screen.obj `if test -f 'screen.c'; then $(CYGPATH_W) 'screen.c'; else $(CYGPATH_W) '$(srcdir)/screen.c'; fi` + +xfwm4-screen.lo: screen.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -MT xfwm4-screen.lo -MD -MP -MF "$(DEPDIR)/xfwm4-screen.Tpo" -c -o xfwm4-screen.lo `test -f 'screen.c' || echo '$(srcdir)/'`screen.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfwm4-screen.Tpo" "$(DEPDIR)/xfwm4-screen.Plo"; else rm -f "$(DEPDIR)/xfwm4-screen.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='screen.c' object='xfwm4-screen.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/xfwm4-screen.Plo' tmpdepfile='$(DEPDIR)/xfwm4-screen.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-screen.lo `test -f 'screen.c' || echo '$(srcdir)/'`screen.c + xfwm4-session.o: session.c @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -MT xfwm4-session.o -MD -MP -MF "$(DEPDIR)/xfwm4-session.Tpo" -c -o xfwm4-session.o `test -f 'session.c' || echo '$(srcdir)/'`session.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfwm4-session.Tpo" "$(DEPDIR)/xfwm4-session.Po"; else rm -f "$(DEPDIR)/xfwm4-session.Tpo"; exit 1; fi diff --git a/src/client.c b/src/client.c index 3d1f35ac5..27f0a1322 100644 --- a/src/client.c +++ b/src/client.c @@ -71,7 +71,7 @@ /* Useful macros */ #define ACCEPT_INPUT(wmhints) \ - (!(params.focus_hint) || \ + (!(screen_info->params->focus_hint) || \ ((!(wmhints) || \ ((wmhints) && !(wmhints->flags & InputHint)) || \ ((wmhints) && (wmhints->flags & InputHint) && (wmhints->input))))) @@ -103,7 +103,7 @@ struct _MoveResizeData int oldw, oldh; int corner; Poswin *poswin; - myWindow tmp_event_window; + xfwmWindow tmp_event_window; Client *c; }; @@ -122,9 +122,13 @@ struct _ButtonPressData Client *c; }; -Client *clients = NULL; -unsigned int client_count = 0; -unsigned long client_serial = 0; +Display * +clientGetXDisplay (Client * c) +{ + g_return_val_if_fail (c, NULL); + + return myScreenGetXDisplay (c->screen_info); +} /* * The following two functions are to limit the number of updates @@ -181,8 +185,8 @@ clientInstallColormaps (Client * c) { for (i = c->ncmap - 1; i >= 0; i--) { - XGetWindowAttributes (c->md->dpy, c->cmap_windows[i], &attr); - XInstallColormap (c->md->dpy, attr.colormap); + XGetWindowAttributes (clientGetXDisplay (c), c->cmap_windows[i], &attr); + XInstallColormap (clientGetXDisplay (c), attr.colormap); if (c->cmap_windows[i] == c->window) { installed = TRUE; @@ -191,7 +195,7 @@ clientInstallColormaps (Client * c) } if ((!installed) && (c->cmap)) { - XInstallColormap (c->md->dpy, c->cmap); + XInstallColormap (clientGetXDisplay (c), c->cmap); } } @@ -207,7 +211,7 @@ clientUpdateColormaps (Client * c) { XFree (c->cmap_windows); } - if (!XGetWMColormapWindows (c->md->dpy, c->window, &c->cmap_windows, &c->ncmap)) + if (!XGetWMColormapWindows (clientGetXDisplay (c), c->window, &c->cmap_windows, &c->ncmap)) { c->ncmap = 0; } @@ -215,18 +219,18 @@ clientUpdateColormaps (Client * c) } void -clientUpdateAllFrames (ScreenData *md, int mask) +clientUpdateAllFrames (ScreenInfo *screen_info, int mask) { Client *c; int i; XWindowChanges wc; - g_return_if_fail (md != NULL); + g_return_if_fail (screen_info != NULL); TRACE ("entering clientRedrawAllFrames"); - XGrabPointer (md->dpy, md->gnome_win, FALSE, EnterWindowMask, GrabModeAsync, + XGrabPointer (myScreenGetXDisplay (screen_info), screen_info->gnome_win, FALSE, EnterWindowMask, GrabModeAsync, GrabModeAsync, None, None, GDK_CURRENT_TIME); - for (c = clients, i = 0; i < client_count; c = c->next, i++) + for (c = screen_info->clients, i = 0; i < screen_info->client_count; c = c->next, i++) { if (mask & UPDATE_KEYGRABS) { @@ -252,68 +256,72 @@ clientUpdateAllFrames (ScreenData *md, int mask) frameDraw (c, FALSE, FALSE); } } - XUngrabPointer (md->dpy, GDK_CURRENT_TIME); + XUngrabPointer (myScreenGetXDisplay (screen_info), GDK_CURRENT_TIME); } void clientGrabKeys (Client * c) { + ScreenInfo *screen_info; + g_return_if_fail (c != NULL); TRACE ("entering clientGrabKeys"); TRACE ("grabbing keys for client \"%s\" (0x%lx)", c->name, c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_UP], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_DOWN], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_LEFT], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_RIGHT], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_RESIZE_UP], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_RESIZE_DOWN], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_RESIZE_LEFT], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_RESIZE_RIGHT], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_CLOSE_WINDOW], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_HIDE_WINDOW], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MAXIMIZE_WINDOW], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MAXIMIZE_VERT], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MAXIMIZE_HORIZ], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_SHADE_WINDOW], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_STICK_WINDOW], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_RAISE_WINDOW], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_LOWER_WINDOW], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_CYCLE_WINDOWS], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_NEXT_WORKSPACE], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_PREV_WORKSPACE], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_ADD_WORKSPACE], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_DEL_WORKSPACE], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_WORKSPACE_1], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_WORKSPACE_2], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_WORKSPACE_3], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_WORKSPACE_4], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_WORKSPACE_5], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_WORKSPACE_6], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_WORKSPACE_7], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_WORKSPACE_8], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_WORKSPACE_9], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_NEXT_WORKSPACE], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_PREV_WORKSPACE], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_1], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_2], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_3], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_4], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_5], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_6], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_7], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_8], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_9], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_SHORTCUT_1], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_SHORTCUT_2], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_SHORTCUT_3], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_SHORTCUT_4], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_SHORTCUT_5], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_SHORTCUT_6], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_SHORTCUT_7], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_SHORTCUT_8], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_SHORTCUT_9], c->window); - grabKey (c->md->dpy, ¶ms.keys[KEY_SHORTCUT_10], c->window); + screen_info = c->screen_info; + + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_UP], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_DOWN], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_LEFT], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_RIGHT], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_RESIZE_UP], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_RESIZE_DOWN], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_RESIZE_LEFT], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_RESIZE_RIGHT], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_CLOSE_WINDOW], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_HIDE_WINDOW], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MAXIMIZE_WINDOW], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MAXIMIZE_VERT], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MAXIMIZE_HORIZ], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHADE_WINDOW], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_STICK_WINDOW], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_RAISE_WINDOW], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_LOWER_WINDOW], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_CYCLE_WINDOWS], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_NEXT_WORKSPACE], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_PREV_WORKSPACE], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_ADD_WORKSPACE], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_DEL_WORKSPACE], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_1], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_2], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_3], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_4], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_5], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_6], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_7], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_8], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_9], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_NEXT_WORKSPACE], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_PREV_WORKSPACE], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_1], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_2], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_3], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_4], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_5], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_6], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_7], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_8], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_9], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHORTCUT_1], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHORTCUT_2], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHORTCUT_3], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHORTCUT_4], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHORTCUT_5], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHORTCUT_6], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHORTCUT_7], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHORTCUT_8], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHORTCUT_9], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHORTCUT_10], c->window); } void @@ -323,7 +331,7 @@ clientUngrabKeys (Client * c) TRACE ("entering clientUngrabKeys"); TRACE ("ungrabing keys for client \"%s\" (0x%lx)", c->name, c->window); - ungrabKeys (c->md->dpy, c->window); + ungrabKeys (clientGetXDisplay (c), c->window); } void @@ -333,9 +341,9 @@ clientGrabButtons (Client * c) TRACE ("entering clientGrabButtons"); TRACE ("grabbing buttons for client \"%s\" (0x%lx)", c->name, c->window); - grabButton(c->md->dpy, Button1, AltMask, c->window); - grabButton(c->md->dpy, Button2, AltMask, c->window); - grabButton(c->md->dpy, Button3, AltMask, c->window); + grabButton(clientGetXDisplay (c), Button1, AltMask, c->window); + grabButton(clientGetXDisplay (c), Button2, AltMask, c->window); + grabButton(clientGetXDisplay (c), Button3, AltMask, c->window); } void @@ -345,7 +353,7 @@ clientUngrabButtons (Client * c) TRACE ("entering clientUngrabButtons"); TRACE ("grabbing buttons for client \"%s\" (0x%lx)", c->name, c->window); - XUngrabButton (c->md->dpy, AnyButton, AnyModifier, c->window); + XUngrabButton (clientGetXDisplay (c), AnyButton, AnyModifier, c->window); } void @@ -672,9 +680,9 @@ clientConfigure (Client * c, XWindowChanges * wc, int mask, unsigned short flags clientConstrainPos (c, TRUE); } - XMoveResizeWindow (c->md->dpy, c->frame, frameX (c), frameY (c), + XMoveResizeWindow (clientGetXDisplay (c), c->frame, frameX (c), frameY (c), frameWidth (c), frameHeight (c)); - XMoveResizeWindow (c->md->dpy, c->window, frameLeft (c), frameTop (c), + XMoveResizeWindow (clientGetXDisplay (c), c->window, frameLeft (c), frameTop (c), c->width, c->height); if (resized || (flags & CFG_FORCE_REDRAW)) @@ -688,7 +696,7 @@ clientConfigure (Client * c, XWindowChanges * wc, int mask, unsigned short flags { DBG ("Sending ConfigureNotify"); ce.type = ConfigureNotify; - ce.display = c->md->dpy; + ce.display = clientGetXDisplay (c); ce.event = c->window; ce.window = c->window; ce.x = c->x; @@ -698,7 +706,7 @@ clientConfigure (Client * c, XWindowChanges * wc, int mask, unsigned short flags ce.border_width = 0; ce.above = c->frame; ce.override_redirect = FALSE; - XSendEvent (c->md->dpy, c->window, FALSE, StructureNotifyMask, + XSendEvent (clientGetXDisplay (c), c->window, FALSE, StructureNotifyMask, (XEvent *) & ce); } } @@ -715,7 +723,7 @@ clientGetMWMHints (Client * c, gboolean update) TRACE ("entering clientGetMWMHints client \"%s\" (0x%lx)", c->name, c->window); - mwm_hints = getMotifHints (c->md->dpy, c->window); + mwm_hints = getMotifHints (clientGetXDisplay (c), c->window); if (mwm_hints) { if (mwm_hints->flags & MWM_HINTS_DECORATIONS) @@ -824,7 +832,7 @@ clientGetWMNormalHints (Client * c, gboolean update) c->size = XAllocSizeHints (); } g_assert (c->size); - if (!XGetWMNormalHints (c->md->dpy, c->window, c->size, &dummy)) + if (!XGetWMNormalHints (clientGetXDisplay (c), c->window, c->size, &dummy)) { c->size->flags = 0; } @@ -970,7 +978,7 @@ clientGetWMProtocols (Client * c) TRACE ("entering clientGetWMProtocols client \"%s\" (0x%lx)", c->name, c->window); - wm_protocols_flags = getWMProtocols (c->md->dpy, c->window); + wm_protocols_flags = getWMProtocols (clientGetXDisplay (c), c->window); FLAG_SET (c->wm_flags, (wm_protocols_flags & WM_PROTOCOLS_DELETE_WINDOW) ? WM_FLAG_DELETE : 0); @@ -1183,8 +1191,7 @@ clientUpdateWinState (Client * c, XClientMessageEvent * ev) else if ((action & WIN_STATE_MAXIMIZED) && FLAG_TEST (c->flags, CLIENT_FLAG_HAS_MAXIMIZE)) { - TRACE - ("client \"%s\" (0x%lx) has received a win_state/maximize event", + TRACE ("client \"%s\" (0x%lx) has received a win_state/maximize event", c->name, c->window); clientToggleMaximized (c, add_remove); } @@ -1193,14 +1200,20 @@ clientUpdateWinState (Client * c, XClientMessageEvent * ev) static gboolean clientCheckShape (Client * c) { + ScreenInfo *screen_info; + DisplayInfo *display_info; int xws, yws, xbs, ybs; unsigned wws, hws, wbs, hbs; int boundingShaped, clipShaped; g_return_val_if_fail (c != NULL, FALSE); - if (c->md->shape) + + screen_info = c->screen_info; + display_info = screen_info->display_info; + + if (display_info->shape) { - XShapeQueryExtents (c->md->dpy, c->window, &boundingShaped, &xws, &yws, &wws, + XShapeQueryExtents (display_info->dpy, c->window, &boundingShaped, &xws, &yws, &wws, &hws, &clipShaped, &xbs, &ybs, &wbs, &hbs); return (boundingShaped != 0); } @@ -1212,14 +1225,14 @@ clientClearPixmapCache (Client * c) { g_return_if_fail (c != NULL); - myPixmapFree (&c->pm_cache.pm_title[ACTIVE]); - myPixmapFree (&c->pm_cache.pm_title[INACTIVE]); - myPixmapFree (&c->pm_cache.pm_sides[SIDE_LEFT][ACTIVE]); - myPixmapFree (&c->pm_cache.pm_sides[SIDE_LEFT][INACTIVE]); - myPixmapFree (&c->pm_cache.pm_sides[SIDE_RIGHT][ACTIVE]); - myPixmapFree (&c->pm_cache.pm_sides[SIDE_RIGHT][INACTIVE]); - myPixmapFree (&c->pm_cache.pm_sides[SIDE_BOTTOM][ACTIVE]); - myPixmapFree (&c->pm_cache.pm_sides[SIDE_BOTTOM][INACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_title[ACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_title[INACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_LEFT][ACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_LEFT][INACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_RIGHT][ACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_RIGHT][INACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_BOTTOM][ACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_BOTTOM][INACTIVE]); } void @@ -1227,15 +1240,16 @@ clientGetUserTime (Client * c) { g_return_if_fail (c != NULL); - if (getNetWMUserTime (c->md->dpy, c->window, &c->user_time)) + if (getNetWMUserTime (clientGetXDisplay (c), c->window, &c->user_time)) { FLAG_SET (c->flags, CLIENT_FLAG_HAS_USER_TIME); } } void -clientFrame (ScreenData *md, Window w, gboolean recapture) +clientFrame (DisplayInfo *display_info, Window w, gboolean recapture) { + ScreenInfo *screen_info; XWindowAttributes attr; XWindowChanges wc; XSetWindowAttributes attributes; @@ -1244,29 +1258,38 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) int i; g_return_if_fail (w != None); - g_return_if_fail (md != NULL); + g_return_if_fail (display_info != NULL); TRACE ("entering clientFrame"); TRACE ("framing client (0x%lx)", w); - if (w == md->gnome_win) + gdk_error_trap_push (); + if (checkKdeSystrayWindow (display_info->dpy, w) && (screen_info->systray != None)) { - TRACE ("Not managing our own window"); + TRACE ("Not managing KDE systray windows"); + sendSystrayReqDock (display_info->dpy, w, screen_info->systray); + gdk_error_trap_pop (); return; } - gdk_error_trap_push (); - if (checkKdeSystrayWindow (md->dpy, w) && (md->systray != None)) + if (!XGetWindowAttributes (display_info->dpy, w, &attr)) { - TRACE ("Not managing KDE systray windows"); - sendSystrayReqDock (md->dpy, w, md->systray); + TRACE ("Cannot get window attributes"); + gdk_error_trap_pop (); + return; + } + + screen_info = myDisplayGetScreenFromRoot (display_info, attr.root); + if (!screen_info) + { + TRACE ("Cannot determine screen info from windows"); gdk_error_trap_pop (); return; } - if (!XGetWindowAttributes (md->dpy, w, &attr)) + if (w == screen_info->gnome_win) { - TRACE ("Cannot get window attributes"); + TRACE ("Not managing our own window"); gdk_error_trap_pop (); return; } @@ -1278,7 +1301,7 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) return; } - c = g_new(Client, 1); + c = g_new0 (Client, 1); if (!c) { TRACE ("Cannot allocate memory for the window structure"); @@ -1287,12 +1310,12 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) } c->window = w; - c->md = md; - c->serial = client_serial++; + c->screen_info = screen_info; + c->serial = screen_info->client_serial++; - getWindowName (md->dpy, c->window, &c->name); + getWindowName (display_info->dpy, c->window, &c->name); TRACE ("name \"%s\"", c->name); - getTransientFor (md->dpy, md->screen, c->window, &c->transient_for); + getTransientFor (display_info->dpy, screen_info->screen, c->window, &c->transient_for); /* Initialize structure */ c->size = NULL; @@ -1338,15 +1361,19 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) c->button_pressed[i] = FALSE; } - if (!XGetWMColormapWindows (md->dpy, c->window, &c->cmap_windows, &c->ncmap)) + if (!XGetWMColormapWindows (display_info->dpy, c->window, &c->cmap_windows, &c->ncmap)) { c->ncmap = 0; } + + /* First map is used to bypass the caching system at first map */ + c->first_map = TRUE; + c->class.res_name = NULL; c->class.res_class = NULL; - XGetClassHint (md->dpy, w, &c->class); - c->wmhints = XGetWMHints (md->dpy, c->window); + XGetClassHint (display_info->dpy, w, &c->class); + c->wmhints = XGetWMHints (display_info->dpy, c->window); c->group_leader = None; if (c->wmhints) { @@ -1355,10 +1382,10 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) c->group_leader = c->wmhints->window_group; } } - c->client_leader = getClientLeader (md->dpy, c->window); + c->client_leader = getClientLeader (display_info->dpy, c->window); #ifdef HAVE_LIBSTARTUP_NOTIFICATION c->startup_id = NULL; - getWindowStartupId (md->dpy, c->window, &c->startup_id); + getWindowStartupId (display_info->dpy, c->window, &c->startup_id); #endif /* HAVE_LIBSTARTUP_NOTIFICATION */ TRACE ("\"%s\" (0x%lx) initial map_state = %s", c->name, c->window, @@ -1376,7 +1403,7 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) * Unset the "mapped" flag to avoid a transition to * withdrawn state. */ - XUnmapWindow (md->dpy, c->window); + XUnmapWindow (display_info->dpy, c->window); FLAG_SET (c->flags, CLIENT_FLAG_MAP_PENDING); } @@ -1389,9 +1416,9 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) clientGetWMProtocols (c); clientGetMWMHints (c, FALSE); - getHint (md->dpy, w, win_hints, &c->win_hints); - getHint (md->dpy, w, win_state, &c->win_state); - if (!getHint (md->dpy, w, win_layer, &c->win_layer)) + getHint (display_info->dpy, w, win_hints, &c->win_hints); + getHint (display_info->dpy, w, win_state, &c->win_state); + if (!getHint (display_info->dpy, w, win_layer, &c->win_layer)) { c->win_layer = WIN_LAYER_NORMAL; } @@ -1413,8 +1440,8 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) c->legacy_fullscreen = FALSE; /* Fullscreen for older legacy apps */ if ((c->x == 0) && (c->y == 0) && - (c->width == gdk_screen_get_width (md->gscr)) && - (c->height == gdk_screen_get_height (md->gscr)) && + (c->width == gdk_screen_get_width (screen_info->gscr)) && + (c->height == gdk_screen_get_height (screen_info->gscr)) && !FLAG_TEST(c->flags, CLIENT_FLAG_HAS_BORDER) && (c->win_layer == WIN_LAYER_NORMAL) && (c->type == WINDOW_NORMAL)) @@ -1435,7 +1462,8 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) } } - /* We must call clientApplyInitialState() after having placed the + /* + We must call clientApplyInitialState() after having placed the window so that the inital position values are correctly set if the inital state is maximize or fullscreen */ @@ -1443,15 +1471,15 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) if (!recapture) { - myXGrabServer (c->md); + myXGrabServer (c->screen_info); } - if (!myCheckWindow(c->md, w)) + if (!checkWindowOnRoot(c->screen_info, w)) { TRACE ("Client has vanished"); clientFree(c); if (!recapture) { - myXUngrabServer (c->md); + myXUngrabServer (c->screen_info); } gdk_error_trap_pop (); return; @@ -1460,25 +1488,25 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) valuemask = CWEventMask; attributes.event_mask = (FRAME_EVENT_MASK | POINTER_EVENT_MASK); c->frame = - XCreateWindow (md->dpy, md->xroot, frameX (c), frameY (c), frameWidth (c), + XCreateWindow (display_info->dpy, screen_info->xroot, frameX (c), frameY (c), frameWidth (c), frameHeight (c), 0, CopyFromParent, InputOutput, CopyFromParent, valuemask, &attributes); - XSetWindowBorderWidth (md->dpy, c->window, 0); - XReparentWindow (md->dpy, c->window, c->frame, frameLeft (c), frameTop (c)); + XSetWindowBorderWidth (display_info->dpy, c->window, 0); + XReparentWindow (display_info->dpy, c->window, c->frame, frameLeft (c), frameTop (c)); valuemask = CWEventMask; attributes.event_mask = (CLIENT_EVENT_MASK); - XChangeWindowAttributes (md->dpy, c->window, valuemask, &attributes); - if (md->shape) + XChangeWindowAttributes (display_info->dpy, c->window, valuemask, &attributes); + if (display_info->shape) { - XShapeSelectInput (md->dpy, c->window, ShapeNotifyMask); + XShapeSelectInput (display_info->dpy, c->window, ShapeNotifyMask); } if (!recapture) { /* Window is reparented now, so we can safely release the grab * on the server */ - myXUngrabServer (md); + myXUngrabServer (screen_info); } clientAddToList (c); @@ -1487,35 +1515,35 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) clientGrabButtons(c); /* Initialize pixmap caching */ - myPixmapInit (&c->pm_cache.pm_title[ACTIVE]); - myPixmapInit (&c->pm_cache.pm_title[INACTIVE]); - myPixmapInit (&c->pm_cache.pm_sides[SIDE_LEFT][ACTIVE]); - myPixmapInit (&c->pm_cache.pm_sides[SIDE_LEFT][INACTIVE]); - myPixmapInit (&c->pm_cache.pm_sides[SIDE_RIGHT][ACTIVE]); - myPixmapInit (&c->pm_cache.pm_sides[SIDE_RIGHT][INACTIVE]); - myPixmapInit (&c->pm_cache.pm_sides[SIDE_BOTTOM][ACTIVE]); - myPixmapInit (&c->pm_cache.pm_sides[SIDE_BOTTOM][INACTIVE]); + xfwmPixmapInit (screen_info, &c->pm_cache.pm_title[ACTIVE]); + xfwmPixmapInit (screen_info, &c->pm_cache.pm_title[INACTIVE]); + xfwmPixmapInit (screen_info, &c->pm_cache.pm_sides[SIDE_LEFT][ACTIVE]); + xfwmPixmapInit (screen_info, &c->pm_cache.pm_sides[SIDE_LEFT][INACTIVE]); + xfwmPixmapInit (screen_info, &c->pm_cache.pm_sides[SIDE_RIGHT][ACTIVE]); + xfwmPixmapInit (screen_info, &c->pm_cache.pm_sides[SIDE_RIGHT][INACTIVE]); + xfwmPixmapInit (screen_info, &c->pm_cache.pm_sides[SIDE_BOTTOM][ACTIVE]); + xfwmPixmapInit (screen_info, &c->pm_cache.pm_sides[SIDE_BOTTOM][INACTIVE]); c->pm_cache.previous_width = -1; c->pm_cache.previous_height = -1; - myWindowCreate (md->dpy, c->frame, &c->sides[SIDE_LEFT], - md->resize_cursor[4 + SIDE_LEFT]); - myWindowCreate (md->dpy, c->frame, &c->sides[SIDE_RIGHT], - md->resize_cursor[4 + SIDE_RIGHT]); - myWindowCreate (md->dpy, c->frame, &c->sides[SIDE_BOTTOM], - md->resize_cursor[4 + SIDE_BOTTOM]); - myWindowCreate (md->dpy, c->frame, &c->corners[CORNER_BOTTOM_LEFT], - md->resize_cursor[CORNER_BOTTOM_LEFT]); - myWindowCreate (md->dpy, c->frame, &c->corners[CORNER_BOTTOM_RIGHT], - md->resize_cursor[CORNER_BOTTOM_RIGHT]); - myWindowCreate (md->dpy, c->frame, &c->corners[CORNER_TOP_LEFT], - md->resize_cursor[CORNER_TOP_LEFT]); - myWindowCreate (md->dpy, c->frame, &c->corners[CORNER_TOP_RIGHT], - md->resize_cursor[CORNER_TOP_RIGHT]); - myWindowCreate (md->dpy, c->frame, &c->title, None); + xfwmWindowCreate (display_info->dpy, c->frame, &c->sides[SIDE_LEFT], + myDisplayGetCursorResize(c->screen_info->display_info, 4 + SIDE_LEFT)); + xfwmWindowCreate (display_info->dpy, c->frame, &c->sides[SIDE_RIGHT], + myDisplayGetCursorResize(c->screen_info->display_info, 4 + SIDE_RIGHT)); + xfwmWindowCreate (display_info->dpy, c->frame, &c->sides[SIDE_BOTTOM], + myDisplayGetCursorResize(c->screen_info->display_info, 4 + SIDE_BOTTOM)); + xfwmWindowCreate (display_info->dpy, c->frame, &c->corners[CORNER_BOTTOM_LEFT], + myDisplayGetCursorResize(c->screen_info->display_info, CORNER_BOTTOM_LEFT)); + xfwmWindowCreate (display_info->dpy, c->frame, &c->corners[CORNER_BOTTOM_RIGHT], + myDisplayGetCursorResize(c->screen_info->display_info, CORNER_BOTTOM_RIGHT)); + xfwmWindowCreate (display_info->dpy, c->frame, &c->corners[CORNER_TOP_LEFT], + myDisplayGetCursorResize(c->screen_info->display_info, CORNER_TOP_LEFT)); + xfwmWindowCreate (display_info->dpy, c->frame, &c->corners[CORNER_TOP_RIGHT], + myDisplayGetCursorResize(c->screen_info->display_info, CORNER_TOP_RIGHT)); + xfwmWindowCreate (display_info->dpy, c->frame, &c->title, None); for (i = 0; i < BUTTON_COUNT; i++) { - myWindowCreate (md->dpy, c->frame, &c->buttons[i], None); + xfwmWindowCreate (display_info->dpy, c->frame, &c->buttons[i], None); } TRACE ("now calling configure for the new window \"%s\" (0x%lx)", c->name, c->window); @@ -1524,7 +1552,7 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) wc.width = c->width; wc.height = c->height; clientConfigure (c, &wc, CWX | CWY | CWHeight | CWWidth, CFG_NOTIFY | CFG_FORCE_REDRAW); - clientApplyStackList (c->md); + clientApplyStackList (c->screen_info); clientSetLastRaise (c); /* Clear time counter */ @@ -1532,11 +1560,9 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) /* net_wm_user_time standard */ clientGetUserTime (c); - /* First map is used to bypass the caching system at first map */ - c->first_map = TRUE; if (!FLAG_TEST (c->flags, CLIENT_FLAG_HIDDEN)) { - if ((c->win_workspace == md->current_ws) || + if ((c->win_workspace == screen_info->current_ws) || FLAG_TEST(c->flags, CLIENT_FLAG_STICKY)) { clientShow (c, TRUE); @@ -1552,13 +1578,13 @@ clientFrame (ScreenData *md, Window w, gboolean recapture) } else { - setWMState (md->dpy, c->window, IconicState); + setWMState (display_info->dpy, c->window, IconicState); clientSetNetState (c); } gdk_error_trap_pop (); DBG ("client \"%s\" (0x%lx) is now managed", c->name, c->window); - DBG ("client_count=%d", client_count); + DBG ("client_count=%d", screen_info->client_count); } void @@ -1577,9 +1603,9 @@ clientUnframe (Client * c, gboolean remap) { clientClearFocus (); } - if (clientGetLastRaise () == c) + if (clientGetLastRaise (c->screen_info) == c) { - clientClearLastRaise (); + clientClearLastRaise (c->screen_info); } if (clientGetLastGrab () == c) { @@ -1587,106 +1613,102 @@ clientUnframe (Client * c, gboolean remap) } clientRemoveFromList (c); - myXGrabServer (c->md); + myXGrabServer (c->screen_info); gdk_error_trap_push (); clientUngrabKeys (c); clientGrabButtons (c); - XUnmapWindow (c->md->dpy, c->window); - XUnmapWindow (c->md->dpy, c->frame); + XUnmapWindow (clientGetXDisplay (c), c->window); + XUnmapWindow (clientGetXDisplay (c), c->frame); clientGravitate (c, REMOVE); - XSelectInput (c->md->dpy, c->window, NoEventMask); - reparented = XCheckTypedWindowEvent (c->md->dpy, c->window, ReparentNotify, &ev); + XSelectInput (clientGetXDisplay (c), c->window, NoEventMask); + reparented = XCheckTypedWindowEvent (clientGetXDisplay (c), c->window, ReparentNotify, &ev); if (remap || !reparented) { - XReparentWindow (c->md->dpy, c->window, c->md->xroot, c->x, c->y); - XSetWindowBorderWidth (c->md->dpy, c->window, c->border_width); + XReparentWindow (clientGetXDisplay (c), c->window, c->screen_info->xroot, c->x, c->y); + XSetWindowBorderWidth (clientGetXDisplay (c), c->window, c->border_width); if (remap) { - XMapWindow (c->md->dpy, c->window); + XMapWindow (clientGetXDisplay (c), c->window); } else { - setWMState (c->md->dpy, c->window, WithdrawnState); + setWMState (clientGetXDisplay (c), c->window, WithdrawnState); } } if (!remap) { - XDeleteProperty (c->md->dpy, c->window, net_wm_state); - XDeleteProperty (c->md->dpy, c->window, win_state); - XDeleteProperty (c->md->dpy, c->window, net_wm_desktop); - XDeleteProperty (c->md->dpy, c->window, win_workspace); - XDeleteProperty (c->md->dpy, c->window, net_wm_allowed_actions); + XDeleteProperty (clientGetXDisplay (c), c->window, net_wm_state); + XDeleteProperty (clientGetXDisplay (c), c->window, win_state); + XDeleteProperty (clientGetXDisplay (c), c->window, net_wm_desktop); + XDeleteProperty (clientGetXDisplay (c), c->window, win_workspace); + XDeleteProperty (clientGetXDisplay (c), c->window, net_wm_allowed_actions); } - myWindowDelete (&c->title); - myWindowDelete (&c->sides[SIDE_LEFT]); - myWindowDelete (&c->sides[SIDE_RIGHT]); - myWindowDelete (&c->sides[SIDE_BOTTOM]); - myWindowDelete (&c->sides[CORNER_BOTTOM_LEFT]); - myWindowDelete (&c->sides[CORNER_BOTTOM_RIGHT]); - myWindowDelete (&c->sides[CORNER_TOP_LEFT]); - myWindowDelete (&c->sides[CORNER_TOP_RIGHT]); + xfwmWindowDelete (&c->title); + xfwmWindowDelete (&c->sides[SIDE_LEFT]); + xfwmWindowDelete (&c->sides[SIDE_RIGHT]); + xfwmWindowDelete (&c->sides[SIDE_BOTTOM]); + xfwmWindowDelete (&c->sides[CORNER_BOTTOM_LEFT]); + xfwmWindowDelete (&c->sides[CORNER_BOTTOM_RIGHT]); + xfwmWindowDelete (&c->sides[CORNER_TOP_LEFT]); + xfwmWindowDelete (&c->sides[CORNER_TOP_RIGHT]); clientClearPixmapCache (c); for (i = 0; i < BUTTON_COUNT; i++) { - myWindowDelete (&c->buttons[i]); + xfwmWindowDelete (&c->buttons[i]); } - XDestroyWindow (c->md->dpy, c->frame); + XDestroyWindow (clientGetXDisplay (c), c->frame); if (FLAG_TEST (c->flags, CLIENT_FLAG_HAS_STRUT)) { - workspaceUpdateArea (c->md); + workspaceUpdateArea (c->screen_info); } - myXUngrabServer (c->md); + myXUngrabServer (c->screen_info); gdk_error_trap_pop (); clientFree (c); } void -clientFrameAll (ScreenData *md) +clientFrameAll (ScreenInfo *screen_info) { unsigned int count, i; - myWindow shield; + xfwmWindow shield; Window w1, w2, *wins = NULL; XWindowAttributes attr; TRACE ("entering clientFrameAll"); - /* Since this fn is called at startup, it's safe to initialize some vars here */ - client_count = 0; - clients = NULL; - - clientSetFocus (md, NULL, GDK_CURRENT_TIME, NO_FOCUS_FLAG); - myWindowTemp (md->dpy, md->xroot, &shield, 0, 0, - gdk_screen_get_width (md->gscr), - gdk_screen_get_height (md->gscr), + clientSetFocus (screen_info, NULL, GDK_CURRENT_TIME, NO_FOCUS_FLAG); + xfwmWindowTemp (myScreenGetXDisplay (screen_info), screen_info->xroot, &shield, 0, 0, + gdk_screen_get_width (screen_info->gscr), + gdk_screen_get_height (screen_info->gscr), EnterWindowMask); - XSync (md->dpy, FALSE); - myXGrabServer (md); - XQueryTree (md->dpy, md->xroot, &w1, &w2, &wins, &count); + XSync (myScreenGetXDisplay (screen_info), FALSE); + myXGrabServer (screen_info); + XQueryTree (myScreenGetXDisplay (screen_info), screen_info->xroot, &w1, &w2, &wins, &count); for (i = 0; i < count; i++) { - XGetWindowAttributes (md->dpy, wins[i], &attr); - if ((!(attr.override_redirect)) && (attr.map_state == IsViewable)) + XGetWindowAttributes (myScreenGetXDisplay (screen_info), wins[i], &attr); + if ((!(attr.override_redirect)) && (attr.map_state == IsViewable) && (attr.root == screen_info->xroot)) { - clientFrame (md, wins[i], TRUE); + clientFrame (screen_info->display_info, wins[i], TRUE); } } if (wins) { XFree (wins); } - clientFocusTop (md, WIN_LAYER_NORMAL); - myWindowDelete (&shield); - myXUngrabServer (md); - XSync (md->dpy, FALSE); + clientFocusTop (screen_info, WIN_LAYER_NORMAL); + xfwmWindowDelete (&shield); + myXUngrabServer (screen_info); + XSync (myScreenGetXDisplay (screen_info), FALSE); } void -clientUnframeAll (ScreenData *md) +clientUnframeAll (ScreenInfo *screen_info) { Client *c; unsigned int count, i; @@ -1694,20 +1716,20 @@ clientUnframeAll (ScreenData *md) TRACE ("entering clientUnframeAll"); - clientSetFocus (md, NULL, GDK_CURRENT_TIME, FOCUS_IGNORE_MODAL); - XSync (md->dpy, FALSE); - myXGrabServer (md); - XQueryTree (md->dpy, md->xroot, &w1, &w2, &wins, &count); + clientSetFocus (screen_info, NULL, GDK_CURRENT_TIME, FOCUS_IGNORE_MODAL); + XSync (myScreenGetXDisplay (screen_info), FALSE); + myXGrabServer (screen_info); + XQueryTree (myScreenGetXDisplay (screen_info), screen_info->xroot, &w1, &w2, &wins, &count); for (i = 0; i < count; i++) { - c = clientGetFromWindow (wins[i], FRAME); + c = clientGetFromWindow (screen_info, wins[i], FRAME); if (c) { clientUnframe (c, TRUE); } } - myXUngrabServer (md); - XSync(md->dpy, FALSE); + myXUngrabServer (screen_info); + XSync(myScreenGetXDisplay (screen_info), FALSE); if (wins) { XFree (wins); @@ -1715,7 +1737,7 @@ clientUnframeAll (ScreenData *md) } Client * -clientGetFromWindow (Window w, int mode) +clientGetFromWindow (ScreenInfo *screen_info, Window w, int mode) { Client *c; int i; @@ -1724,7 +1746,7 @@ clientGetFromWindow (Window w, int mode) TRACE ("entering clientGetFromWindow"); TRACE ("looking for (0x%lx)", w); - for (c = clients, i = 0; i < client_count; c = c->next, i++) + for (c = screen_info->clients, i = 0; i < screen_info->client_count; c = c->next, i++) { switch (mode) { @@ -1764,9 +1786,9 @@ clientSetWorkspaceSingle (Client * c, int ws) TRACE ("entering clientSetWorkspaceSingle"); - if (ws > params.workspace_count - 1) + if (ws > c->screen_info->workspace_count - 1) { - ws = params.workspace_count - 1; + ws = c->screen_info->workspace_count - 1; TRACE ("value off limits, using %i instead", ws); } @@ -1775,14 +1797,14 @@ clientSetWorkspaceSingle (Client * c, int ws) TRACE ("setting client \"%s\" (0x%lx) to current_ws %d", c->name, c->window, ws); c->win_workspace = ws; - setHint (c->md->dpy, c->window, win_workspace, ws); + setHint (clientGetXDisplay (c), c->window, win_workspace, ws); if (FLAG_TEST (c->flags, CLIENT_FLAG_STICKY)) { - setHint (c->md->dpy, c->window, net_wm_desktop, (unsigned long) ALL_WORKSPACES); + setHint (clientGetXDisplay (c), c->window, net_wm_desktop, (unsigned long) ALL_WORKSPACES); } else { - setHint (c->md->dpy, c->window, net_wm_desktop, (unsigned long) ws); + setHint (clientGetXDisplay (c), c->window, net_wm_desktop, (unsigned long) ws); } } FLAG_SET (c->flags, CLIENT_FLAG_WORKSPACE_SET); @@ -1817,13 +1839,13 @@ clientSetWorkspace (Client * c, int ws, gboolean manage_mapping) } else { - if (ws == c2->md->current_ws) + if (ws == c2->screen_info->current_ws) { clientShow (c2, FALSE); } else { - clientHide (c2, c2->md->current_ws, FALSE); + clientHide (c2, c2->screen_info->current_ws, FALSE); } } } @@ -1836,22 +1858,22 @@ static void clientShowSingle (Client * c, gboolean change_state) { g_return_if_fail (c != NULL); - myXGrabServer (c->md); - if ((c->win_workspace == c->md->current_ws) + myXGrabServer (c->screen_info); + if ((c->win_workspace == c->screen_info->current_ws) || FLAG_TEST (c->flags, CLIENT_FLAG_STICKY)) { TRACE ("showing client \"%s\" (0x%lx)", c->name, c->window); FLAG_SET (c->flags, CLIENT_FLAG_VISIBLE); - XMapWindow (c->md->dpy, c->frame); - XMapWindow (c->md->dpy, c->window); + XMapWindow (clientGetXDisplay (c), c->frame); + XMapWindow (clientGetXDisplay (c), c->window); } if (change_state) { FLAG_UNSET (c->flags, CLIENT_FLAG_HIDDEN); - setWMState (c->md->dpy, c->window, NormalState); - workspaceUpdateArea (c->md); + setWMState (clientGetXDisplay (c), c->window, NormalState); + workspaceUpdateArea (c->screen_info); } - myXUngrabServer (c->md); + myXUngrabServer (c->screen_info); clientSetNetState (c); } @@ -1886,11 +1908,11 @@ static void clientHideSingle (Client * c, gboolean change_state) { g_return_if_fail (c != NULL); - myXGrabServer (c->md); + myXGrabServer (c->screen_info); TRACE ("hiding client \"%s\" (0x%lx)", c->name, c->window); - clientPassFocus(c->md, c); - XUnmapWindow (c->md->dpy, c->window); - XUnmapWindow (c->md->dpy, c->frame); + clientPassFocus(c->screen_info, c); + XUnmapWindow (clientGetXDisplay (c), c->window); + XUnmapWindow (clientGetXDisplay (c), c->frame); if (FLAG_TEST (c->flags, CLIENT_FLAG_VISIBLE)) { FLAG_UNSET (c->flags, CLIENT_FLAG_VISIBLE); @@ -1899,10 +1921,10 @@ clientHideSingle (Client * c, gboolean change_state) if (change_state) { FLAG_SET (c->flags, CLIENT_FLAG_HIDDEN); - setWMState (c->md->dpy, c->window, IconicState); - workspaceUpdateArea (c->md); + setWMState (clientGetXDisplay (c), c->window, IconicState); + workspaceUpdateArea (c->screen_info); } - myXUngrabServer (c->md); + myXUngrabServer (c->screen_info); clientSetNetState (c); } @@ -1949,11 +1971,15 @@ void clientHideAll (Client * c, int ws) { Client *c2; + ScreenInfo *screen_info; int i; + g_return_if_fail (c != NULL); + TRACE ("entering clientHideAll"); - for (c2 = c->next, i = 0; (c2) && (i < client_count); c2 = c2->next, i++) + screen_info = c->screen_info; + for (c2 = c->next, i = 0; (c2) && (i < screen_info->client_count); c2 = c2->next, i++) { if (CLIENT_CAN_HIDE_WINDOW (c2) && FLAG_TEST (c2->flags, CLIENT_FLAG_HAS_BORDER) @@ -1970,16 +1996,16 @@ clientHideAll (Client * c, int ws) } void -clientToggleShowDesktop (ScreenData *md, gboolean show_desktop) +clientToggleShowDesktop (ScreenInfo *screen_info, gboolean show_desktop) { GList *index; TRACE ("entering clientToggleShowDesktop"); - clientSetFocus (md, NULL, GDK_CURRENT_TIME, FOCUS_IGNORE_MODAL); + clientSetFocus (screen_info, NULL, GDK_CURRENT_TIME, FOCUS_IGNORE_MODAL); if (show_desktop) { - for (index = windows_stack; index; index = g_list_next (index)) + for (index = screen_info->windows_stack; index; index = g_list_next (index)) { Client *c = (Client *) index->data; if (CLIENT_CAN_HIDE_WINDOW (c) @@ -1991,11 +2017,11 @@ clientToggleShowDesktop (ScreenData *md, gboolean show_desktop) } } } - clientFocusTop (md, WIN_LAYER_DESKTOP); + clientFocusTop (screen_info, WIN_LAYER_DESKTOP); } else { - for (index = g_list_last(windows_stack); index; index = g_list_previous (index)) + for (index = g_list_last(screen_info->windows_stack); index; index = g_list_previous (index)) { Client *c = (Client *) index->data; if (FLAG_TEST (c->flags, CLIENT_FLAG_WAS_SHOWN)) @@ -2006,7 +2032,7 @@ clientToggleShowDesktop (ScreenData *md, gboolean show_desktop) } FLAG_UNSET (c->flags, CLIENT_FLAG_WAS_SHOWN); } - clientFocusTop (md, WIN_LAYER_NORMAL); + clientFocusTop (screen_info, WIN_LAYER_NORMAL); } } @@ -2019,7 +2045,7 @@ clientClose (Client * c) if (FLAG_TEST (c->wm_flags, WM_FLAG_DELETE)) { - sendClientMessage (c->md, c->window, wm_protocols, wm_delete_window, GDK_CURRENT_TIME); + sendClientMessage (c->screen_info, c->window, wm_protocols, wm_delete_window, GDK_CURRENT_TIME); } else { @@ -2034,7 +2060,7 @@ clientKill (Client * c) TRACE ("entering clientKill"); TRACE ("killing client \"%s\" (0x%lx)", c->name, c->window); - XKillClient (c->md->dpy, c->window); + XKillClient (clientGetXDisplay (c), c->window); } void @@ -2046,7 +2072,7 @@ clientEnterContextMenuState (Client * c) if (FLAG_TEST (c->wm_flags, WM_FLAG_CONTEXT_HELP)) { - sendClientMessage (c->md, c->window, wm_protocols, kde_net_wm_context_help, GDK_CURRENT_TIME); + sendClientMessage (c->screen_info, c->window, wm_protocols, kde_net_wm_context_help, GDK_CURRENT_TIME); } } @@ -2069,13 +2095,13 @@ clientSetLayer (Client * c, int l) TRACE ("setting client \"%s\" (0x%lx) layer to %d", c2->name, c2->window, l); c2->win_layer = l; - setHint (c2->md->dpy, c2->window, win_layer, l); + setHint (clientGetXDisplay (c2), c2->window, win_layer, l); } } g_list_free (list_of_windows); - if (clientGetLastRaise () == c) + if (clientGetLastRaise (c->screen_info) == c) { - clientClearLastRaise (); + clientClearLastRaise (c->screen_info); } clientRaise (c); clientPassGrabButton1 (c); @@ -2172,11 +2198,11 @@ clientStick (Client * c, gboolean include_transients) TRACE ("sticking client \"%s\" (0x%lx)", c2->name, c2->window); c2->win_state |= WIN_STATE_STICKY; FLAG_SET (c2->flags, CLIENT_FLAG_STICKY); - setHint (c2->md->dpy, c2->window, net_wm_desktop, + setHint (clientGetXDisplay (c2), c2->window, net_wm_desktop, (unsigned long) ALL_WORKSPACES); clientSetNetState (c2); } - clientSetWorkspace (c, c->md->current_ws, TRUE); + clientSetWorkspace (c, c->screen_info->current_ws, TRUE); g_list_free (list_of_windows); } else @@ -2184,10 +2210,10 @@ clientStick (Client * c, gboolean include_transients) TRACE ("sticking client \"%s\" (0x%lx)", c->name, c->window); c->win_state |= WIN_STATE_STICKY; FLAG_SET (c->flags, CLIENT_FLAG_STICKY); - setHint (c->md->dpy, c->window, net_wm_desktop, + setHint (clientGetXDisplay (c), c->window, net_wm_desktop, (unsigned long) ALL_WORKSPACES); clientSetNetState (c); - clientSetWorkspace (c, c->md->current_ws, TRUE); + clientSetWorkspace (c, c->screen_info->current_ws, TRUE); } } @@ -2210,21 +2236,21 @@ clientUnstick (Client * c, gboolean include_transients) c2 = (Client *) index->data; c2->win_state &= ~WIN_STATE_STICKY; FLAG_UNSET (c2->flags, CLIENT_FLAG_STICKY); - setHint (c2->md->dpy, c2->window, net_wm_desktop, - (unsigned long) c2->md->current_ws); + setHint (clientGetXDisplay (c2), c2->window, net_wm_desktop, + (unsigned long) c2->screen_info->current_ws); clientSetNetState (c2); } - clientSetWorkspace (c, c->md->current_ws, TRUE); + clientSetWorkspace (c, c->screen_info->current_ws, TRUE); g_list_free (list_of_windows); } else { c->win_state &= ~WIN_STATE_STICKY; FLAG_UNSET (c->flags, CLIENT_FLAG_STICKY); - setHint (c->md->dpy, c->window, net_wm_desktop, - (unsigned long) c->md->current_ws); + setHint (clientGetXDisplay (c), c->window, net_wm_desktop, + (unsigned long) c->screen_info->current_ws); clientSetNetState (c); - clientSetWorkspace (c, c->md->current_ws, TRUE); + clientSetWorkspace (c, c->screen_info->current_ws, TRUE); } } @@ -2301,6 +2327,7 @@ clientRemoveMaximizeFlag (Client * c) void clientToggleMaximized (Client * c, int mode) { + ScreenInfo *screen_info; XWindowChanges wc; int cx, cy, full_x, full_y, full_w, full_h; GdkRectangle rect; @@ -2311,6 +2338,8 @@ clientToggleMaximized (Client * c, int mode) TRACE ("maximzing/unmaximizing client \"%s\" (0x%lx)", c->name, c->window); + screen_info = c->screen_info; + if (!CLIENT_CAN_MAXIMIZE_WINDOW (c)) { return; @@ -2319,18 +2348,18 @@ clientToggleMaximized (Client * c, int mode) cx = frameX (c) + (frameWidth (c) / 2); cy = frameY (c) + (frameHeight (c) / 2); - monitor_nbr = gdk_screen_get_monitor_at_point (c->md->gscr, cx, cy); - gdk_screen_get_monitor_geometry (c->md->gscr, monitor_nbr, &rect); + monitor_nbr = gdk_screen_get_monitor_at_point (screen_info->gscr, cx, cy); + gdk_screen_get_monitor_geometry (screen_info->gscr, monitor_nbr, &rect); - full_x = MAX (params.xfwm_margins[LEFT], rect.x); - full_y = MAX (params.xfwm_margins[TOP], rect.y); - full_w = MIN (gdk_screen_get_width (c->md->gscr) - params.xfwm_margins[RIGHT], + full_x = MAX (screen_info->params->xfwm_margins[LEFT], rect.x); + full_y = MAX (screen_info->params->xfwm_margins[TOP], rect.y); + full_w = MIN (gdk_screen_get_width (screen_info->gscr) - screen_info->params->xfwm_margins[RIGHT], rect.x + rect.width) - full_x; - full_h = MIN (gdk_screen_get_height (c->md->gscr) - params.xfwm_margins[BOTTOM], + full_h = MIN (gdk_screen_get_height (screen_info->gscr) - screen_info->params->xfwm_margins[BOTTOM], rect.y + rect.height) - full_y; /* Adjust size to the widest size available, not covering struts */ - clientMaxSpace (&full_x, &full_y, &full_w, &full_h); + clientMaxSpace (screen_info, &full_x, &full_y, &full_w, &full_h); if (mode & WIN_STATE_MAXIMIZED_HORIZ) { @@ -2391,10 +2420,10 @@ clientToggleMaximized (Client * c, int mode) grab focus in focus follow mouse mode. Grab the pointer to avoid these effects */ - XGrabPointer (c->md->dpy, c->md->gnome_win, FALSE, EnterWindowMask, GrabModeAsync, + XGrabPointer (clientGetXDisplay (c), screen_info->gnome_win, FALSE, EnterWindowMask, GrabModeAsync, GrabModeAsync, None, None, GDK_CURRENT_TIME); clientConfigure (c, &wc, CWX | CWY | CWWidth | CWHeight, CFG_NOTIFY); - XUngrabPointer (c->md->dpy, GDK_CURRENT_TIME); + XUngrabPointer (clientGetXDisplay (c), GDK_CURRENT_TIME); } else { @@ -2407,13 +2436,13 @@ clientToggleMaximized (Client * c, int mode) /* Xrandr stuff: on screen size change, make sure all clients are still visible */ void -clientScreenResize(void) +clientScreenResize(ScreenInfo *screen_info) { Client *c = NULL; GList *index, *list_of_windows; XWindowChanges wc; - list_of_windows = clientGetStackList (); + list_of_windows = clientGetStackList (screen_info); if (!list_of_windows) { @@ -2440,12 +2469,12 @@ clientDrawOutline (Client * c) { TRACE ("entering clientDrawOutline"); - XDrawRectangle (c->md->dpy, c->md->xroot, params.box_gc, frameX (c), frameY (c), + XDrawRectangle (clientGetXDisplay (c), c->screen_info->xroot, c->screen_info->box_gc, frameX (c), frameY (c), frameWidth (c) - 1, frameHeight (c) - 1); if (FLAG_TEST_AND_NOT (c->flags, CLIENT_FLAG_HAS_BORDER, CLIENT_FLAG_FULLSCREEN | CLIENT_FLAG_SHADED)) { - XDrawRectangle (c->md->dpy, c->md->xroot, params.box_gc, c->x, c->y, c->width - 1, + XDrawRectangle (clientGetXDisplay (c), c->screen_info->xroot, c->screen_info->box_gc, c->x, c->y, c->width - 1, c->height - 1); } } @@ -2454,14 +2483,14 @@ static void clientSnapPosition (Client * c) { Client *c2; + ScreenInfo *screen_info; int cx, cy, i, delta; int disp_x, disp_y, disp_max_x, disp_max_y; int frame_x, frame_y, frame_height, frame_width; int frame_top, frame_left, frame_right, frame_bottom; int frame_x2, frame_y2; int best_frame_x, best_frame_y; - int best_delta_x = params.snap_width + 1; - int best_delta_y = params.snap_width + 1; + int best_delta_x, best_delta_y; int c_frame_x1, c_frame_x2, c_frame_y1, c_frame_y2; GdkRectangle rect; gint monitor_nbr; @@ -2470,6 +2499,10 @@ clientSnapPosition (Client * c) TRACE ("entering clientSnapPosition"); TRACE ("Snapping client \"%s\" (0x%lx)", c->name, c->window); + screen_info = c->screen_info; + best_delta_x = screen_info->params->snap_width + 1; + best_delta_y = screen_info->params->snap_width + 1; + frame_x = frameX (c); frame_y = frameY (c); frame_height = frameHeight (c); @@ -2487,15 +2520,15 @@ clientSnapPosition (Client * c) best_frame_x = frame_x; best_frame_y = frame_y; - monitor_nbr = gdk_screen_get_monitor_at_point (c->md->gscr, cx, cy); - gdk_screen_get_monitor_geometry (c->md->gscr, monitor_nbr, &rect); + monitor_nbr = gdk_screen_get_monitor_at_point (screen_info->gscr, cx, cy); + gdk_screen_get_monitor_geometry (screen_info->gscr, monitor_nbr, &rect); disp_x = rect.x; disp_y = rect.y; disp_max_x = rect.x + rect.width; disp_max_y = rect.y + rect.height; - if (params.snap_to_border) + if (screen_info->params->snap_to_border) { if (abs (disp_x - frame_x) < abs (disp_max_x - frame_x2)) { @@ -2520,11 +2553,11 @@ clientSnapPosition (Client * c) } } - for (c2 = clients, i = 0; i < client_count; c2 = c2->next, i++) + for (c2 = screen_info->clients, i = 0; i < screen_info->client_count; c2 = c2->next, i++) { if (FLAG_TEST (c2->flags, CLIENT_FLAG_VISIBLE) && (c2 != c) && - (((params.snap_to_windows) && (c2->win_layer == c->win_layer)) - || ((params.snap_to_border) && FLAG_TEST_ALL (c2->flags, CLIENT_FLAG_HAS_STRUT | CLIENT_FLAG_VISIBLE)))) + (((screen_info->params->snap_to_windows) && (c2->win_layer == c->win_layer)) + || ((screen_info->params->snap_to_border) && FLAG_TEST_ALL (c2->flags, CLIENT_FLAG_HAS_STRUT | CLIENT_FLAG_VISIBLE)))) { c_frame_x1 = frameX (c2); c_frame_x2 = c_frame_x1 + frameWidth (c2); @@ -2567,11 +2600,11 @@ clientSnapPosition (Client * c) } } - if (best_delta_x <= params.snap_width) + if (best_delta_x <= screen_info->params->snap_width) { c->x = best_frame_x + frame_left; } - if (best_delta_y <= params.snap_width) + if (best_delta_y <= screen_info->params->snap_width) { c->y = best_frame_y + frame_top; } @@ -2583,39 +2616,43 @@ clientMove_event_filter (XEvent * xevent, gpointer data) static int edge_scroll_x = 0; XfceFilterStatus status = XEV_FILTER_STOP; MoveResizeData *passdata = (MoveResizeData *) data; - Client *c = passdata->c; + Client *c; + ScreenInfo *screen_info; gboolean moving = TRUE; XWindowChanges wc; TRACE ("entering clientMove_event_filter"); + c = passdata->c; + screen_info = c->screen_info; + if (xevent->type == KeyPress) { if (passdata->use_keys) { - if (!passdata->grab && params.box_move) + if (!passdata->grab && screen_info->params->box_move) { - myXGrabServer (c->md); + myXGrabServer (screen_info); passdata->grab = TRUE; clientDrawOutline (c); } - if (params.box_move) + if (screen_info->params->box_move) { clientDrawOutline (c); } - if (xevent->xkey.keycode == params.keys[KEY_MOVE_LEFT].keycode) + if (xevent->xkey.keycode == screen_info->params->keys[KEY_MOVE_LEFT].keycode) { c->x = c->x - 16; } - else if (xevent->xkey.keycode == params.keys[KEY_MOVE_RIGHT].keycode) + else if (xevent->xkey.keycode == screen_info->params->keys[KEY_MOVE_RIGHT].keycode) { c->x = c->x + 16; } - else if (xevent->xkey.keycode == params.keys[KEY_MOVE_UP].keycode) + else if (xevent->xkey.keycode == screen_info->params->keys[KEY_MOVE_UP].keycode) { c->y = c->y - 16; } - else if (xevent->xkey.keycode == params.keys[KEY_MOVE_DOWN].keycode) + else if (xevent->xkey.keycode == screen_info->params->keys[KEY_MOVE_DOWN].keycode) { c->y = c->y + 16; } @@ -2627,7 +2664,7 @@ clientMove_event_filter (XEvent * xevent, gpointer data) poswinSetPosition (passdata->poswin, c); } #endif /* SHOW_POSITION */ - if (params.box_move) + if (screen_info->params->box_move) { clientDrawOutline (c); } @@ -2643,7 +2680,7 @@ clientMove_event_filter (XEvent * xevent, gpointer data) { if (passdata->use_keys) { - if (IsModifierKey (XKeycodeToKeysym (c->md->dpy, xevent->xkey.keycode, 0))) + if (IsModifierKey (XKeycodeToKeysym (clientGetXDisplay (c), xevent->xkey.keycode, 0))) { moving = FALSE; } @@ -2651,7 +2688,7 @@ clientMove_event_filter (XEvent * xevent, gpointer data) } else if (xevent->type == MotionNotify) { - while (XCheckMaskEvent (c->md->dpy, ButtonMotionMask | PointerMotionMask, xevent)) + while (XCheckMaskEvent (clientGetXDisplay (c), ButtonMotionMask | PointerMotionMask, xevent)) ; /* Skip event */ if (xevent->type == ButtonRelease) @@ -2659,27 +2696,26 @@ clientMove_event_filter (XEvent * xevent, gpointer data) moving = FALSE; } - if (!passdata->grab && params.box_move) + if (!passdata->grab && screen_info->params->box_move) { - myXGrabServer (c->md); + myXGrabServer (screen_info); passdata->grab = TRUE; clientDrawOutline (c); } - if (params.box_move) + if (screen_info->params->box_move) { clientDrawOutline (c); } - if ((params.workspace_count > 1) && !clientIsTransientOrModal (c)) + if ((screen_info->workspace_count > 1) && !clientIsTransientOrModal (c)) { - if (params.workspace_count && params.wrap_windows - && params.wrap_resistance) + if (screen_info->workspace_count && screen_info->params->wrap_windows && screen_info->params->wrap_resistance) { int msx, msy, max; msx = xevent->xmotion.x_root; msy = xevent->xmotion.y_root; - max = gdk_screen_get_width (c->md->gscr) - 1; + max = gdk_screen_get_width (screen_info->gscr) - 1; if ((msx == 0) || (msx == max)) { @@ -2689,22 +2725,22 @@ clientMove_event_filter (XEvent * xevent, gpointer data) { edge_scroll_x = 0; } - if (edge_scroll_x > params.wrap_resistance) + if (edge_scroll_x > screen_info->params->wrap_resistance) { edge_scroll_x = 0; if (msx == 0) { - XWarpPointer (c->md->dpy, None, c->md->xroot, 0, 0, 0, 0, + XWarpPointer (clientGetXDisplay (c), None, screen_info->xroot, 0, 0, 0, 0, max - 10, msy); msx = xevent->xmotion.x_root = max - 10; - workspaceSwitch (c->md, c->md->current_ws - 1, c); + workspaceSwitch (screen_info, screen_info->current_ws - 1, c); } else if (msx == max) { - XWarpPointer (c->md->dpy, None, c->md->xroot, + XWarpPointer (clientGetXDisplay (c), None, screen_info->xroot, 0, 0, 0, 0, 10, msy); msx = xevent->xmotion.x_root = 10; - workspaceSwitch (c->md, c->md->current_ws + 1, c); + workspaceSwitch (screen_info, screen_info->current_ws + 1, c); } } } @@ -2722,7 +2758,7 @@ clientMove_event_filter (XEvent * xevent, gpointer data) poswinSetPosition (passdata->poswin, c); } #endif /* SHOW_POSITION */ - if (params.box_move) + if (screen_info->params->box_move) { clientDrawOutline (c); } @@ -2768,6 +2804,8 @@ clientMove_event_filter (XEvent * xevent, gpointer data) void clientMove (Client * c, XEvent * e) { + ScreenInfo *screen_info; + DisplayInfo *display_info; XWindowChanges wc; MoveResizeData passdata; Cursor cursor = None; @@ -2777,15 +2815,18 @@ clientMove (Client * c, XEvent * e) TRACE ("entering clientDoMove"); TRACE ("moving client \"%s\" (0x%lx)", c->name, c->window); + screen_info = c->screen_info; + display_info = screen_info->display_info; + passdata.c = c; passdata.ox = c->x; passdata.oy = c->y; passdata.use_keys = FALSE; passdata.grab = FALSE; - myWindowTemp (c->md->dpy, c->md->xroot, &passdata.tmp_event_window, 0, 0, - gdk_screen_get_width (c->md->gscr), - gdk_screen_get_height (c->md->gscr), + xfwmWindowTemp (display_info->dpy, screen_info->xroot, &passdata.tmp_event_window, 0, 0, + gdk_screen_get_width (screen_info->gscr), + gdk_screen_get_height (screen_info->gscr), ButtonMotionMask | ButtonReleaseMask); if (e->type == KeyPress) @@ -2803,12 +2844,12 @@ clientMove (Client * c, XEvent * e) } else { - cursor = c->md->move_cursor; - getMouseXY (c->md, c->md->xroot, &passdata.mx, &passdata.my); + cursor = myDisplayGetCursorMove(display_info); + getMouseXY (screen_info, screen_info->xroot, &passdata.mx, &passdata.my); } - g1 = XGrabKeyboard (c->md->dpy, MYWINDOW_XWINDOW (passdata.tmp_event_window), + g1 = XGrabKeyboard (display_info->dpy, MYWINDOW_XWINDOW (passdata.tmp_event_window), FALSE, GrabModeAsync, GrabModeAsync, GDK_CURRENT_TIME); - g2 = XGrabPointer (c->md->dpy, MYWINDOW_XWINDOW (passdata.tmp_event_window), + g2 = XGrabPointer (display_info->dpy, MYWINDOW_XWINDOW (passdata.tmp_event_window), FALSE, ButtonMotionMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, cursor, GDK_CURRENT_TIME); @@ -2818,31 +2859,31 @@ clientMove (Client * c, XEvent * e) gdk_beep (); if ((passdata.use_keys) && (g1 == GrabSuccess)) { - XUngrabKeyboard (c->md->dpy, GDK_CURRENT_TIME); + XUngrabKeyboard (display_info->dpy, GDK_CURRENT_TIME); } if (g2 == GrabSuccess) { - XUngrabPointer (c->md->dpy, GDK_CURRENT_TIME); + XUngrabPointer (display_info->dpy, GDK_CURRENT_TIME); } - myWindowDelete (&passdata.tmp_event_window); + xfwmWindowDelete (&passdata.tmp_event_window); return; } #ifdef SHOW_POSITION - passdata.poswin = poswinCreate(c->md->gscr); + passdata.poswin = poswinCreate(screen_info->gscr); poswinSetPosition (passdata.poswin, c); poswinShow (passdata.poswin); #endif /* SHOW_POSITION */ FLAG_SET (c->flags, CLIENT_FLAG_MOVING_RESIZING); TRACE ("entering move loop"); - xfce_push_event_filter (c->md->xfilter, clientMove_event_filter, &passdata); + xfce_push_event_filter (display_info->xfilter, clientMove_event_filter, &passdata); if (passdata.use_keys) { - XPutBackEvent (c->md->dpy, e); + XPutBackEvent (display_info->dpy, e); } gtk_main (); - xfce_pop_event_filter (c->md->xfilter); + xfce_pop_event_filter (display_info->xfilter); TRACE ("leaving move loop"); FLAG_UNSET (c->flags, CLIENT_FLAG_MOVING_RESIZING); #ifdef SHOW_POSITION @@ -2852,7 +2893,7 @@ clientMove (Client * c, XEvent * e) } #endif /* SHOW_POSITION */ - if (passdata.grab && params.box_move) + if (passdata.grab && screen_info->params->box_move) { clientDrawOutline (c); } @@ -2860,13 +2901,13 @@ clientMove (Client * c, XEvent * e) wc.y = c->y; clientConfigure (c, &wc, CWX | CWY, NO_CFG_FLAG); - XUngrabKeyboard (c->md->dpy, GDK_CURRENT_TIME); - XUngrabPointer (c->md->dpy, GDK_CURRENT_TIME); - myWindowDelete (&passdata.tmp_event_window); + XUngrabKeyboard (display_info->dpy, GDK_CURRENT_TIME); + XUngrabPointer (display_info->dpy, GDK_CURRENT_TIME); + xfwmWindowDelete (&passdata.tmp_event_window); - if (passdata.grab && params.box_move) + if (passdata.grab && screen_info->params->box_move) { - myXUngrabServer (c->md); + myXUngrabServer (screen_info); } } @@ -2875,7 +2916,8 @@ clientResize_event_filter (XEvent * xevent, gpointer data) { XfceFilterStatus status = XEV_FILTER_STOP; MoveResizeData *passdata = (MoveResizeData *) data; - Client *c = passdata->c; + Client *c; + ScreenInfo *screen_info; gboolean resizing = TRUE; XWindowChanges wc; int prev_y = 0, prev_x = 0; @@ -2887,6 +2929,10 @@ clientResize_event_filter (XEvent * xevent, gpointer data) gint monitor_nbr; TRACE ("entering clientResize_event_filter"); + + c = passdata->c; + screen_info = c->screen_info; + frame_x = frameX (c); frame_y = frameY (c); frame_height = frameHeight (c); @@ -2899,8 +2945,8 @@ clientResize_event_filter (XEvent * xevent, gpointer data) cx = frame_x + (frame_width / 2); cy = frame_y + (frame_height / 2); - monitor_nbr = gdk_screen_get_monitor_at_point (c->md->gscr, cx, cy); - gdk_screen_get_monitor_geometry (c->md->gscr, monitor_nbr, &rect); + monitor_nbr = gdk_screen_get_monitor_at_point (screen_info->gscr, cx, cy); + gdk_screen_get_monitor_geometry (screen_info->gscr, monitor_nbr, &rect); disp_x = rect.x; disp_y = rect.y; @@ -2927,13 +2973,13 @@ clientResize_event_filter (XEvent * xevent, gpointer data) key_height_inc = ((int) (10 / key_height_inc)) * key_height_inc; } - if (!passdata->grab && params.box_resize) + if (!passdata->grab && screen_info->params->box_resize) { - myXGrabServer (c->md); + myXGrabServer (screen_info); passdata->grab = TRUE; clientDrawOutline (c); } - if (params.box_resize) + if (screen_info->params->box_resize) { clientDrawOutline (c); } @@ -2942,23 +2988,23 @@ clientResize_event_filter (XEvent * xevent, gpointer data) prev_height = c->height; if (!FLAG_TEST (c->flags, CLIENT_FLAG_SHADED) - && (xevent->xkey.keycode == params.keys[KEY_MOVE_UP].keycode)) + && (xevent->xkey.keycode == screen_info->params->keys[KEY_MOVE_UP].keycode)) { c->height = c->height - key_height_inc; corner = 4 + SIDE_BOTTOM; } else if (!FLAG_TEST (c->flags, CLIENT_FLAG_SHADED) - && (xevent->xkey.keycode == params.keys[KEY_MOVE_DOWN].keycode)) + && (xevent->xkey.keycode == screen_info->params->keys[KEY_MOVE_DOWN].keycode)) { c->height = c->height + key_height_inc; corner = 4 + SIDE_BOTTOM; } - else if (xevent->xkey.keycode == params.keys[KEY_MOVE_LEFT].keycode) + else if (xevent->xkey.keycode == screen_info->params->keys[KEY_MOVE_LEFT].keycode) { c->width = c->width - key_width_inc; corner = 4 + SIDE_RIGHT; } - else if (xevent->xkey.keycode == params.keys[KEY_MOVE_RIGHT].keycode) + else if (xevent->xkey.keycode == screen_info->params->keys[KEY_MOVE_RIGHT].keycode) { c->width = c->width + key_width_inc; corner = 4 + SIDE_RIGHT; @@ -2975,12 +3021,12 @@ clientResize_event_filter (XEvent * xevent, gpointer data) else { if ((c->x + c->width < disp_x + CLIENT_MIN_VISIBLE) - || (c->x + c->width < c->md->margins [LEFT] + CLIENT_MIN_VISIBLE)) + || (c->x + c->width < screen_info->margins [LEFT] + CLIENT_MIN_VISIBLE)) { c->width = prev_width; } if ((c->y + c->height < disp_y + CLIENT_MIN_VISIBLE) - || (c->y + c->height < c->md->margins [TOP] + CLIENT_MIN_VISIBLE)) + || (c->y + c->height < screen_info->margins [TOP] + CLIENT_MIN_VISIBLE)) { c->height = prev_height; } @@ -2989,7 +3035,7 @@ clientResize_event_filter (XEvent * xevent, gpointer data) { poswinSetPosition (passdata->poswin, c); } - if (params.box_resize) + if (screen_info->params->box_resize) { clientDrawOutline (c); } @@ -3007,7 +3053,7 @@ clientResize_event_filter (XEvent * xevent, gpointer data) { if (passdata->use_keys) { - if (IsModifierKey (XKeycodeToKeysym (c->md->dpy, xevent->xkey.keycode, 0))) + if (IsModifierKey (XKeycodeToKeysym (clientGetXDisplay (c), xevent->xkey.keycode, 0))) { resizing = FALSE; } @@ -3015,7 +3061,7 @@ clientResize_event_filter (XEvent * xevent, gpointer data) } else if (xevent->type == MotionNotify) { - while (XCheckMaskEvent (c->md->dpy, ButtonMotionMask | PointerMotionMask, xevent)) + while (XCheckMaskEvent (clientGetXDisplay (c), ButtonMotionMask | PointerMotionMask, xevent)) ; /* Skip event */ if (xevent->type == ButtonRelease) @@ -3024,13 +3070,13 @@ clientResize_event_filter (XEvent * xevent, gpointer data) clientClearLastOpTime (c); } - if (!passdata->grab && params.box_resize) + if (!passdata->grab && screen_info->params->box_resize) { - myXGrabServer (c->md); + myXGrabServer (screen_info); passdata->grab = TRUE; clientDrawOutline (c); } - if (params.box_resize) + if (screen_info->params->box_resize) { clientDrawOutline (c); } @@ -3099,8 +3145,8 @@ clientResize_event_filter (XEvent * xevent, gpointer data) || (passdata->corner == CORNER_TOP_RIGHT)) { if ((c->y > disp_max_y - CLIENT_MIN_VISIBLE) - || (c->y > gdk_screen_get_height (c->md->gscr) - - c->md->margins [BOTTOM] - CLIENT_MIN_VISIBLE)) + || (c->y > gdk_screen_get_height (screen_info->gscr) + - screen_info->margins [BOTTOM] - CLIENT_MIN_VISIBLE)) { c->y = prev_y; c->height = prev_height; @@ -3111,7 +3157,7 @@ clientResize_event_filter (XEvent * xevent, gpointer data) || (passdata->corner == 4 + SIDE_BOTTOM)) { if ((c->y + c->height < disp_y + CLIENT_MIN_VISIBLE) - || (c->y + c->height < c->md->margins [TOP] + CLIENT_MIN_VISIBLE)) + || (c->y + c->height < screen_info->margins [TOP] + CLIENT_MIN_VISIBLE)) { c->height = prev_height; } @@ -3121,8 +3167,8 @@ clientResize_event_filter (XEvent * xevent, gpointer data) || (passdata->corner == 4 + SIDE_LEFT)) { if ((c->x > disp_max_x - CLIENT_MIN_VISIBLE) - || (c->x > gdk_screen_get_width (c->md->gscr) - - c->md->margins [RIGHT] - CLIENT_MIN_VISIBLE)) + || (c->x > gdk_screen_get_width (screen_info->gscr) + - screen_info->margins [RIGHT] - CLIENT_MIN_VISIBLE)) { c->x = prev_x; c->width = prev_width; @@ -3133,7 +3179,7 @@ clientResize_event_filter (XEvent * xevent, gpointer data) || (passdata->corner == 4 + SIDE_RIGHT)) { if ((c->x + c->width < disp_x + CLIENT_MIN_VISIBLE) - || (c->x + c->width < c->md->margins [LEFT] + CLIENT_MIN_VISIBLE)) + || (c->x + c->width < screen_info->margins [LEFT] + CLIENT_MIN_VISIBLE)) { c->width = prev_width; } @@ -3143,7 +3189,7 @@ clientResize_event_filter (XEvent * xevent, gpointer data) { poswinSetPosition (passdata->poswin, c); } - if (params.box_resize) + if (screen_info->params->box_resize) { clientDrawOutline (c); } @@ -3194,6 +3240,8 @@ clientResize_event_filter (XEvent * xevent, gpointer data) void clientResize (Client * c, int corner, XEvent * e) { + ScreenInfo *screen_info; + DisplayInfo *display_info; XWindowChanges wc; MoveResizeData passdata; int g1 = GrabSuccess, g2 = GrabSuccess; @@ -3202,6 +3250,9 @@ clientResize (Client * c, int corner, XEvent * e) TRACE ("entering clientResize"); TRACE ("resizing client \"%s\" (0x%lx)", c->name, c->window); + screen_info = c->screen_info; + display_info = screen_info->display_info; + passdata.c = c; passdata.ox = c->width; passdata.oy = c->height; @@ -3210,9 +3261,9 @@ clientResize (Client * c, int corner, XEvent * e) passdata.grab = FALSE; passdata.corner = corner; - myWindowTemp (c->md->dpy, c->md->xroot, &passdata.tmp_event_window, 0, 0, - gdk_screen_get_width (c->md->gscr), - gdk_screen_get_height (c->md->gscr), + xfwmWindowTemp (display_info->dpy, screen_info->xroot, &passdata.tmp_event_window, 0, 0, + gdk_screen_get_width (screen_info->gscr), + gdk_screen_get_height (screen_info->gscr), ButtonMotionMask | ButtonReleaseMask); if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED)) @@ -3233,14 +3284,14 @@ clientResize (Client * c, int corner, XEvent * e) } else { - getMouseXY (c->md, c->md->xroot, &passdata.mx, &passdata.my); + getMouseXY (screen_info, screen_info->xroot, &passdata.mx, &passdata.my); } - g1 = XGrabKeyboard (c->md->dpy, MYWINDOW_XWINDOW (passdata.tmp_event_window), + g1 = XGrabKeyboard (display_info->dpy, MYWINDOW_XWINDOW (passdata.tmp_event_window), FALSE, GrabModeAsync, GrabModeAsync, GDK_CURRENT_TIME); - g2 = XGrabPointer (c->md->dpy, MYWINDOW_XWINDOW (passdata.tmp_event_window), + g2 = XGrabPointer (display_info->dpy, MYWINDOW_XWINDOW (passdata.tmp_event_window), FALSE, ButtonMotionMask | ButtonReleaseMask, GrabModeAsync, - GrabModeAsync, None, c->md->resize_cursor[passdata.corner], + GrabModeAsync, None, myDisplayGetCursorResize(display_info, passdata.corner), GDK_CURRENT_TIME); if (((passdata.use_keys) && (g1 != GrabSuccess)) || (g2 != GrabSuccess)) @@ -3249,13 +3300,13 @@ clientResize (Client * c, int corner, XEvent * e) gdk_beep (); if ((passdata.use_keys) && (g1 == GrabSuccess)) { - XUngrabKeyboard (c->md->dpy, GDK_CURRENT_TIME); + XUngrabKeyboard (display_info->dpy, GDK_CURRENT_TIME); } if (g2 == GrabSuccess) { - XUngrabPointer (c->md->dpy, GDK_CURRENT_TIME); + XUngrabPointer (display_info->dpy, GDK_CURRENT_TIME); } - myWindowDelete (&passdata.tmp_event_window); + xfwmWindowDelete (&passdata.tmp_event_window); return; } @@ -3263,7 +3314,7 @@ clientResize (Client * c, int corner, XEvent * e) if ((c->size->width_inc > 1) || (c->size->height_inc > 1)) #endif /* SHOW_POSITION */ { - passdata.poswin = poswinCreate(c->md->gscr); + passdata.poswin = poswinCreate(screen_info->gscr); poswinSetPosition (passdata.poswin, c); poswinShow (passdata.poswin); } @@ -3276,13 +3327,13 @@ clientResize (Client * c, int corner, XEvent * e) FLAG_SET (c->flags, CLIENT_FLAG_MOVING_RESIZING); TRACE ("entering resize loop"); - xfce_push_event_filter (c->md->xfilter, clientResize_event_filter, &passdata); + xfce_push_event_filter (display_info->xfilter, clientResize_event_filter, &passdata); if (passdata.use_keys) { - XPutBackEvent (c->md->dpy, e); + XPutBackEvent (display_info->dpy, e); } gtk_main (); - xfce_pop_event_filter (c->md->xfilter); + xfce_pop_event_filter (display_info->xfilter); TRACE ("leaving resize loop"); FLAG_UNSET (c->flags, CLIENT_FLAG_MOVING_RESIZING); @@ -3290,7 +3341,7 @@ clientResize (Client * c, int corner, XEvent * e) { poswinDestroy (passdata.poswin); } - if (passdata.grab && params.box_resize) + if (passdata.grab && screen_info->params->box_resize) { clientDrawOutline (c); } @@ -3301,13 +3352,13 @@ clientResize (Client * c, int corner, XEvent * e) wc.height = c->height; clientConfigure (c, &wc, CWX | CWY | CWHeight | CWWidth, CFG_NOTIFY); - XUngrabKeyboard (c->md->dpy, GDK_CURRENT_TIME); - XUngrabPointer (c->md->dpy, GDK_CURRENT_TIME); - myWindowDelete (&passdata.tmp_event_window); + XUngrabKeyboard (display_info->dpy, GDK_CURRENT_TIME); + XUngrabPointer (display_info->dpy, GDK_CURRENT_TIME); + xfwmWindowDelete (&passdata.tmp_event_window); - if (passdata.grab && params.box_resize) + if (passdata.grab && screen_info->params->box_resize) { - myXUngrabServer (c->md); + myXUngrabServer (screen_info); } } @@ -3319,24 +3370,25 @@ clientCycle_event_filter (XEvent * xevent, gpointer data) gboolean gone = FALSE; ClientCycleData *passdata = (ClientCycleData *) data; Client *c = passdata->c; + ScreenInfo *screen_info = c->screen_info; TRACE ("entering clientCycle_event_filter"); switch (xevent->type) { case DestroyNotify: - gone |= (c == clientGetFromWindow (((XDestroyWindowEvent *) xevent)->window, WINDOW)); + gone |= (c == clientGetFromWindow (screen_info, ((XDestroyWindowEvent *) xevent)->window, WINDOW)); status = XEV_FILTER_CONTINUE; case UnmapNotify: - gone |= (c == clientGetFromWindow (((XUnmapEvent *) xevent)->window, WINDOW)); + gone |= (c == clientGetFromWindow (screen_info, ((XUnmapEvent *) xevent)->window, WINDOW)); status = XEV_FILTER_CONTINUE; case KeyPress: - if (gone || (xevent->xkey.keycode == params.keys[KEY_CYCLE_WINDOWS].keycode)) + if (gone || (xevent->xkey.keycode == screen_info->params->keys[KEY_CYCLE_WINDOWS].keycode)) { /* Hide frame draw */ clientDrawOutline (c); /* If KEY_CYCLE_WINDOWS has Shift, then do not reverse */ - if (!(params.keys[KEY_CYCLE_WINDOWS].modifier & ShiftMask) + if (!(screen_info->params->keys[KEY_CYCLE_WINDOWS].modifier & ShiftMask) && xevent->xkey.state & ShiftMask) { c = clientGetPrevious (c, passdata->cycle_range); @@ -3353,7 +3405,7 @@ clientCycle_event_filter (XEvent * xevent, gpointer data) /* Redraw frame draw */ clientDrawOutline (c); tabwinSetLabel (passdata->tabwin, - getAppIcon (c->md->dpy, + getAppIcon (clientGetXDisplay (c), c->window, 32, 32), c->class.res_class, c->name); } @@ -3365,13 +3417,13 @@ clientCycle_event_filter (XEvent * xevent, gpointer data) break; case KeyRelease: { - int keysym = XKeycodeToKeysym (c->md->dpy, xevent->xkey.keycode, 0); + int keysym = XKeycodeToKeysym (clientGetXDisplay (c), xevent->xkey.keycode, 0); /* If KEY_CYCE_WINDOWS has Shift, then stop cycling on Shift * release. */ if (IsModifierKey (keysym) - && ( (params.keys[KEY_CYCLE_WINDOWS].modifier + && ( (screen_info->params->keys[KEY_CYCLE_WINDOWS].modifier & ShiftMask) || (keysym != XK_Shift_L && keysym != XK_Shift_R) ) ) { @@ -3402,15 +3454,20 @@ clientCycle_event_filter (XEvent * xevent, gpointer data) void clientCycle (Client * c, XEvent * e) { + ScreenInfo *screen_info; + DisplayInfo *display_info; ClientCycleData passdata; int g1, g2; g_return_if_fail (c != NULL); TRACE ("entering clientCycle"); - g1 = XGrabKeyboard (c->md->dpy, c->md->gnome_win, FALSE, GrabModeAsync, GrabModeAsync, + screen_info = c->screen_info; + display_info = screen_info->display_info; + + g1 = XGrabKeyboard (display_info->dpy, screen_info->gnome_win, FALSE, GrabModeAsync, GrabModeAsync, GDK_CURRENT_TIME); - g2 = XGrabPointer (c->md->dpy, c->md->gnome_win, FALSE, NoEventMask, GrabModeAsync, + g2 = XGrabPointer (display_info->dpy, screen_info->gnome_win, FALSE, NoEventMask, GrabModeAsync, GrabModeAsync, None, None, GDK_CURRENT_TIME); if ((g1 != GrabSuccess) || (g2 != GrabSuccess)) { @@ -3418,17 +3475,17 @@ clientCycle (Client * c, XEvent * e) gdk_beep (); if (g1 == GrabSuccess) { - XUngrabKeyboard (c->md->dpy, GDK_CURRENT_TIME); + XUngrabKeyboard (display_info->dpy, GDK_CURRENT_TIME); } if (g2 == GrabSuccess) { - XUngrabPointer (c->md->dpy, GDK_CURRENT_TIME); + XUngrabPointer (display_info->dpy, GDK_CURRENT_TIME); } return; } - myXGrabServer (c->md); - if (params.cycle_minimum) + myXGrabServer (screen_info); + if (screen_info->params->cycle_minimum) { passdata.cycle_range = INCLUDE_HIDDEN; } @@ -3439,15 +3496,15 @@ clientCycle (Client * c, XEvent * e) passdata.c = clientGetNext (c, passdata.cycle_range); if (passdata.c) { - passdata.tabwin = tabwinCreate (passdata.c->md->gscr, - getAppIcon (c->md->dpy, passdata.c->window, 32, 32), + passdata.tabwin = tabwinCreate (passdata.c->screen_info->gscr, + getAppIcon (display_info->dpy, passdata.c->window, 32, 32), passdata.c->class.res_class, passdata.c->name); TRACE ("entering cycle loop"); /* Draw frame draw */ clientDrawOutline (passdata.c); - xfce_push_event_filter (c->md->xfilter, clientCycle_event_filter, &passdata); + xfce_push_event_filter (display_info->xfilter, clientCycle_event_filter, &passdata); gtk_main (); - xfce_pop_event_filter (c->md->xfilter); + xfce_pop_event_filter (display_info->xfilter); if (passdata.c) { /* Hide frame draw */ @@ -3457,15 +3514,15 @@ clientCycle (Client * c, XEvent * e) tabwinDestroy (passdata.tabwin); g_free (passdata.tabwin); } - myXUngrabServer (c->md); - XUngrabKeyboard (c->md->dpy, GDK_CURRENT_TIME); - XUngrabPointer (c->md->dpy, GDK_CURRENT_TIME); + myXUngrabServer (screen_info); + XUngrabKeyboard (display_info->dpy, GDK_CURRENT_TIME); + XUngrabPointer (display_info->dpy, GDK_CURRENT_TIME); if (passdata.c) { clientShow (passdata.c, TRUE); clientRaise (passdata.c); - clientSetFocus (passdata.c->md, passdata.c, GDK_CURRENT_TIME, NO_FOCUS_FLAG); + clientSetFocus (passdata.c->screen_info, passdata.c, GDK_CURRENT_TIME, NO_FOCUS_FLAG); clientPassGrabButton1 (passdata.c); } } @@ -3518,8 +3575,10 @@ clientButtonPress_event_filter (XEvent * xevent, gpointer data) void clientButtonPress (Client * c, Window w, XButtonEvent * bev) { - int b, g1; + ScreenInfo *screen_info; + DisplayInfo *display_info; ButtonPressData passdata; + int b, g1; g_return_if_fail (c != NULL); TRACE ("entering clientButtonPress"); @@ -3532,7 +3591,10 @@ clientButtonPress (Client * c, Window w, XButtonEvent * bev) } } - g1 = XGrabPointer (c->md->dpy, w, FALSE, + screen_info = c->screen_info; + display_info = screen_info->display_info; + + g1 = XGrabPointer (display_info->dpy, w, FALSE, ButtonReleaseMask | EnterWindowMask | LeaveWindowMask, GrabModeAsync, GrabModeAsync, None, None, GDK_CURRENT_TIME); @@ -3542,7 +3604,7 @@ clientButtonPress (Client * c, Window w, XButtonEvent * bev) gdk_beep (); if (g1 == GrabSuccess) { - XUngrabKeyboard (c->md->dpy, GDK_CURRENT_TIME); + XUngrabKeyboard (display_info->dpy, GDK_CURRENT_TIME); } return; } @@ -3554,12 +3616,12 @@ clientButtonPress (Client * c, Window w, XButtonEvent * bev) frameDraw (c, FALSE, FALSE); TRACE ("entering button press loop"); - xfce_push_event_filter (c->md->xfilter, clientButtonPress_event_filter, &passdata); + xfce_push_event_filter (display_info->xfilter, clientButtonPress_event_filter, &passdata); gtk_main (); - xfce_pop_event_filter (c->md->xfilter); + xfce_pop_event_filter (display_info->xfilter); TRACE ("leaving button press loop"); - XUngrabPointer (c->md->dpy, GDK_CURRENT_TIME); + XUngrabPointer (display_info->dpy, GDK_CURRENT_TIME); if (c->button_pressed[b]) { @@ -3620,11 +3682,11 @@ clientGetLeader (Client * c) if (c->group_leader != None) { - c2 = clientGetFromWindow (c->group_leader, WINDOW); + c2 = clientGetFromWindow (c->screen_info, c->group_leader, WINDOW); } else if (c->client_leader != None) { - c2 = clientGetFromWindow (c->client_leader, WINDOW); + c2 = clientGetFromWindow (c->screen_info, c->client_leader, WINDOW); } return c2; } diff --git a/src/client.h b/src/client.h index 50ac6991c..3d16ff6af 100644 --- a/src/client.h +++ b/src/client.h @@ -18,9 +18,6 @@ */ -#ifndef INC_CLIENT_H -#define INC_CLIENT_H - #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -39,17 +36,16 @@ #include <glib.h> #include <gtk/gtk.h> #include <libxfcegui4/libxfcegui4.h> +#include "screen.h" #include "misc.h" #include "hints.h" #include "keyboard.h" #include "mypixmap.h" #include "mywindow.h" -#include "screen.h" #include "settings.h" -#define ANY 0 -#define WINDOW 1 -#define FRAME 2 +#ifndef INC_CLIENT_H +#define INC_CLIENT_H #define APPLY 1 #define REMOVE -1 @@ -76,19 +72,6 @@ #define UPDATE_CACHE (1<<3) #define UPDATE_ALL (UPDATE_KEYGRABS | UPDATE_FRAME | UPDATE_GRAVITY | UPDATE_CACHE) -#define LEFT 0 -#define RIGHT 1 -#define TOP 2 -#define BOTTOM 3 -#define LEFT_START_Y 4 -#define LEFT_END_Y 5 -#define RIGHT_START_Y 6 -#define RIGHT_END_Y 7 -#define TOP_START_X 8 -#define TOP_END_X 9 -#define BOTTOM_START_X 10 -#define BOTTOM_END_X 11 - #define CLIENT_MIN_VISIBLE 10 /* pixels */ #define CLIENT_FLAG_HAS_BORDER (1L<<0) @@ -178,13 +161,10 @@ typedef enum WindowType; -typedef struct _ClientPixmapCache ClientPixmapCache; -typedef struct _Client Client; - struct _ClientPixmapCache { - MyPixmap pm_title[2]; - MyPixmap pm_sides[3][2]; + XfwmPixmap pm_title[2]; + XfwmPixmap pm_sides[3][2]; int previous_width; int previous_height; }; @@ -192,16 +172,16 @@ struct _ClientPixmapCache struct _Client { /* Reference to our screen structure */ - ScreenData *md; + ScreenInfo *screen_info; Window window; Window frame; Window transient_for; Window *cmap_windows; - myWindow title; - myWindow sides[3]; - myWindow corners[4]; - myWindow buttons[BUTTON_COUNT]; + xfwmWindow title; + xfwmWindow sides[3]; + xfwmWindow corners[4]; + xfwmWindow buttons[BUTTON_COUNT]; Window client_leader; Window group_leader; Colormap cmap; @@ -256,7 +236,8 @@ struct _Client extern Client *clients; extern unsigned int client_count; -void clientClearLastOpTime (Client * c); +Display *clientGetXDisplay (Client *); +void clientClearLastOpTime (Client *); void clientUpdateWinState (Client *, XClientMessageEvent *); void clientCoordGravitate (Client *, int, int *, int *); void clientGravitate (Client *, int); @@ -265,23 +246,22 @@ void clientGetMWMHints (Client *, gboolean); void clientGetWMNormalHints (Client *, gboolean); void clientGetWMProtocols (Client *); void clientClearPixmapCache (Client *); -void clientFrame (ScreenData *, Window, gboolean); +void clientFrame (DisplayInfo *, Window, gboolean); void clientUnframe (Client *, gboolean); -void clientFrameAll (ScreenData *); -void clientUnframeAll (ScreenData *); +void clientFrameAll (ScreenInfo *); +void clientUnframeAll (ScreenInfo *); void clientInstallColormaps (Client *); void clientUpdateColormaps (Client *); -void clientUpdateAllFrames (ScreenData *, gboolean); +void clientUpdateAllFrames (ScreenInfo *, gboolean); void clientGrabKeys (Client *); void clientUngrabKeys (Client *); void clientGrabButtons (Client *); void clientUngrabButtons (Client *); -Client *clientGetFromWindow (Window, int); -Client *clientAtPosition (int, int, Client *); +Client *clientGetFromWindow (ScreenInfo *, Window, int); void clientShow (Client *, gboolean); void clientHide (Client *, int, gboolean); void clientHideAll (Client *, int); -void clientToggleShowDesktop (ScreenData *, gboolean); +void clientToggleShowDesktop (ScreenInfo *, gboolean); void clientClose (Client *); void clientKill (Client *); void clientEnterContextMenuState (Client *); @@ -300,7 +280,7 @@ void clientToggleAbove (Client *); void clientToggleBelow (Client *); void clientRemoveMaximizeFlag (Client *); void clientToggleMaximized (Client *, int); -void clientScreenResize(void); +void clientScreenResize(ScreenInfo *); void clientMove (Client *, XEvent *); void clientResize (Client *, int, XEvent *); void clientCycle (Client *, XEvent *); diff --git a/src/events.c b/src/events.c index 4153d6768..2bbc08af9 100644 --- a/src/events.c +++ b/src/events.c @@ -74,12 +74,11 @@ extern gboolean xfwm4_reload; static guint raise_timeout = 0; -static gulong button_handler_id = 0; static GdkAtom atom_rcfiles = GDK_NONE; -static myWindow menu_event_window; +static xfwmWindow menu_event_window; static int edge_scroll_x = 0; -static void handleEvent (ScreenData *md, XEvent * ev); +static void handleEvent (DisplayInfo *display_info, XEvent * ev); static void menu_callback (Menu * menu, MenuOp op, Window client_xwindow, gpointer menu_data, gpointer item_data); static gboolean show_popup_cb (GtkWidget * widget, GdkEventButton * ev, @@ -97,7 +96,7 @@ typedef enum XfwmButtonClickType; static XfwmButtonClickType -typeOfClick (ScreenData *md, Window w, XEvent * ev, gboolean allow_double_click) +typeOfClick (DisplayInfo *display_info, Window w, XEvent * ev, gboolean allow_double_click) { unsigned int button; int xcurrent, ycurrent, x, y, total; @@ -105,12 +104,12 @@ typeOfClick (ScreenData *md, Window w, XEvent * ev, gboolean allow_double_click) int clicks; Time t0; - g_return_val_if_fail (md != NULL, XFWM_BUTTON_UNDEFINED); + g_return_val_if_fail (display_info != NULL, XFWM_BUTTON_UNDEFINED); g_return_val_if_fail (ev != NULL, XFWM_BUTTON_UNDEFINED); g_return_val_if_fail (w != None, XFWM_BUTTON_UNDEFINED); - XFlush (md->dpy); - g = XGrabPointer (md->dpy, w, FALSE, DBL_CLICK_GRAB, GrabModeAsync, + XFlush (display_info->dpy); + g = XGrabPointer (display_info->dpy, w, FALSE, DBL_CLICK_GRAB, GrabModeAsync, GrabModeAsync, None, None, ev->xbutton.time); if (g != GrabSuccess) { @@ -127,16 +126,16 @@ typeOfClick (ScreenData *md, Window w, XEvent * ev, gboolean allow_double_click) clicks = 1; while ((ABS (x - xcurrent) < 2) && (ABS (y - ycurrent) < 2) - && (total < params.dbl_click_time) - && ((GDK_CURRENT_TIME - t0) < params.dbl_click_time)) + && (total < display_info->dbl_click_time) + && ((GDK_CURRENT_TIME - t0) < display_info->dbl_click_time)) { g_usleep (10000); total += 10; - if (XCheckMaskEvent (md->dpy, FocusChangeMask, ev)) + if (XCheckMaskEvent (display_info->dpy, FocusChangeMask, ev)) { - handleEvent (md, ev); + handleEvent (display_info, ev); } - if (XCheckMaskEvent (md->dpy, ButtonReleaseMask | ButtonPressMask, ev)) + if (XCheckMaskEvent (display_info->dpy, ButtonReleaseMask | ButtonPressMask, ev)) { if (ev->xbutton.button == button) { @@ -149,14 +148,14 @@ typeOfClick (ScreenData *md, Window w, XEvent * ev, gboolean allow_double_click) { break; } - if (XCheckMaskEvent (md->dpy, ButtonMotionMask | PointerMotionMask, ev)) + if (XCheckMaskEvent (display_info->dpy, ButtonMotionMask | PointerMotionMask, ev)) { xcurrent = ev->xmotion.x_root; ycurrent = ev->xmotion.y_root; } } - XUngrabPointer (md->dpy, ev->xbutton.time); - XFlush (md->dpy); + XUngrabPointer (display_info->dpy, ev->xbutton.time); + XFlush (display_info->dpy); return (XfwmButtonClickType) clicks; } @@ -187,15 +186,13 @@ raise_cb (gpointer data) } static void -reset_timeout (void) +reset_timeout (ScreenInfo *screen_info) { if (raise_timeout) { g_source_remove (raise_timeout); } - raise_timeout = - g_timeout_add_full (0, params.raise_delay, (GtkFunction) raise_cb, - NULL, NULL); + raise_timeout = g_timeout_add_full (0, screen_info->params->raise_delay, (GtkFunction) raise_cb, NULL, NULL); } static void @@ -210,7 +207,7 @@ moveRequest (Client * c, XEvent * ev) static void resizeRequest (Client * c, int corner, XEvent * ev) { - clientSetFocus (c->md, c, GDK_CURRENT_TIME, NO_FOCUS_FLAG); + clientSetFocus (c->screen_info, c, GDK_CURRENT_TIME, NO_FOCUS_FLAG); if (FLAG_TEST_ALL (c->flags, CLIENT_FLAG_HAS_RESIZE | CLIENT_FLAG_IS_RESIZABLE)) @@ -224,15 +221,15 @@ resizeRequest (Client * c, int corner, XEvent * ev) } static void -spawn_shortcut (int i) +spawn_shortcut (ScreenInfo *screen_info, int i) { GError *error = NULL; - if ((i >= NB_KEY_SHORTCUTS) || (!params.shortcut_exec[i]) - || !strlen (params.shortcut_exec[i])) + if ((i >= NB_KEY_SHORTCUTS) || (!screen_info->params->shortcut_exec[i]) + || !strlen (screen_info->params->shortcut_exec[i])) { return; } - if (!g_spawn_command_line_async (params.shortcut_exec[i], &error)) + if (!xfce_gdk_spawn_command_line_on_screen (screen_info->gscr, screen_info->params->shortcut_exec[i], &error)) { if (error) { @@ -243,18 +240,26 @@ spawn_shortcut (int i) } static void -handleMotionNotify (ScreenData *md, XMotionEvent * ev) +handleMotionNotify (DisplayInfo *display_info, XMotionEvent * ev) { int msx, msy, max; - + ScreenInfo *screen_info; + TRACE ("entering handleMotionNotify"); - - if (params.workspace_count && params.wrap_workspaces - && params.wrap_resistance) + + /* Get the screen structure from the root of the event */ + screen_info = myDisplayGetScreenFromRoot (display_info, ev->root); + if (!screen_info) + { + return; + } + + if (screen_info->workspace_count && screen_info->params->wrap_workspaces + && screen_info->params->wrap_resistance) { msx = ev->x_root; msy = ev->y_root; - max = gdk_screen_get_width (md->gscr) - 1; + max = gdk_screen_get_width (screen_info->gscr) - 1; if ((msx == 0) || (msx == max)) { @@ -264,28 +269,29 @@ handleMotionNotify (ScreenData *md, XMotionEvent * ev) { edge_scroll_x = 0; } - if (edge_scroll_x > params.wrap_resistance) + if (edge_scroll_x > screen_info->params->wrap_resistance) { edge_scroll_x = 0; if (msx == 0) { - XWarpPointer (md->dpy, None, md->xroot, 0, 0, 0, 0, max - 10, msy); - workspaceSwitch (md, md->current_ws - 1, NULL); + XWarpPointer (display_info->dpy, None, screen_info->xroot, 0, 0, 0, 0, max - 10, msy); + workspaceSwitch (screen_info, screen_info->current_ws - 1, NULL); } else if (msx == max) { - XWarpPointer (md->dpy, None, md->xroot, 0, 0, 0, 0, 10, msy); - workspaceSwitch (md, md->current_ws + 1, NULL); + XWarpPointer (display_info->dpy, None, screen_info->xroot, 0, 0, 0, 0, 10, msy); + workspaceSwitch (screen_info, screen_info->current_ws + 1, NULL); } - while (XCheckWindowEvent(md->dpy, ev->window, PointerMotionMask, (XEvent *) ev)) + while (XCheckWindowEvent(display_info->dpy, ev->window, PointerMotionMask, (XEvent *) ev)) ; /* Skip event */ } } } static void -handleKeyPress (ScreenData *md, XKeyEvent * ev) +handleKeyPress (DisplayInfo *display_info, XKeyEvent * ev) { + ScreenInfo *screen_info = NULL;; Client *c = NULL; int state, key; @@ -296,8 +302,8 @@ handleKeyPress (ScreenData *md, XKeyEvent * ev) for (key = 0; key < KEY_COUNT; key++) { - if ((params.keys[key].keycode == ev->keycode) - && (params.keys[key].modifier == state)) + if ((screen_info->params->keys[key].keycode == ev->keycode) + && (screen_info->params->keys[key].modifier == state)) { break; } @@ -305,6 +311,7 @@ handleKeyPress (ScreenData *md, XKeyEvent * ev) if (c) { + screen_info = c->screen_info; switch (key) { case KEY_MOVE_UP: @@ -363,10 +370,10 @@ handleKeyPress (ScreenData *md, XKeyEvent * ev) clientPassGrabButton1 (NULL); break; case KEY_MOVE_NEXT_WORKSPACE: - workspaceSwitch (md, md->current_ws + 1, c); + workspaceSwitch (screen_info, screen_info->current_ws + 1, c); break; case KEY_MOVE_PREV_WORKSPACE: - workspaceSwitch (md, md->current_ws - 1, c); + workspaceSwitch (screen_info, screen_info->current_ws - 1, c); break; case KEY_MOVE_WORKSPACE_1: case KEY_MOVE_WORKSPACE_2: @@ -378,7 +385,7 @@ handleKeyPress (ScreenData *md, XKeyEvent * ev) case KEY_MOVE_WORKSPACE_8: case KEY_MOVE_WORKSPACE_9: clientRaise (c); - workspaceSwitch (md, key - KEY_MOVE_WORKSPACE_1, c); + workspaceSwitch (screen_info, key - KEY_MOVE_WORKSPACE_1, c); break; default: break; @@ -386,31 +393,41 @@ handleKeyPress (ScreenData *md, XKeyEvent * ev) } else { + screen_info = myDisplayGetScreenFromRoot (display_info, ev->root); + if (!screen_info) + { + return; + } + switch (key) { case KEY_CYCLE_WINDOWS: - if (clients) + if (screen_info->clients) { - clientCycle (clients->prev, (XEvent *) ev); + clientCycle (screen_info->clients->prev, (XEvent *) ev); } break; default: break; } } + /* + Here we know that "screen_info" is defined, otherwise, we would + already have returned... + */ switch (key) { case KEY_NEXT_WORKSPACE: - workspaceSwitch (md, md->current_ws + 1, NULL); + workspaceSwitch (screen_info, screen_info->current_ws + 1, NULL); break; case KEY_PREV_WORKSPACE: - workspaceSwitch (md, md->current_ws - 1, NULL); + workspaceSwitch (screen_info, screen_info->current_ws - 1, NULL); break; case KEY_ADD_WORKSPACE: - workspaceSetCount (md, params.workspace_count + 1); + workspaceSetCount (screen_info, screen_info->workspace_count + 1); break; case KEY_DEL_WORKSPACE: - workspaceSetCount (md, params.workspace_count - 1); + workspaceSetCount (screen_info, screen_info->workspace_count - 1); break; case KEY_WORKSPACE_1: case KEY_WORKSPACE_2: @@ -421,7 +438,7 @@ handleKeyPress (ScreenData *md, XKeyEvent * ev) case KEY_WORKSPACE_7: case KEY_WORKSPACE_8: case KEY_WORKSPACE_9: - workspaceSwitch (md, key - KEY_WORKSPACE_1, NULL); + workspaceSwitch (screen_info, key - KEY_WORKSPACE_1, NULL); break; case KEY_SHORTCUT_1: case KEY_SHORTCUT_2: @@ -433,7 +450,7 @@ handleKeyPress (ScreenData *md, XKeyEvent * ev) case KEY_SHORTCUT_8: case KEY_SHORTCUT_9: case KEY_SHORTCUT_10: - spawn_shortcut (key - KEY_SHORTCUT_1); + spawn_shortcut (screen_info, key - KEY_SHORTCUT_1); break; default: break; @@ -451,8 +468,10 @@ edgeButton (Client * c, int part, XButtonEvent * ev) if (ev->button == Button2) { XfwmButtonClickType tclick; + ScreenInfo *screen_info = c->screen_info; + DisplayInfo *display_info = screen_info->display_info; - tclick = typeOfClick (c->md, c->frame, (XEvent *) ev, FALSE); + tclick = typeOfClick (display_info, c->frame, (XEvent *) ev, FALSE); if (tclick == XFWM_BUTTON_CLICK) { @@ -481,18 +500,23 @@ edgeButton (Client * c, int part, XButtonEvent * ev) static void button1Action (Client * c, XButtonEvent * ev) { + ScreenInfo *screen_info; + DisplayInfo *display_info; XEvent copy_event; XfwmButtonClickType tclick; g_return_if_fail (c != NULL); g_return_if_fail (ev != NULL); - clientSetFocus (c->md, c, ev->time, NO_FOCUS_FLAG); + screen_info = c->screen_info; + display_info = screen_info->display_info; + + clientSetFocus (screen_info, c, ev->time, NO_FOCUS_FLAG); clientRaise (c); clientPassGrabButton1 (c); memcpy(©_event, ev, sizeof(XEvent)); - tclick = typeOfClick (c->md, c->frame, ©_event, TRUE); + tclick = typeOfClick (display_info, c->frame, ©_event, TRUE); if ((tclick == XFWM_BUTTON_DRAG) || (tclick == XFWM_BUTTON_CLICK_AND_DRAG)) @@ -501,7 +525,7 @@ button1Action (Client * c, XButtonEvent * ev) } else if (tclick == XFWM_BUTTON_DOUBLE_CLICK) { - switch (params.double_click_action) + switch (screen_info->params->double_click_action) { case ACTION_MAXIMIZE: clientToggleMaximized (c, WIN_STATE_MAXIMIZED); @@ -522,12 +546,15 @@ button1Action (Client * c, XButtonEvent * ev) static void titleButton (Client * c, int state, XButtonEvent * ev) { - ScreenData *md; + ScreenInfo *screen_info; + DisplayInfo *display_info; + g_return_if_fail (c != NULL); g_return_if_fail (ev != NULL); /* Get Screen data from the client itself */ - md = c->md; + screen_info = c->screen_info; + display_info = screen_info->display_info; if (ev->button == Button1) { @@ -549,7 +576,7 @@ titleButton (Client * c, int state, XButtonEvent * ev) XfwmButtonClickType tclick; memcpy(©_event, ev, sizeof(XEvent)); - tclick = typeOfClick (c->md, c->frame, ©_event, FALSE); + tclick = typeOfClick (display_info, c->frame, ©_event, FALSE); if (tclick == XFWM_BUTTON_DRAG) { @@ -557,21 +584,19 @@ titleButton (Client * c, int state, XButtonEvent * ev) } else { - clientSetFocus (c->md, c, ev->time, NO_FOCUS_FLAG); - if (params.raise_on_click) + clientSetFocus (screen_info, c, ev->time, NO_FOCUS_FLAG); + if (screen_info->params->raise_on_click) { clientRaise (c); clientPassGrabButton1 (c); } ev->window = ev->root; - if (button_handler_id) + if (screen_info->button_handler_id) { - g_signal_handler_disconnect (GTK_OBJECT (xfce_get_default_gtk_widget (md->xfilter)), button_handler_id); + g_signal_handler_disconnect (GTK_OBJECT (myScreenGetGtkWidget (screen_info)), screen_info->button_handler_id); } - button_handler_id = - g_signal_connect (GTK_OBJECT (xfce_get_default_gtk_widget (md->xfilter)), - "button_press_event", GTK_SIGNAL_FUNC (show_popup_cb), - (gpointer) c); + screen_info->button_handler_id = g_signal_connect (GTK_OBJECT (myScreenGetGtkWidget (screen_info)), + "button_press_event", GTK_SIGNAL_FUNC (show_popup_cb), (gpointer) c); /* Let GTK handle this for us. */ } } @@ -594,9 +619,10 @@ titleButton (Client * c, int state, XButtonEvent * ev) } static void -rootScrollButton (ScreenData *md, XButtonEvent * ev) +rootScrollButton (DisplayInfo *display_info, XButtonEvent * ev) { static Time lastscroll = (Time) 0; + ScreenInfo *screen_info; if ((ev->time - lastscroll) < 100) /* ms */ { @@ -604,20 +630,29 @@ rootScrollButton (ScreenData *md, XButtonEvent * ev) return; } lastscroll = ev->time; + + /* Get the screen structure from the root of the event */ + screen_info = myDisplayGetScreenFromRoot (display_info, ev->root); + if (!screen_info) + { + return; + } + if (ev->button == Button4) { - workspaceSwitch (md, md->current_ws - 1, NULL); + workspaceSwitch (screen_info, screen_info->current_ws - 1, NULL); } else if (ev->button == Button5) { - workspaceSwitch (md, md->current_ws + 1, NULL); + workspaceSwitch (screen_info, screen_info->current_ws + 1, NULL); } } static void -handleButtonPress (ScreenData *md, XButtonEvent * ev) +handleButtonPress (DisplayInfo *display_info, XButtonEvent * ev) { + ScreenInfo *screen_info = NULL; Client *c = NULL; Window win; int state, replay = FALSE; @@ -627,22 +662,23 @@ handleButtonPress (ScreenData *md, XButtonEvent * ev) /* Clear timeout */ clear_timeout (); - c = clientGetFromWindow (ev->window, ANY); + c = myDisplayGetClientFromWindow (display_info, ev->window, ANY); if (c) { state = ev->state & MODIFIER_MASK; win = ev->subwindow; + screen_info = c->screen_info; - if ((ev->button == Button1) && (state == AltMask) && (params.easy_click)) + if ((ev->button == Button1) && (state == AltMask) && (screen_info->params->easy_click)) { button1Action (c, ev); } - else if ((ev->button == Button2) && (state == AltMask) && (params.easy_click)) + else if ((ev->button == Button2) && (state == AltMask) && (screen_info->params->easy_click)) { clientLower (c); clientPassGrabButton1 (NULL); } - else if ((ev->button == Button3) && (state == AltMask) && (params.easy_click)) + else if ((ev->button == Button3) && (state == AltMask) && (screen_info->params->easy_click)) { if ((ev->x < c->width / 2) && (ev->y < c->height / 2)) { @@ -665,8 +701,8 @@ handleButtonPress (ScreenData *md, XButtonEvent * ev) { if (ev->button <= Button3) { - clientSetFocus (c->md, c, ev->time, NO_FOCUS_FLAG); - if (params.raise_on_click) + clientSetFocus (screen_info, c, ev->time, NO_FOCUS_FLAG); + if (screen_info->params->raise_on_click) { clientRaise (c); clientPassGrabButton1 (c); @@ -691,7 +727,7 @@ handleButtonPress (ScreenData *md, XButtonEvent * ev) XfwmButtonClickType tclick; memcpy(©_event, ev, sizeof(XEvent)); - tclick = typeOfClick (c->md, c->frame, ©_event, TRUE); + tclick = typeOfClick (display_info, c->frame, ©_event, TRUE); if (tclick == XFWM_BUTTON_DOUBLE_CLICK) { @@ -699,21 +735,19 @@ handleButtonPress (ScreenData *md, XButtonEvent * ev) } else { - clientSetFocus (c->md, c, ev->time, NO_FOCUS_FLAG); - if (params.raise_on_click) + clientSetFocus (screen_info, c, ev->time, NO_FOCUS_FLAG); + if (screen_info->params->raise_on_click) { clientRaise (c); clientPassGrabButton1 (c); } ev->window = ev->root; - if (button_handler_id) + if (screen_info->button_handler_id) { - g_signal_handler_disconnect (GTK_OBJECT (xfce_get_default_gtk_widget (md->xfilter)), button_handler_id); + g_signal_handler_disconnect (GTK_OBJECT (myScreenGetGtkWidget (screen_info)), screen_info->button_handler_id); } - button_handler_id = - g_signal_connect (GTK_OBJECT (xfce_get_default_gtk_widget (md->xfilter)), - "button_press_event", GTK_SIGNAL_FUNC (show_popup_cb), - (gpointer) c); + screen_info->button_handler_id = g_signal_connect (GTK_OBJECT (myScreenGetGtkWidget (screen_info)), + "button_press_event", GTK_SIGNAL_FUNC (show_popup_cb), (gpointer) c); /* Let GTK handle this for us. */ } } @@ -768,8 +802,8 @@ handleButtonPress (ScreenData *md, XButtonEvent * ev) { clientPassGrabButton1 (c); } - clientSetFocus (c->md, c, ev->time, NO_FOCUS_FLAG); - if ((params.raise_on_click) || !FLAG_TEST (c->flags, CLIENT_FLAG_HAS_BORDER)) + clientSetFocus (screen_info, c, ev->time, NO_FOCUS_FLAG); + if ((screen_info->params->raise_on_click) || !FLAG_TEST (c->flags, CLIENT_FLAG_HAS_BORDER)) { clientRaise (c); clientPassGrabButton1 (c); @@ -783,59 +817,81 @@ handleButtonPress (ScreenData *md, XButtonEvent * ev) if (replay) { - XAllowEvents (md->dpy, ReplayPointer, ev->time); + XAllowEvents (display_info->dpy, ReplayPointer, ev->time); } else { - XAllowEvents (md->dpy, SyncPointer, ev->time); + XAllowEvents (display_info->dpy, SyncPointer, ev->time); } + + return; + } + + /* + The event did not occur in one of our known good client... + Get the screen structure from the root of the event. + */ + screen_info = myDisplayGetScreenFromRoot (display_info, ev->root); + if (!screen_info) + { + return; } - else if ((ev->window == md->xroot) && ((ev->button == Button4) || (ev->button == Button5))) + + if ((ev->window == screen_info->xroot) && ((ev->button == Button4) || (ev->button == Button5))) { - rootScrollButton (md, ev); + rootScrollButton (display_info, ev); } else { - XUngrabPointer (md->dpy, GDK_CURRENT_TIME); - XSendEvent (md->dpy, md->gnome_win, FALSE, SubstructureNotifyMask, - (XEvent *) ev); + XUngrabPointer (display_info->dpy, GDK_CURRENT_TIME); + XSendEvent (display_info->dpy, screen_info->gnome_win, FALSE, SubstructureNotifyMask, (XEvent *) ev); } } static void -handleButtonRelease (ScreenData *md, XButtonEvent * ev) +handleButtonRelease (DisplayInfo *display_info, XButtonEvent * ev) { + ScreenInfo *screen_info; TRACE ("entering handleButtonRelease"); - XSendEvent (md->dpy, md->gnome_win, FALSE, SubstructureNotifyMask, (XEvent *) ev); + /* Get the screen structure from the root of the event */ + screen_info = myDisplayGetScreenFromRoot (display_info, ev->root); + if (!screen_info) + { + return; + } + + XSendEvent (display_info->dpy, screen_info->gnome_win, FALSE, SubstructureNotifyMask, (XEvent *) ev); } static void -handleDestroyNotify (ScreenData *md, XDestroyWindowEvent * ev) +handleDestroyNotify (DisplayInfo *display_info, XDestroyWindowEvent * ev) { Client *c = NULL; + ScreenInfo *screen_info; TRACE ("entering handleDestroyNotify"); TRACE ("DestroyNotify on window (0x%lx)", ev->window); - if (ev->window == md->systray) + screen_info = myDisplayGetScreenFromSystray (display_info, ev->window); + if (screen_info) { - /* md->systray window is gone */ - md->systray = None; + /* systray window is gone */ + screen_info->systray = None; return; } - c = clientGetFromWindow (ev->window, WINDOW); + c = myDisplayGetClientFromWindow (display_info, ev->window, WINDOW); if (c) { TRACE ("DestroyNotify for \"%s\" (0x%lx)", c->name, c->window); - clientPassFocus (c->md, c); + clientPassFocus (c->screen_info, c); clientUnframe (c, FALSE); } } static void -handleMapRequest (ScreenData *md, XMapRequestEvent * ev) +handleMapRequest (DisplayInfo *display_info, XMapRequestEvent * ev) { Client *c = NULL; @@ -848,10 +904,13 @@ handleMapRequest (ScreenData *md, XMapRequestEvent * ev) return; } - c = clientGetFromWindow (ev->window, WINDOW); + c = myDisplayGetClientFromWindow (display_info, ev->window, WINDOW); if (c) { + ScreenInfo *screen_info = c->screen_info; + TRACE ("handleMapRequest: clientShow"); + if (FLAG_TEST (c->flags, CLIENT_FLAG_MAP_PENDING)) { TRACE ("Ignoring MapRequest on window (0x%lx)", ev->window); @@ -859,7 +918,7 @@ handleMapRequest (ScreenData *md, XMapRequestEvent * ev) } clientShow (c, TRUE); if (FLAG_TEST (c->flags, CLIENT_FLAG_STICKY) || - (c->win_workspace == md->current_ws)) + (c->win_workspace == screen_info->current_ws)) { clientFocusNew(c); } @@ -867,19 +926,19 @@ handleMapRequest (ScreenData *md, XMapRequestEvent * ev) else { TRACE ("handleMapRequest: clientFrame"); - clientFrame (md, ev->window, FALSE); + clientFrame (display_info, ev->window, FALSE); } } static void -handleMapNotify (ScreenData *md, XMapEvent * ev) +handleMapNotify (DisplayInfo *display_info, XMapEvent * ev) { Client *c = NULL; TRACE ("entering handleMapNotify"); TRACE ("MapNotify on window (0x%lx)", ev->window); - c = clientGetFromWindow (ev->window, WINDOW); + c = myDisplayGetClientFromWindow (display_info, ev->window, WINDOW); if (c) { TRACE ("MapNotify for \"%s\" (0x%lx)", c->name, c->window); @@ -891,8 +950,9 @@ handleMapNotify (ScreenData *md, XMapEvent * ev) } static void -handleUnmapNotify (ScreenData *md, XUnmapEvent * ev) +handleUnmapNotify (DisplayInfo *display_info, XUnmapEvent * ev) { + ScreenInfo *screen_info; Client *c = NULL; TRACE ("entering handleUnmapNotify"); @@ -904,13 +964,14 @@ handleUnmapNotify (ScreenData *md, XUnmapEvent * ev) return; } - if ((ev->event != ev->window) && (ev->event != md->xroot || !ev->send_event)) + screen_info = myDisplayGetScreenFromWindow (display_info, ev->window); + if (screen_info && (ev->event != ev->window) && (ev->event != screen_info->xroot || !ev->send_event)) { TRACE ("handleUnmapNotify (): Event ignored"); return; } - c = clientGetFromWindow (ev->window, WINDOW); + c = myDisplayGetClientFromWindow (display_info, ev->window, WINDOW); if (c) { TRACE ("UnmapNotify for \"%s\" (0x%lx)", c->name, c->window); @@ -927,17 +988,18 @@ handleUnmapNotify (ScreenData *md, XUnmapEvent * ev) return; } - clientPassFocus (c->md, c); + screen_info = c->screen_info; + clientPassFocus (screen_info, c); /* * ICCCM spec states that a client wishing to switch * to WithdrawnState should send a synthetic UnmapNotify - * with the event field set to md->xroot if the client window + * with the event field set to root if the client window * is already unmapped. * Therefore, bypass the ignore_unmap counter and * unframe the client. */ - if ((ev->event == md->xroot) && (ev->send_event)) + if ((ev->event == screen_info->xroot) && (ev->send_event)) { TRACE ("ICCCM UnmapNotify for \"%s\"", c->name); clientUnframe (c, FALSE); @@ -957,26 +1019,34 @@ handleUnmapNotify (ScreenData *md, XUnmapEvent * ev) } static void -handleConfigureNotify (ScreenData *md, XConfigureEvent * ev) +handleConfigureNotify (DisplayInfo *display_info, XConfigureEvent * ev) { + ScreenInfo *screen_info; + TRACE ("entering handleConfigureNotify"); - if (ev->window == md->xroot) + screen_info = myDisplayGetScreenFromWindow (display_info, ev->window); + if (!screen_info) + { + return; + } + + if (ev->window == screen_info->xroot) { - TRACE ("ConfigureNotify on the md->xroot win (0x%lx)", ev->window); + TRACE ("ConfigureNotify on the screen_info->xroot win (0x%lx)", ev->window); #ifdef HAVE_RANDR XRRUpdateConfiguration (ev); #else - md->xscreen->width = ev->width; - md->xscreen->height = ev->height; + screen_info->xscreen->width = ev->width; + screen_info->xscreen->height = ev->height; #endif - placeSidewalks (md, params.wrap_workspaces); - clientScreenResize (); + placeSidewalks (screen_info, screen_info->params->wrap_workspaces); + clientScreenResize (screen_info); } } static void -handleConfigureRequest (ScreenData *md, XConfigureRequestEvent * ev) +handleConfigureRequest (DisplayInfo *display_info, XConfigureRequestEvent * ev) { Client *c = NULL; XWindowChanges wc; @@ -986,7 +1056,7 @@ handleConfigureRequest (ScreenData *md, XConfigureRequestEvent * ev) TRACE ("ConfigureRequest on window (0x%lx)", ev->window); /* Compress events - logic taken from kwin */ - while (XCheckTypedWindowEvent (md->dpy, ev->window, ConfigureRequest, &otherEvent)) + while (XCheckTypedWindowEvent (display_info->dpy, ev->window, ConfigureRequest, &otherEvent)) { if (otherEvent.xconfigurerequest.value_mask == ev->value_mask) { @@ -994,7 +1064,7 @@ handleConfigureRequest (ScreenData *md, XConfigureRequestEvent * ev) } else { - XPutBackEvent (md->dpy, &otherEvent); + XPutBackEvent (display_info->dpy, &otherEvent); break; } } @@ -1007,15 +1077,14 @@ handleConfigureRequest (ScreenData *md, XConfigureRequestEvent * ev) wc.stack_mode = ev->detail; wc.border_width = ev->border_width; - c = clientGetFromWindow (ev->window, WINDOW); + c = myDisplayGetClientFromWindow (display_info, ev->window, WINDOW); if (!c) { /* Some app tend or try to manipulate the wm frame to achieve fullscreen mode */ - c = clientGetFromWindow (ev->window, FRAME); + c = myDisplayGetClientFromWindow (display_info, ev->window, FRAME); if (c) { - TRACE ("client %s (0x%lx) is attempting to manipulate its frame!", - c->name, c->window); + TRACE ("client %s (0x%lx) is attempting to manipulate its frame!", c->name, c->window); if (ev->value_mask & CWX) { wc.x += frameLeft (c); @@ -1041,9 +1110,9 @@ handleConfigureRequest (ScreenData *md, XConfigureRequestEvent * ev) if (c) { gboolean constrained = FALSE; + ScreenInfo *screen_info = c->screen_info; - TRACE ("handleConfigureRequest managed window \"%s\" (0x%lx)", - c->name, c->window); + TRACE ("handleConfigureRequest managed window \"%s\" (0x%lx)", c->name, c->window); if (FLAG_TEST (c->flags, CLIENT_FLAG_MOVING_RESIZING)) { /* Sorry, but it's not the right time for configure request */ @@ -1062,12 +1131,12 @@ handleConfigureRequest (ScreenData *md, XConfigureRequestEvent * ev) int cx, cy; /* size request from fullscreen windows get fullscreen */ - + cx = frameX (c) + (frameWidth (c) / 2); cy = frameY (c) + (frameHeight (c) / 2); - monitor_nbr = gdk_screen_get_monitor_at_point (md->gscr, cx, cy); - gdk_screen_get_monitor_geometry (md->gscr, monitor_nbr, &rect); + monitor_nbr = gdk_screen_get_monitor_at_point (screen_info->gscr, cx, cy); + gdk_screen_get_monitor_geometry (screen_info->gscr, monitor_nbr, &rect); wc.x = rect.x; wc.y = rect.y; @@ -1110,7 +1179,7 @@ handleConfigureRequest (ScreenData *md, XConfigureRequestEvent * ev) /* Let's say that if the client performs a XRaiseWindow, we show the window if hidden */ if ((ev->value_mask & CWStackMode) && (wc.stack_mode == Above)) { - if ((c->win_workspace == md->current_ws) || + if ((c->win_workspace == screen_info->current_ws) || (FLAG_TEST (c->flags, CLIENT_FLAG_STICKY))) { if (FLAG_TEST (c->flags, CLIENT_FLAG_HIDDEN)) @@ -1120,18 +1189,17 @@ handleConfigureRequest (ScreenData *md, XConfigureRequestEvent * ev) } } #endif - clientConfigure (c, &wc, ev->value_mask, - (constrained ? CFG_CONSTRAINED : 0) | CFG_REQUEST); + clientConfigure (c, &wc, ev->value_mask, (constrained ? CFG_CONSTRAINED : 0) | CFG_REQUEST); } else { TRACE ("unmanaged configure request for win 0x%lx", ev->window); - XConfigureWindow (md->dpy, ev->window, ev->value_mask, &wc); + XConfigureWindow (display_info->dpy, ev->window, ev->value_mask, &wc); } } static void -handleEnterNotify (ScreenData *md, XCrossingEvent * ev) +handleEnterNotify (DisplayInfo *display_info, XCrossingEvent * ev) { Client *c = NULL; @@ -1146,24 +1214,33 @@ handleEnterNotify (ScreenData *md, XCrossingEvent * ev) TRACE ("EnterNotify on window (0x%lx)", ev->window); - c = clientGetFromWindow (ev->window, FRAME); - if (c && !(params.click_to_focus) && (clientAcceptFocus (c))) + c = myDisplayGetClientFromWindow (display_info, ev->window, FRAME); + if (c) { - TRACE ("EnterNotify window is \"%s\"", c->name); - if (!(c->type & (WINDOW_DOCK | WINDOW_DESKTOP))) + ScreenInfo *screen_info; + + screen_info = c->screen_info; + + if (!(screen_info->params->click_to_focus) && clientAcceptFocus (c)) { - clientSetFocus (c->md, c, ev->time, FOCUS_FORCE); - if (!(params.raise_on_click)) + TRACE ("EnterNotify window is \"%s\"", c->name); + if (!(c->type & (WINDOW_DOCK | WINDOW_DESKTOP))) { - clientPassGrabButton1 (c); + clientSetFocus (c->screen_info, c, ev->time, FOCUS_FORCE); + if (!(screen_info->params->raise_on_click)) + { + clientPassGrabButton1 (c); + } } } } } static void -handleLeaveNotify (ScreenData *md, XCrossingEvent * ev) +handleLeaveNotify (DisplayInfo *display_info, XCrossingEvent * ev) { + ScreenInfo *screen_info; + TRACE ("entering handleLeaveNotify"); if ((ev->mode == NotifyGrab) || (ev->mode == NotifyUngrab) @@ -1173,8 +1250,14 @@ handleLeaveNotify (ScreenData *md, XCrossingEvent * ev) return; } - if ((ev->window == MYWINDOW_XWINDOW (md->sidewalk[0])) || - (ev->window == MYWINDOW_XWINDOW (md->sidewalk[1]))) + screen_info = myDisplayGetScreenFromRoot (display_info, ev->root); + if (!screen_info) + { + return; + } + + if ((ev->window == MYWINDOW_XWINDOW (screen_info->sidewalk[0])) || + (ev->window == MYWINDOW_XWINDOW (screen_info->sidewalk[1]))) { TRACE ("Reset edge_scroll_x"); edge_scroll_x = 0; @@ -1182,8 +1265,9 @@ handleLeaveNotify (ScreenData *md, XCrossingEvent * ev) } static void -handleFocusIn (ScreenData *md, XFocusChangeEvent * ev) +handleFocusIn (DisplayInfo *display_info, XFocusChangeEvent * ev) { + ScreenInfo *screen_info; Client *c = NULL; TRACE ("entering handleFocusIn"); @@ -1214,41 +1298,44 @@ handleFocusIn (ScreenData *md, XFocusChangeEvent * ev) "NotifyDetailNone" : "(unknown)"); - if ((ev->window == md->xroot) && (ev->mode == NotifyNormal) && + screen_info = myDisplayGetScreenFromWindow (display_info, ev->window); + if (screen_info && (ev->window == screen_info->xroot) && (ev->mode == NotifyNormal) && (ev->detail == NotifyDetailNone)) { - /* Handle focus transition to md->xroot (means that an unknown - window has vanished and the focus is returned to the md->xroot + /* Handle focus transition to root (means that an unknown + window has vanished and the focus is returned to the root */ c = clientGetFocus (); if (c) { - clientSetFocus (c->md, c, GDK_CURRENT_TIME, FOCUS_FORCE); + clientSetFocus (c->screen_info, c, GDK_CURRENT_TIME, FOCUS_FORCE); } return; } - else if ((ev->mode == NotifyGrab) || (ev->mode == NotifyUngrab) || + + if ((ev->mode == NotifyGrab) || (ev->mode == NotifyUngrab) || (ev->detail > NotifyNonlinearVirtual)) { /* We're not interested in such notifications */ return; } - c = clientGetFromWindow (ev->window, WINDOW); + c = myDisplayGetClientFromWindow (display_info, ev->window, WINDOW); TRACE ("FocusIn on window (0x%lx)", ev->window); if (c) { TRACE ("focus set to \"%s\" (0x%lx)", c->name, c->window); - clientUpdateFocus (c->md, c, FOCUS_SORT); - if (params.raise_on_focus && !params.click_to_focus) + screen_info = screen_info; + clientUpdateFocus (screen_info, c, FOCUS_SORT); + if (screen_info->params->raise_on_focus && !screen_info->params->click_to_focus) { - reset_timeout (); + reset_timeout (screen_info); } } } static void -handleFocusOut (ScreenData *md, XFocusChangeEvent * ev) +handleFocusOut (DisplayInfo *display_info, XFocusChangeEvent * ev) { Client *c = NULL; @@ -1284,12 +1371,12 @@ handleFocusOut (ScreenData *md, XFocusChangeEvent * ev) && ((ev->detail == NotifyNonlinear) || (ev->detail == NotifyNonlinearVirtual))) { - c = clientGetFromWindow (ev->window, WINDOW); + c = myDisplayGetClientFromWindow (display_info, ev->window, WINDOW); TRACE ("FocusOut on window (0x%lx)", ev->window); if ((c) && (c == clientGetFocus ())) { TRACE ("focus lost from \"%s\" (0x%lx)", c->name, c->window); - clientUpdateFocus (md, NULL, NO_FOCUS_FLAG); + clientUpdateFocus (c->screen_info, NULL, NO_FOCUS_FLAG); clientPassGrabButton1 (NULL); /* Clear timeout */ clear_timeout (); @@ -1298,48 +1385,43 @@ handleFocusOut (ScreenData *md, XFocusChangeEvent * ev) } static void -handlePropertyNotify (ScreenData *md, XPropertyEvent * ev) +handlePropertyNotify (DisplayInfo *display_info, XPropertyEvent * ev) { + ScreenInfo *screen_info; Client *c = NULL; char *names; int length; TRACE ("entering handlePropertyNotify"); - c = clientGetFromWindow (ev->window, WINDOW); + c = myDisplayGetClientFromWindow (display_info, ev->window, WINDOW); if (c) { if (ev->atom == XA_WM_NORMAL_HINTS) { - TRACE - ("client \"%s\" (0x%lx) has received a XA_WM_NORMAL_HINTS notify", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a XA_WM_NORMAL_HINTS notify", c->name, c->window); clientGetWMNormalHints (c, TRUE); } else if ((ev->atom == XA_WM_NAME) || (ev->atom == net_wm_name)) { - TRACE ("client \"%s\" (0x%lx) has received a XA_WM_NAME notify", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a XA_WM_NAME notify" c->name, c->window); if (c->name) { free (c->name); } - getWindowName (md->dpy, c->window, &c->name); + getWindowName (display_info->dpy, c->window, &c->name); FLAG_SET (c->flags, CLIENT_FLAG_NAME_CHANGED); frameDraw (c, TRUE, FALSE); } else if (ev->atom == motif_wm_hints) { - TRACE - ("client \"%s\" (0x%lx) has received a motif_wm_hints notify", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a motif_wm_hints notify", c->name, c->window); clientGetMWMHints (c, TRUE); } else if (ev->atom == XA_WM_HINTS) { - TRACE ("client \"%s\" (0x%lx) has received a XA_WM_HINTS notify", - c->name, c->window); - c->wmhints = XGetWMHints (md->dpy, c->window); + TRACE ("client \"%s\" (0x%lx) has received a XA_WM_HINTS notify", c->name, c->window); + c->wmhints = XGetWMHints (display_info->dpy, c->window); if (c->wmhints) { if (c->wmhints->flags & WindowGroupHint) @@ -1350,29 +1432,23 @@ handlePropertyNotify (ScreenData *md, XPropertyEvent * ev) } else if (ev->atom == wm_protocols) { - TRACE - ("client \"%s\" (0x%lx) has received a wm_protocols notify", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a wm_protocols notify", c->name, c->window); clientGetWMProtocols (c); } else if (ev->atom == win_hints) { - TRACE ("client \"%s\" (0x%lx) has received a win_hints notify", - c->name, c->window); - getHint (md->dpy, c->window, win_hints, &c->win_hints); + TRACE ("client \"%s\" (0x%lx) has received a win_hints notify", c->name, c->window); + getHint (display_info->dpy, c->window, win_hints, &c->win_hints); } else if (ev->atom == net_wm_window_type) { - TRACE - ("client \"%s\" (0x%lx) has received a net_wm_window_type notify", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a net_wm_window_type notify", c->name, c->window); clientGetNetWmType (c); frameDraw (c, TRUE, FALSE); } else if ((ev->atom == net_wm_strut) || (ev->atom == net_wm_strut_partial)) { - TRACE ("client \"%s\" (0x%lx) has received a net_wm_strut notify", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a net_wm_strut notify", c->name, c->window); clientGetNetStruts (c); } else if (ev->atom == wm_colormap_windows) @@ -1385,7 +1461,7 @@ handlePropertyNotify (ScreenData *md, XPropertyEvent * ev) } else if (ev->atom == net_wm_user_time) { - if (getNetWMUserTime (md->dpy, c->window, &c->user_time)) + if (getNetWMUserTime (display_info->dpy, c->window, &c->user_time)) { FLAG_SET (c->flags, CLIENT_FLAG_HAS_USER_TIME); } @@ -1398,30 +1474,38 @@ handlePropertyNotify (ScreenData *md, XPropertyEvent * ev) free (c->startup_id); c->startup_id = NULL; } - getWindowStartupId (md->dpy, c->window, &c->startup_id); + getWindowStartupId (display_info->dpy, c->window, &c->startup_id); } #endif - + return; + } + + screen_info = myDisplayGetScreenFromWindow (display_info, ev->window); + if (!screen_info) + { + return; } - else if (ev->atom == net_desktop_names) + + if (ev->atom == net_desktop_names) { TRACE ("root has received a net_desktop_names notify"); - if (getUTF8String (md->dpy, md->xroot, net_desktop_names, &names, &length)) + if (getUTF8String (display_info->dpy, screen_info->xroot, net_desktop_names, &names, &length)) { - workspaceSetNames (names, length); + workspaceSetNames (screen_info, names, length); } } else if (ev->atom == gnome_panel_desktop_area) { TRACE ("root has received a gnome_panel_desktop_area notify"); - getGnomeDesktopMargins (md->dpy, md->screen, md->gnome_margins); - workspaceUpdateArea (md); + getGnomeDesktopMargins (display_info->dpy, screen_info->screen, screen_info->gnome_margins); + workspaceUpdateArea (screen_info); } } static void -handleClientMessage (ScreenData *md, XClientMessageEvent * ev) +handleClientMessage (DisplayInfo *display_info, XClientMessageEvent * ev) { + ScreenInfo *screen_info = NULL; Client *c = NULL; TRACE ("entering handleClientMessage"); @@ -1430,15 +1514,14 @@ handleClientMessage (ScreenData *md, XClientMessageEvent * ev) xfwm4 really treats transient differently */ - c = clientGetFromWindow (ev->window, WINDOW); + c = myDisplayGetClientFromWindow (display_info, ev->window, WINDOW); if (c) { - if ((ev->message_type == wm_change_state) && (ev->format == 32) - && (ev->data.l[0] == IconicState)) + screen_info = c->screen_info; + + if ((ev->message_type == wm_change_state) && (ev->format == 32) && (ev->data.l[0] == IconicState)) { - TRACE - ("client \"%s\" (0x%lx) has received a wm_change_state event", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a wm_change_state event", c->name, c->window); if (!FLAG_TEST (c->flags, CLIENT_FLAG_HIDDEN) && CLIENT_CAN_HIDE_WINDOW (c)) { @@ -1447,14 +1530,12 @@ handleClientMessage (ScreenData *md, XClientMessageEvent * ev) } else if ((ev->message_type == win_state) && (ev->format == 32)) { - TRACE ("client \"%s\" (0x%lx) has received a win_state event", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a win_state event", c->name, c->window); clientUpdateWinState (c, ev); } else if ((ev->message_type == win_layer) && (ev->format == 32)) { - TRACE ("client \"%s\" (0x%lx) has received a win_layer event", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a win_layer event", c->name, c->window); if ((ev->data.l[0] != c->win_layer) && !clientIsTransientOrModal (c)) { clientSetLayer (c, ev->data.l[0]); @@ -1463,8 +1544,7 @@ handleClientMessage (ScreenData *md, XClientMessageEvent * ev) } else if ((ev->message_type == win_workspace) && (ev->format == 32)) { - TRACE ("client \"%s\" (0x%lx) has received a win_workspace event", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a win_workspace event", c->name, c->window); if ((ev->data.l[0] != c->win_workspace) && !clientIsTransientOrModal (c)) { clientSetWorkspace (c, ev->data.l[0], TRUE); @@ -1472,9 +1552,7 @@ handleClientMessage (ScreenData *md, XClientMessageEvent * ev) } else if ((ev->message_type == net_wm_desktop) && (ev->format == 32)) { - TRACE - ("client \"%s\" (0x%lx) has received a net_wm_desktop event", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a net_wm_desktop event", c->name, c->window); if (!clientIsTransientOrModal (c)) { if (ev->data.l[0] == ALL_WORKSPACES) @@ -1503,93 +1581,81 @@ handleClientMessage (ScreenData *md, XClientMessageEvent * ev) } else if ((ev->message_type == net_close_window) && (ev->format == 32)) { - TRACE - ("client \"%s\" (0x%lx) has received a net_close_window event", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a net_close_window event", c->name, c->window); clientClose (c); } else if ((ev->message_type == net_wm_state) && (ev->format == 32)) { - TRACE ("client \"%s\" (0x%lx) has received a net_wm_state event", - c->name, c->window); + TRACE ("client \"%s\" (0x%lx) has received a net_wm_state event", c->name, c->window); clientUpdateNetState (c, ev); } - else if ((ev->message_type == net_wm_moveresize) - && (ev->format == 32)) + else if ((ev->message_type == net_wm_moveresize) && (ev->format == 32)) { - TRACE - ("client \"%s\" (0x%lx) has received a net_wm_moveresize event", - c->name, c->window); - g_message (_("%s: Operation not supported (yet)\n"), - g_get_prgname ()); + TRACE ("client \"%s\" (0x%lx) has received a net_wm_moveresize event", c->name, c->window); + g_message (_("%s: Operation not supported (yet)\n"), g_get_prgname ()); /* TBD */ } - else if ((ev->message_type == net_active_window) - && (ev->format == 32)) + else if ((ev->message_type == net_active_window) && (ev->format == 32)) { - TRACE - ("client \"%s\" (0x%lx) has received a net_active_window event", - c->name, c->window); - clientSetWorkspace (c, md->current_ws, TRUE); + TRACE ("client \"%s\" (0x%lx) has received a net_active_window event", c->name, c->window); + clientSetWorkspace (c, screen_info->current_ws, TRUE); clientShow (c, TRUE); clientRaise (c); - clientSetFocus (c->md, c, GDK_CURRENT_TIME, NO_FOCUS_FLAG); + clientSetFocus (screen_info, c, GDK_CURRENT_TIME, NO_FOCUS_FLAG); clientPassGrabButton1 (c); } } else { - if (((ev->message_type == win_workspace) - || (ev->message_type == net_current_desktop)) - && (ev->format == 32)) + screen_info = myDisplayGetScreenFromWindow (display_info, ev->window); + if (!screen_info) + { + return; + } + + if (((ev->message_type == win_workspace) || (ev->message_type == net_current_desktop)) && (ev->format == 32)) { - TRACE - ("root has received a win_workspace or a net_current_desktop event"); - if (ev->data.l[0] != md->current_ws) + TRACE ("root has received a win_workspace or a net_current_desktop event"); + if (ev->data.l[0] != screen_info->current_ws) { - workspaceSwitch (md, ev->data.l[0], NULL); + workspaceSwitch (screen_info, ev->data.l[0], NULL); } } - else if (((ev->message_type == win_workspace_count) - || (ev->message_type == net_number_of_desktops)) - && (ev->format == 32)) + else if (((ev->message_type == win_workspace_count) || (ev->message_type == net_number_of_desktops)) && (ev->format == 32)) { TRACE ("root has received a win_workspace_count event"); - if (ev->data.l[0] != params.workspace_count) + if (ev->data.l[0] != screen_info->workspace_count) { - workspaceSetCount (md, ev->data.l[0]); + workspaceSetCount (screen_info, ev->data.l[0]); } } - else if ((ev->message_type == net_system_tray_manager) - && (ev->data.l[1] == net_system_tray_selection) - && (ev->format == 32)) + else if ((ev->message_type == net_system_tray_manager) && (ev->data.l[1] == screen_info->net_system_tray_selection) && (ev->format == 32)) { TRACE ("root has received a net_system_tray_manager event"); - md->systray = getSystrayWindow (md->dpy); + screen_info->systray = getSystrayWindow (display_info->dpy, + screen_info->net_system_tray_selection); } - else if ((ev->message_type == net_showing_desktop) - && (ev->format == 32)) + else if ((ev->message_type == net_showing_desktop) && (ev->format == 32)) { TRACE ("root has received a net_showing_desktop event"); - clientToggleShowDesktop (md, ev->data.l[0]); - setHint (md->dpy, md->xroot, net_showing_desktop, ev->data.l[0]); + clientToggleShowDesktop (screen_info, ev->data.l[0]); + setHint (display_info->dpy, screen_info->xroot, net_showing_desktop, ev->data.l[0]); } else { - TRACE ("unidentified client message for window 0x%lx", - ev->window); + TRACE ("unidentified client message for window 0x%lx", ev->window); } } } static void -handleShape (ScreenData *md, XShapeEvent * ev) +handleShape (DisplayInfo *display_info, XShapeEvent * ev) { Client *c = NULL; TRACE ("entering handleShape"); - c = clientGetFromWindow (ev->window, WINDOW); + c = myDisplayGetClientFromWindow (display_info, ev->window, WINDOW); if (c) { frameDraw (c, FALSE, TRUE); @@ -1597,13 +1663,13 @@ handleShape (ScreenData *md, XShapeEvent * ev) } static void -handleColormapNotify (ScreenData *md, XColormapEvent * ev) +handleColormapNotify (DisplayInfo *display_info, XColormapEvent * ev) { Client *c = NULL; TRACE ("entering handleColormapNotify"); - c = clientGetFromWindow (ev->window, WINDOW); + c = myDisplayGetClientFromWindow (display_info, ev->window, WINDOW); if ((c) && (ev->window == c->window) && (ev->new)) { if (c == clientGetFocus ()) @@ -1614,7 +1680,7 @@ handleColormapNotify (ScreenData *md, XColormapEvent * ev) } static void -handleEvent (ScreenData *md, XEvent * ev) +handleEvent (DisplayInfo *display_info, XEvent * ev) { TRACE ("entering handleEvent"); @@ -1622,67 +1688,67 @@ handleEvent (ScreenData *md, XEvent * ev) switch (ev->type) { case MotionNotify: - handleMotionNotify (md, (XMotionEvent *) ev); + handleMotionNotify (display_info, (XMotionEvent *) ev); break; case KeyPress: - handleKeyPress (md, (XKeyEvent *) ev); + handleKeyPress (display_info, (XKeyEvent *) ev); break; case ButtonPress: - handleButtonPress (md, (XButtonEvent *) ev); + handleButtonPress (display_info, (XButtonEvent *) ev); break; case ButtonRelease: - handleButtonRelease (md, (XButtonEvent *) ev); + handleButtonRelease (display_info, (XButtonEvent *) ev); break; case DestroyNotify: - handleDestroyNotify (md, (XDestroyWindowEvent *) ev); + handleDestroyNotify (display_info, (XDestroyWindowEvent *) ev); break; case UnmapNotify: - handleUnmapNotify (md, (XUnmapEvent *) ev); + handleUnmapNotify (display_info, (XUnmapEvent *) ev); break; case MapRequest: - handleMapRequest (md, (XMapRequestEvent *) ev); + handleMapRequest (display_info, (XMapRequestEvent *) ev); break; case MapNotify: - handleMapNotify (md, (XMapEvent *) ev); + handleMapNotify (display_info, (XMapEvent *) ev); break; case ConfigureNotify: - handleConfigureNotify (md, (XConfigureEvent *) ev); + handleConfigureNotify (display_info, (XConfigureEvent *) ev); break; case ConfigureRequest: - handleConfigureRequest (md, (XConfigureRequestEvent *) ev); + handleConfigureRequest (display_info, (XConfigureRequestEvent *) ev); break; case EnterNotify: - handleEnterNotify (md, (XCrossingEvent *) ev); + handleEnterNotify (display_info, (XCrossingEvent *) ev); break; case LeaveNotify: - handleLeaveNotify (md, (XCrossingEvent *) ev); + handleLeaveNotify (display_info, (XCrossingEvent *) ev); break; case FocusIn: - handleFocusIn (md, (XFocusChangeEvent *) ev); + handleFocusIn (display_info, (XFocusChangeEvent *) ev); break; case FocusOut: - handleFocusOut (md, (XFocusChangeEvent *) ev); + handleFocusOut (display_info, (XFocusChangeEvent *) ev); break; case PropertyNotify: - handlePropertyNotify (md, (XPropertyEvent *) ev); + handlePropertyNotify (display_info, (XPropertyEvent *) ev); break; case ClientMessage: - handleClientMessage (md, (XClientMessageEvent *) ev); + handleClientMessage (display_info, (XClientMessageEvent *) ev); break; case ColormapNotify: - handleColormapNotify (md, (XColormapEvent *) ev); + handleColormapNotify (display_info, (XColormapEvent *) ev); break; default: - if (md->shape && (ev->type == md->shape_event)) + if (display_info->shape && (ev->type == display_info->shape_event)) { - handleShape (md, (XShapeEvent *) ev); + handleShape (display_info, (XShapeEvent *) ev); } } - if (!gdk_events_pending () && !XPending (md->dpy)) + if (!gdk_events_pending () && !XPending (display_info->dpy)) { if (xfwm4_reload) { - reloadSettings (md, UPDATE_ALL); + reloadSettings (display_info, UPDATE_ALL); xfwm4_reload = FALSE; } else if (xfwm4_quit) @@ -1695,12 +1761,12 @@ handleEvent (ScreenData *md, XEvent * ev) XfceFilterStatus xfwm4_event_filter (XEvent * xevent, gpointer data) { - ScreenData *md = (ScreenData *) data; + DisplayInfo *display_info = (DisplayInfo *) data; - g_assert (md); + g_assert (display_info); TRACE ("entering xfwm4_event_filter"); - handleEvent (md, xevent); + handleEvent (display_info, xevent); TRACE ("leaving xfwm4_event_filter"); return XEV_FILTER_STOP; } @@ -1708,22 +1774,20 @@ xfwm4_event_filter (XEvent * xevent, gpointer data) /* GTK specific stuff */ static void -menu_callback (Menu * menu, MenuOp op, Window client_xwindow, - gpointer menu_data, gpointer item_data) +menu_callback (Menu * menu, MenuOp op, Window client_xwindow, gpointer menu_data, gpointer item_data) { Client *c = NULL; TRACE ("entering menu_callback"); - if (!myWindowDeleted(&menu_event_window)) + if (!xfwmWindowDeleted(&menu_event_window)) { - myWindowDelete (&menu_event_window); + xfwmWindowDelete (&menu_event_window); } if (menu_data) { c = (Client *) menu_data; - c = clientGetFromWindow (c->window, WINDOW); if (!c) { menu_free (menu); @@ -1793,22 +1857,24 @@ menu_callback (Menu * menu, MenuOp op, Window client_xwindow, void initMenuEventWin (void) { - myWindowInit (&menu_event_window); + xfwmWindowInit (&menu_event_window); } static gboolean show_popup_cb (GtkWidget * widget, GdkEventButton * ev, gpointer data) { + ScreenInfo *screen_info = NULL; + DisplayInfo *display_info = NULL; Menu *menu; MenuOp ops; MenuOp insensitive; - Client *c = NULL; + Client *c = (Client *) data; gint x = ev->x_root; gint y = ev->y_root; - + TRACE ("entering show_popup_cb"); - if (((ev->button == 1) || (ev->button == 3)) && (c = (Client *) data)) + if ((c) && ((ev->button == 1) || (ev->button == 3))) { c->button_pressed[MENU_BUTTON] = TRUE; frameDraw (c, FALSE, FALSE); @@ -1918,20 +1984,21 @@ show_popup_cb (GtkWidget * widget, GdkEventButton * ev, gpointer data) { return (TRUE); } - - if (button_handler_id) + + /* c is not null here */ + screen_info = c->screen_info; + display_info = screen_info->display_info; + + if (screen_info->button_handler_id) { - g_signal_handler_disconnect (GTK_OBJECT (xfce_get_default_gtk_widget (c->md->xfilter)), - button_handler_id); + g_signal_handler_disconnect (GTK_OBJECT (myScreenGetGtkWidget (screen_info)), screen_info->button_handler_id); } - button_handler_id = - g_signal_connect (GTK_OBJECT (xfce_get_default_gtk_widget (c->md->xfilter)), - "button_press_event", GTK_SIGNAL_FUNC (show_popup_cb), - (gpointer) NULL); + screen_info->button_handler_id = g_signal_connect (GTK_OBJECT (myScreenGetGtkWidget (screen_info)), + "button_press_event", GTK_SIGNAL_FUNC (show_popup_cb), (gpointer) NULL); - if (!myWindowDeleted(&menu_event_window)) + if (!xfwmWindowDeleted(&menu_event_window)) { - myWindowDelete (&menu_event_window); + xfwmWindowDelete (&menu_event_window); } /* Since all button press/release events are catched by the windows frames, there is some @@ -1944,14 +2011,15 @@ show_popup_cb (GtkWidget * widget, GdkEventButton * ev, gpointer data) Don't forget to delete that window once the menu is closed, though, or we'll get in trouble. */ - myWindowTemp (c->md->dpy, c->md->xroot, &menu_event_window, 0, 0, - gdk_screen_get_width (c->md->gscr), - gdk_screen_get_height (c->md->gscr), + xfwmWindowTemp (clientGetXDisplay (c), screen_info->xroot, &menu_event_window, 0, 0, + gdk_screen_get_width (screen_info->gscr), + gdk_screen_get_height (screen_info->gscr), NoEventMask); - menu = menu_default (ops, insensitive, menu_callback, c->win_workspace, - params.workspace_count, params.workspace_names, - params.workspace_names_length, c->md->xfilter, c); + menu = menu_default (screen_info->gscr, ops, insensitive, menu_callback, + c->win_workspace, screen_info->workspace_count, + screen_info->workspace_names, screen_info->workspace_names_length, + display_info->xfilter, c); if (!menu_popup (menu, x, y, ev->button, ev->time)) { @@ -1959,14 +2027,14 @@ show_popup_cb (GtkWidget * widget, GdkEventButton * ev, gpointer data) gdk_beep (); c->button_pressed[MENU_BUTTON] = FALSE; frameDraw (c, FALSE, FALSE); - myWindowDelete (&menu_event_window); + xfwmWindowDelete (&menu_event_window); menu_free (menu); } return (TRUE); } static gboolean -set_reload (ScreenData *md) +set_reload (void) { TRACE ("setting reload flag so all prefs will be reread at next event loop"); xfwm4_reload = TRUE; @@ -1974,16 +2042,18 @@ set_reload (ScreenData *md) } static gboolean -dbl_click_time (void) +dbl_click_time (gpointer data) { + DisplayInfo *display_info = (DisplayInfo *) data; GValue tmp_val = { 0, }; + g_return_val_if_fail (display_info, TRUE); TRACE ("setting dbl_click_time"); - + g_value_init (&tmp_val, G_TYPE_INT); if (gdk_setting_get ("gtk-double-click-time", &tmp_val)) { - params.dbl_click_time = abs (g_value_get_int (&tmp_val)); + display_info->dbl_click_time = abs (g_value_get_int (&tmp_val)); } return (TRUE); @@ -1992,8 +2062,6 @@ dbl_click_time (void) static gboolean client_event_cb (GtkWidget * widget, GdkEventClient * ev, gpointer data) { - ScreenData *md = (ScreenData *) data; - TRACE ("entering client_event_cb"); if (!atom_rcfiles) @@ -2003,31 +2071,31 @@ client_event_cb (GtkWidget * widget, GdkEventClient * ev, gpointer data) if (ev->message_type == atom_rcfiles) { - set_reload (md); + set_reload (); } return (FALSE); } void -initGtkCallbacks (ScreenData *md) +initGtkCallbacks (ScreenInfo *screen_info) { GtkSettings *settings; - button_handler_id = - g_signal_connect (GTK_OBJECT (xfce_get_default_gtk_widget (md->xfilter)), - "button_press_event", GTK_SIGNAL_FUNC (show_popup_cb), (gpointer) md); - g_signal_connect (GTK_OBJECT (xfce_get_default_gtk_widget (md->xfilter)), "client_event", - GTK_SIGNAL_FUNC (client_event_cb), (gpointer) md); - + screen_info->button_handler_id = + g_signal_connect (GTK_OBJECT (myScreenGetGtkWidget (screen_info)), + "button_press_event", GTK_SIGNAL_FUNC (show_popup_cb), (gpointer) NULL); + g_signal_connect (GTK_OBJECT (myScreenGetGtkWidget (screen_info)), "client_event", + GTK_SIGNAL_FUNC (client_event_cb), NULL); settings = gtk_settings_get_default (); if (settings) { g_signal_connect (settings, "notify::gtk-theme-name", - G_CALLBACK (set_reload), (gpointer) md); + G_CALLBACK (set_reload), NULL); g_signal_connect (settings, "notify::gtk-font-name", - G_CALLBACK (set_reload), (gpointer) md); + G_CALLBACK (set_reload), NULL); g_signal_connect (settings, "notify::gtk-double-click-time", - G_CALLBACK (dbl_click_time), (gpointer) md); + G_CALLBACK (dbl_click_time), (gpointer) screen_info->display_info); } } + diff --git a/src/events.h b/src/events.h index a6a370053..015571a80 100644 --- a/src/events.h +++ b/src/events.h @@ -37,6 +37,6 @@ void initMenuEventWin (void); XfceFilterStatus xfwm4_event_filter (XEvent * xevent, gpointer data); -void initGtkCallbacks (ScreenData *); +void initGtkCallbacks (ScreenInfo *); #endif /* INC_EVENTS_H */ diff --git a/src/focus.c b/src/focus.c index 5e1ab7371..62e2f422b 100644 --- a/src/focus.c +++ b/src/focus.c @@ -56,7 +56,7 @@ static Client *pending_focus = NULL; static Client *last_ungrab = NULL; static ClientPair -clientGetTopMostFocusable (ScreenData *md, int layer, Client * exclude) +clientGetTopMostFocusable (ScreenInfo *screen_info, int layer, Client * exclude) { ClientPair top_client; Client *c; @@ -65,7 +65,7 @@ clientGetTopMostFocusable (ScreenData *md, int layer, Client * exclude) TRACE ("entering clientGetTopMostFocusable"); top_client.prefered = top_client.highest = NULL; - for (index = windows_stack; index; index = g_list_next (index)) + for (index = screen_info->windows_stack; index; index = g_list_next (index)) { c = (Client *) index->data; TRACE ("*** stack window \"%s\" (0x%lx), layer %i", c->name, @@ -98,25 +98,26 @@ clientGetTopMostFocusable (ScreenData *md, int layer, Client * exclude) } void -clientFocusTop (ScreenData *md, int layer) +clientFocusTop (ScreenInfo *screen_info, int layer) { ClientPair top_client; - top_client = clientGetTopMostFocusable (md, layer, NULL); + top_client = clientGetTopMostFocusable (screen_info, layer, NULL); if (top_client.prefered) { - clientSetFocus (md, top_client.prefered, GDK_CURRENT_TIME, NO_FOCUS_FLAG); + clientSetFocus (screen_info, top_client.prefered, GDK_CURRENT_TIME, NO_FOCUS_FLAG); } else { - clientSetFocus (md, top_client.highest, GDK_CURRENT_TIME, NO_FOCUS_FLAG); + clientSetFocus (screen_info, top_client.highest, GDK_CURRENT_TIME, NO_FOCUS_FLAG); } } void clientFocusNew(Client * c) { - gboolean give_focus = params.focus_new; + ScreenInfo *screen_info; + gboolean give_focus; g_return_if_fail (c != NULL); @@ -124,7 +125,8 @@ clientFocusNew(Client * c) { return; } - + screen_info = c->screen_info; + give_focus = screen_info->params->focus_new; #if 0 /* Try to avoid focus stealing */ if (client_focus) @@ -143,7 +145,7 @@ clientFocusNew(Client * c) if (give_focus || FLAG_TEST(c->flags, CLIENT_FLAG_STATE_MODAL)) { - clientSetFocus (c->md, c, GDK_CURRENT_TIME, FOCUS_IGNORE_MODAL); + clientSetFocus (c->screen_info, c, GDK_CURRENT_TIME, FOCUS_IGNORE_MODAL); clientPassGrabButton1 (c); } else @@ -176,7 +178,7 @@ clientSelectMask (Client * c, int mask) { okay = FALSE; } - if ((c->win_workspace != c->md->current_ws) && !(mask & INCLUDE_ALL_WORKSPACES)) + if ((c->win_workspace != c->screen_info->current_ws) && !(mask & INCLUDE_ALL_WORKSPACES)) { okay = FALSE; } @@ -194,7 +196,8 @@ clientGetNext (Client * c, int mask) if (c) { - for (c2 = c->next, i = 0; (c2) && (i < client_count); + ScreenInfo *screen_info = c->screen_info; + for (c2 = c->next, i = 0; (c2) && (i < screen_info->client_count); c2 = c2->next, i++) { if (c2->type & (WINDOW_SPLASHSCREEN | WINDOW_DOCK | WINDOW_DESKTOP)) @@ -220,7 +223,8 @@ clientGetPrevious (Client * c, int mask) if (c) { - for (c2 = c->prev, i = 0; (c2) && (i < client_count); + ScreenInfo *screen_info = c->screen_info; + for (c2 = c->prev, i = 0; (c2) && (i < screen_info->client_count); c2 = c2->prev, i++) { if (c2->type & (WINDOW_SPLASHSCREEN | WINDOW_DOCK | WINDOW_DESKTOP)) @@ -237,7 +241,7 @@ clientGetPrevious (Client * c, int mask) } void -clientPassFocus (ScreenData *md, Client * c) +clientPassFocus (ScreenInfo *screen_info, Client * c) { Client *new_focus = NULL; Client *current_focus = client_focus; @@ -260,8 +264,8 @@ clientPassFocus (ScreenData *md, Client * c) return; } - top_most = clientGetTopMostFocusable (md, look_in_layer, c); - if (params.click_to_focus) + top_most = clientGetTopMostFocusable (screen_info, look_in_layer, c); + if (screen_info->params->click_to_focus) { if ((c) && clientIsModal (c)) { @@ -280,15 +284,15 @@ clientPassFocus (ScreenData *md, Client * c) } } } - else if (XQueryPointer (md->dpy, md->xroot, &dr, &window, &rx, &ry, &wx, &wy, &mask)) + else if (XQueryPointer (myScreenGetXDisplay (screen_info), screen_info->xroot, &dr, &window, &rx, &ry, &wx, &wy, &mask)) { - new_focus = clientAtPosition (rx, ry, c); + new_focus = clientAtPosition (screen_info, rx, ry, c); } if (!new_focus) { new_focus = top_most.prefered ? top_most.prefered : top_most.highest; } - clientSetFocus (md, new_focus, GDK_CURRENT_TIME, FOCUS_IGNORE_MODAL | FOCUS_FORCE); + clientSetFocus (screen_info, new_focus, GDK_CURRENT_TIME, FOCUS_IGNORE_MODAL | FOCUS_FORCE); if (new_focus == top_most.highest) { clientPassGrabButton1 (new_focus); @@ -327,24 +331,27 @@ clientAcceptFocus (Client * c) void clientSortRing(Client *c) { + ScreenInfo *screen_info; + g_return_if_fail (c != NULL); TRACE ("Sorting..."); - if (client_count > 2 && c != clients) + screen_info = c->screen_info; + if (screen_info->client_count > 2 && c != screen_info->clients) { c->prev->next = c->next; c->next->prev = c->prev; - c->prev = clients->prev; - c->next = clients; - clients->prev->next = c; - clients->prev = c; + c->prev = screen_info->clients->prev; + c->next = screen_info->clients; + screen_info->clients->prev->next = c; + screen_info->clients->prev = c; } - clients = c; + screen_info->clients = c; } void -clientUpdateFocus (ScreenData *md, Client * c, unsigned short flags) +clientUpdateFocus (ScreenInfo *screen_info, Client * c, unsigned short flags) { Client *c2 = ((client_focus != c) ? client_focus : NULL); unsigned long data[2]; @@ -410,12 +417,12 @@ clientUpdateFocus (ScreenData *md, Client * c, unsigned short flags) frameDraw (c2, FALSE, FALSE); } data[1] = None; - XChangeProperty (md->dpy, md->xroot, net_active_window, XA_WINDOW, 32, + XChangeProperty (myScreenGetXDisplay (screen_info), screen_info->xroot, net_active_window, XA_WINDOW, 32, PropModeReplace, (unsigned char *) data, 2); } void -clientSetFocus (ScreenData *md, Client * c, Time timestamp, unsigned short flags) +clientSetFocus (ScreenInfo *screen_info, Client * c, Time timestamp, unsigned short flags) { Client *c2; @@ -448,13 +455,13 @@ clientSetFocus (ScreenData *md, Client * c, Time timestamp, unsigned short flags if (FLAG_TEST (c->wm_flags, WM_FLAG_INPUT)) { pending_focus = c; - XSetInputFocus (md->dpy, c->window, RevertToPointerRoot, timestamp); + XSetInputFocus (myScreenGetXDisplay (screen_info), c->window, RevertToPointerRoot, timestamp); } if (FLAG_TEST(c->wm_flags, WM_FLAG_TAKEFOCUS)) { - sendClientMessage (c->md, c->window, wm_protocols, wm_takefocus, timestamp); + sendClientMessage (c->screen_info, c->window, wm_protocols, wm_takefocus, timestamp); } - XFlush (md->dpy); + XFlush (myScreenGetXDisplay (screen_info)); } else { @@ -467,13 +474,13 @@ clientSetFocus (ScreenData *md, Client * c, Time timestamp, unsigned short flags if (c2) { frameDraw (c2, FALSE, FALSE); - XChangeProperty (c2->md->dpy, c2->md->xroot, net_active_window, XA_WINDOW, 32, + XChangeProperty (clientGetXDisplay (c2), c2->screen_info->xroot, net_active_window, XA_WINDOW, 32, PropModeReplace, (unsigned char *) data, 2); } - XChangeProperty (md->dpy, md->xroot, net_active_window, XA_WINDOW, 32, + XChangeProperty (myScreenGetXDisplay (screen_info), screen_info->xroot, net_active_window, XA_WINDOW, 32, PropModeReplace, (unsigned char *) data, 2); - XSetInputFocus (md->dpy, md->gnome_win, RevertToPointerRoot, GDK_CURRENT_TIME); - XFlush (md->dpy); + XSetInputFocus (myScreenGetXDisplay (screen_info), screen_info->gnome_win, RevertToPointerRoot, GDK_CURRENT_TIME); + XFlush (myScreenGetXDisplay (screen_info)); } } @@ -496,7 +503,7 @@ clientGrabButton1 (Client * c) TRACE ("entering clientGrabButton1"); TRACE ("grabbing buttons for client \"%s\" (0x%lx)", c->name, c->window); - grabButton(c->md->dpy, Button1, 0, c->window); + grabButton(clientGetXDisplay (c), Button1, 0, c->window); } void @@ -506,7 +513,7 @@ clientUngrabButton1 (Client * c) TRACE ("entering clientUngrabButton1"); TRACE ("ungrabing buttons for client \"%s\" (0x%lx)", c->name, c->window); - ungrabButton(c->md->dpy, Button1, 0, c->window); + ungrabButton(clientGetXDisplay (c), Button1, 0, c->window); } void diff --git a/src/focus.h b/src/focus.h index 59861c8a2..cfcba00e7 100644 --- a/src/focus.h +++ b/src/focus.h @@ -34,16 +34,16 @@ #define FOCUS_IGNORE_MODAL (1<<1) #define FOCUS_FORCE (1<<2) -void clientFocusTop (ScreenData *, int); +void clientFocusTop (ScreenInfo *, int); void clientFocusNew(Client *); gboolean clientSelectMask (Client *, int); Client *clientGetNext (Client *, int); Client *clientGetPrevious (Client *, int); -void clientPassFocus (ScreenData *, Client *); +void clientPassFocus (ScreenInfo *, Client *); gboolean clientAcceptFocus (Client *); void clientSortRing(Client *); -void clientUpdateFocus (ScreenData *, Client *, unsigned short); -void clientSetFocus (ScreenData *, Client *, Time, unsigned short); +void clientUpdateFocus (ScreenInfo *, Client *, unsigned short); +void clientSetFocus (ScreenInfo *, Client *, Time, unsigned short); void clientClearFocus (void); Client *clientGetFocus (void); void clientGrabButton1 (Client *); diff --git a/src/frame.c b/src/frame.c index cacc04d71..722db1d7b 100644 --- a/src/frame.c +++ b/src/frame.c @@ -43,7 +43,7 @@ frameLeft (Client * c) if (FLAG_TEST_AND_NOT (c->flags, CLIENT_FLAG_HAS_BORDER, CLIENT_FLAG_FULLSCREEN)) { - return params.sides[SIDE_LEFT][ACTIVE].width; + return c->screen_info->sides[SIDE_LEFT][ACTIVE].width; } return 0; } @@ -56,7 +56,7 @@ frameRight (Client * c) if (FLAG_TEST_AND_NOT (c->flags, CLIENT_FLAG_HAS_BORDER, CLIENT_FLAG_FULLSCREEN)) { - return params.sides[SIDE_RIGHT][ACTIVE].width; + return c->screen_info->sides[SIDE_RIGHT][ACTIVE].width; } return 0; } @@ -69,7 +69,7 @@ frameTop (Client * c) if (FLAG_TEST_AND_NOT (c->flags, CLIENT_FLAG_HAS_BORDER, CLIENT_FLAG_FULLSCREEN)) { - return params.title[TITLE_3][ACTIVE].height; + return c->screen_info->title[TITLE_3][ACTIVE].height; } return 0; } @@ -82,7 +82,7 @@ frameBottom (Client * c) if (FLAG_TEST_AND_NOT (c->flags, CLIENT_FLAG_HAS_BORDER, CLIENT_FLAG_FULLSCREEN)) { - return params.sides[SIDE_BOTTOM][ACTIVE].height; + return c->screen_info->sides[SIDE_BOTTOM][ACTIVE].height; } return 0; } @@ -146,8 +146,7 @@ frameHeight (Client * c) } static void -fillRectangle (Display *dpy, int screen, Drawable d, Pixmap pm, int x, int y, int width, - int height) +fillRectangle (Display *dpy, int screen, Drawable d, Pixmap pm, int x, int y, int width, int height) { XGCValues gv; GC gc; @@ -178,16 +177,17 @@ fillRectangle (Display *dpy, int screen, Drawable d, Pixmap pm, int x, int y, in } static void -frameCreateTitlePixmap (Client * c, int state, int left, int right, - MyPixmap * pm) +frameCreateTitlePixmap (Client * c, int state, int left, int right, XfwmPixmap * pm) { - int width, x = 0, tp = 0, w1 = 0, w2, w3, w4, w5, temp; - int voffset = 0; + ScreenInfo *screen_info = c->screen_info; + DisplayInfo *display_info = screen_info->display_info; GdkPixmap *gpixmap = NULL; GdkGCValues values; GdkGC *gc = NULL; PangoLayout *layout = NULL; PangoRectangle logical_rect; + int width, x = 0, tp = 0, w1 = 0, w2, w3, w4, w5, temp; + int voffset = 0; TRACE ("entering frameCreateTitlePixmap"); @@ -199,8 +199,8 @@ frameCreateTitlePixmap (Client * c, int state, int left, int right, } width = - frameWidth (c) - params.corners[CORNER_TOP_LEFT][ACTIVE].width - - params.corners[CORNER_TOP_RIGHT][ACTIVE].width; + frameWidth (c) - screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width - + screen_info->corners[CORNER_TOP_RIGHT][ACTIVE].width; if (width < 1) { pm->pixmap = None; @@ -210,31 +210,31 @@ frameCreateTitlePixmap (Client * c, int state, int left, int right, return; } - if (left < params.corners[CORNER_TOP_LEFT][ACTIVE].width) + if (left < screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width) { - left = params.corners[CORNER_TOP_LEFT][ACTIVE].width; + left = screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width; } if (right > - frameWidth (c) - params.corners[CORNER_TOP_RIGHT][ACTIVE].width) + frameWidth (c) - screen_info->corners[CORNER_TOP_RIGHT][ACTIVE].width) { right = - frameWidth (c) - params.corners[CORNER_TOP_RIGHT][ACTIVE].width; + frameWidth (c) - screen_info->corners[CORNER_TOP_RIGHT][ACTIVE].width; } - if (right < params.corners[CORNER_TOP_LEFT][ACTIVE].width) + if (right < screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width) { - right = params.corners[CORNER_TOP_LEFT][ACTIVE].width; + right = screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width; } - left = left - params.corners[CORNER_TOP_LEFT][ACTIVE].width; - right = right - params.corners[CORNER_TOP_LEFT][ACTIVE].width; + left = left - screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width; + right = right - screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width; - w2 = params.title[TITLE_2][ACTIVE].width; - w4 = params.title[TITLE_4][ACTIVE].width; + w2 = screen_info->title[TITLE_2][ACTIVE].width; + w4 = screen_info->title[TITLE_4][ACTIVE].width; - layout = gtk_widget_create_pango_layout (xfce_get_default_gtk_widget (c->md->xfilter), c->name); + layout = gtk_widget_create_pango_layout (myScreenGetGtkWidget (screen_info), c->name); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); - if (params.full_width_title) + if (screen_info->params->full_width_title) { w1 = left; w5 = width - right; @@ -243,21 +243,21 @@ frameCreateTitlePixmap (Client * c, int state, int left, int right, { w3 = 0; } - switch (params.title_alignment) + switch (screen_info->params->title_alignment) { case ALIGN_LEFT: - tp = params.title_horizontal_offset; + tp = screen_info->params->title_horizontal_offset; break; case ALIGN_RIGHT: - tp = w3 - logical_rect.width - params.title_horizontal_offset; + tp = w3 - logical_rect.width - screen_info->params->title_horizontal_offset; break; case ALIGN_CENTER: tp = (w3 >> 1) - (logical_rect.width >> 1); break; } - if (tp < params.title_horizontal_offset) + if (tp < screen_info->params->title_horizontal_offset) { - tp = params.title_horizontal_offset; + tp = screen_info->params->title_horizontal_offset; } } else @@ -272,13 +272,13 @@ frameCreateTitlePixmap (Client * c, int state, int left, int right, { w3 = 0; } - switch (params.title_alignment) + switch (screen_info->params->title_alignment) { case ALIGN_LEFT: - w1 = left + params.title_horizontal_offset; + w1 = left + screen_info->params->title_horizontal_offset; break; case ALIGN_RIGHT: - w1 = right - w2 - w3 - w4 - params.title_horizontal_offset; + w1 = right - w2 - w3 - w4 - screen_info->params->title_horizontal_offset; break; case ALIGN_CENTER: w1 = left + ((right - left) / 2) - (w3 >> 1) - w2; @@ -290,23 +290,23 @@ frameCreateTitlePixmap (Client * c, int state, int left, int right, } } - myPixmapCreate (c->md, pm, width, frameTop (c)); + xfwmPixmapCreate (screen_info, pm, width, frameTop (c)); gpixmap = gdk_pixmap_foreign_new (pm->pixmap); gdk_drawable_set_colormap (gpixmap, gdk_colormap_get_system ()); gc = gdk_gc_new (gpixmap); if (w1 > 0) { - fillRectangle (c->md->dpy, c->md->screen, pm->pixmap, params.title[TITLE_1][state].pixmap, + fillRectangle (clientGetXDisplay (c), screen_info->screen, pm->pixmap, screen_info->title[TITLE_1][state].pixmap, 0, 0, w1, frameTop (c)); - fillRectangle (c->md->dpy, c->md->screen, pm->mask, params.title[TITLE_1][state].mask, 0, 0, + fillRectangle (clientGetXDisplay (c), screen_info->screen, pm->mask, screen_info->title[TITLE_1][state].mask, 0, 0, w1, frameTop (c)); x = x + w1; } - fillRectangle (c->md->dpy, c->md->screen, pm->pixmap, params.title[TITLE_2][state].pixmap, x, 0, + fillRectangle (clientGetXDisplay (c), screen_info->screen, pm->pixmap, screen_info->title[TITLE_2][state].pixmap, x, 0, w2, frameTop (c)); - fillRectangle (c->md->dpy, c->md->screen, pm->mask, params.title[TITLE_2][state].mask, x, 0, w2, + fillRectangle (clientGetXDisplay (c), screen_info->screen, pm->mask, screen_info->title[TITLE_2][state].mask, x, 0, w2, frameTop (c)); x = x + w2; @@ -314,25 +314,25 @@ frameCreateTitlePixmap (Client * c, int state, int left, int right, { if (state == ACTIVE) { - voffset = params.title_vertical_offset_active; + voffset = screen_info->params->title_vertical_offset_active; } else { - voffset = params.title_vertical_offset_inactive; + voffset = screen_info->params->title_vertical_offset_inactive; } - fillRectangle (c->md->dpy, c->md->screen, pm->pixmap, params.title[TITLE_3][state].pixmap, + fillRectangle (clientGetXDisplay (c), screen_info->screen, pm->pixmap, screen_info->title[TITLE_3][state].pixmap, x, 0, w3, frameTop (c)); - fillRectangle (c->md->dpy, c->md->screen, pm->mask, params.title[TITLE_3][state].mask, x, 0, + fillRectangle (clientGetXDisplay (c), screen_info->screen, pm->mask, screen_info->title[TITLE_3][state].mask, x, 0, w3, frameTop (c)); - if (params.title_shadow[state]) + if (screen_info->params->title_shadow[state]) { - gdk_gc_get_values (params.black_gc, &values); + gdk_gc_get_values (screen_info->black_gc, &values); gdk_gc_set_values (gc, &values, GDK_GC_FOREGROUND); gdk_draw_layout (gpixmap, gc, x + tp + 1, (frameTop (c) + voffset - logical_rect.height) / 2 + 1, layout); } - gdk_gc_get_values (params.title_colors[state].gc, &values); + gdk_gc_get_values (screen_info->title_colors[state].gc, &values); gdk_gc_set_values (gc, &values, GDK_GC_FOREGROUND); gdk_draw_layout (gpixmap, gc, x + tp, (frameTop (c) + voffset - logical_rect.height) / 2, layout); @@ -343,17 +343,17 @@ frameCreateTitlePixmap (Client * c, int state, int left, int right, { x = right - w4; } - fillRectangle (c->md->dpy, c->md->screen, pm->pixmap, params.title[TITLE_4][state].pixmap, x, 0, + fillRectangle (clientGetXDisplay (c), screen_info->screen, pm->pixmap, screen_info->title[TITLE_4][state].pixmap, x, 0, w4, frameTop (c)); - fillRectangle (c->md->dpy, c->md->screen, pm->mask, params.title[TITLE_4][state].mask, x, 0, w4, + fillRectangle (clientGetXDisplay (c), screen_info->screen, pm->mask, screen_info->title[TITLE_4][state].mask, x, 0, w4, frameTop (c)); x = x + w4; if (w5 > 0) { - fillRectangle (c->md->dpy, c->md->screen, pm->pixmap, params.title[TITLE_5][state].pixmap, + fillRectangle (clientGetXDisplay (c), screen_info->screen, pm->pixmap, screen_info->title[TITLE_5][state].pixmap, x, 0, w5, frameTop (c)); - fillRectangle (c->md->dpy, c->md->screen, pm->mask, params.title[TITLE_5][state].mask, x, 0, + fillRectangle (clientGetXDisplay (c), screen_info->screen, pm->mask, screen_info->title[TITLE_5][state].mask, x, 0, w5, frameTop (c)); } g_object_unref (G_OBJECT (gc)); @@ -462,62 +462,63 @@ getLetterFromButton (int i, Client * c) return chr; } -static MyPixmap * +static XfwmPixmap * frameGetPixmap (Client * c, int button, int state) { + ScreenInfo *screen_info = c->screen_info; + switch (button) { case SHADE_BUTTON: if (FLAG_TEST (c->flags, CLIENT_FLAG_SHADED) - && params.buttons[SHADE_BUTTON][state + 3].pixmap) + && screen_info->buttons[SHADE_BUTTON][state + 3].pixmap) { - return ¶ms.buttons[SHADE_BUTTON][state + 3]; + return &screen_info->buttons[SHADE_BUTTON][state + 3]; } - return ¶ms.buttons[SHADE_BUTTON][state]; + return &screen_info->buttons[SHADE_BUTTON][state]; break; case STICK_BUTTON: if (FLAG_TEST (c->flags, CLIENT_FLAG_STICKY) - && params.buttons[STICK_BUTTON][state + 3].pixmap) + && screen_info->buttons[STICK_BUTTON][state + 3].pixmap) { - return ¶ms.buttons[STICK_BUTTON][state + 3]; + return &screen_info->buttons[STICK_BUTTON][state + 3]; } - return ¶ms.buttons[STICK_BUTTON][state]; + return &screen_info->buttons[STICK_BUTTON][state]; break; case MAXIMIZE_BUTTON: if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED) - && params.buttons[MAXIMIZE_BUTTON][state + 3].pixmap) + && screen_info->buttons[MAXIMIZE_BUTTON][state + 3].pixmap) { - return ¶ms.buttons[MAXIMIZE_BUTTON][state + 3]; + return &screen_info->buttons[MAXIMIZE_BUTTON][state + 3]; } - return ¶ms.buttons[MAXIMIZE_BUTTON][state]; + return &screen_info->buttons[MAXIMIZE_BUTTON][state]; break; default: break; } - return ¶ms.buttons[button][state]; + return &screen_info->buttons[button][state]; } static void -frameSetShape (Client * c, int state, ClientPixmapCache * pm_cache, - int button_x[BUTTON_COUNT]) +frameSetShape (Client * c, int state, ClientPixmapCache * pm_cache, int button_x[BUTTON_COUNT]) { + ScreenInfo *screen_info = c->screen_info; + DisplayInfo *display_info = screen_info->display_info; Window temp; - int i; XRectangle rect; - MyPixmap *my_pixmap; - + XfwmPixmap *my_pixmap; + int i; + TRACE ("entering frameSetShape"); TRACE ("setting shape for client (0x%lx)", c->window); - if (!c->md->shape) + if (!display_info->shape) { return; } - temp = - XCreateSimpleWindow (c->md->dpy, c->md->xroot, 0, 0, frameWidth (c), frameHeight (c), - 0, 0, 0); + temp = XCreateSimpleWindow (display_info->dpy, screen_info->xroot, 0, 0, frameWidth (c), frameHeight (c), 0, 0, 0); if (FLAG_TEST (c->flags, CLIENT_FLAG_SHADED)) { @@ -525,162 +526,165 @@ frameSetShape (Client * c, int state, ClientPixmapCache * pm_cache, rect.y = 0; rect.width = frameWidth (c); rect.height = frameHeight (c); - XShapeCombineRectangles (c->md->dpy, temp, ShapeBounding, 0, 0, &rect, 1, + XShapeCombineRectangles (display_info->dpy, temp, ShapeBounding, 0, 0, &rect, 1, ShapeSubtract, 0); } else { - XShapeCombineShape (c->md->dpy, temp, ShapeBounding, frameLeft (c), + XShapeCombineShape (display_info->dpy, temp, ShapeBounding, frameLeft (c), frameTop (c), c->window, ShapeBounding, ShapeSet); } if (pm_cache) { - XShapeCombineMask (c->md->dpy, MYWINDOW_XWINDOW (c->title), ShapeBounding, 0, + XShapeCombineMask (display_info->dpy, MYWINDOW_XWINDOW (c->title), ShapeBounding, 0, 0, pm_cache->pm_title[state].mask, ShapeSet); if (!FLAG_TEST (c->flags, CLIENT_FLAG_SHADED)) { - XShapeCombineMask (c->md->dpy, MYWINDOW_XWINDOW (c->sides[SIDE_LEFT]), + XShapeCombineMask (display_info->dpy, MYWINDOW_XWINDOW (c->sides[SIDE_LEFT]), ShapeBounding, 0, 0, pm_cache->pm_sides[SIDE_LEFT][state].mask, ShapeSet); - XShapeCombineMask (c->md->dpy, MYWINDOW_XWINDOW (c->sides[SIDE_RIGHT]), + XShapeCombineMask (display_info->dpy, MYWINDOW_XWINDOW (c->sides[SIDE_RIGHT]), ShapeBounding, 0, 0, pm_cache->pm_sides[SIDE_RIGHT][state].mask, ShapeSet); } - XShapeCombineMask (c->md->dpy, MYWINDOW_XWINDOW (c->sides[SIDE_BOTTOM]), + XShapeCombineMask (display_info->dpy, MYWINDOW_XWINDOW (c->sides[SIDE_BOTTOM]), ShapeBounding, 0, 0, pm_cache->pm_sides[SIDE_BOTTOM][state].mask, ShapeSet); - XShapeCombineMask (c->md->dpy, + XShapeCombineMask (display_info->dpy, MYWINDOW_XWINDOW (c->corners[CORNER_BOTTOM_LEFT]), ShapeBounding, - 0, 0, params.corners[CORNER_BOTTOM_LEFT][state].mask, ShapeSet); - XShapeCombineMask (c->md->dpy, + 0, 0, screen_info->corners[CORNER_BOTTOM_LEFT][state].mask, ShapeSet); + XShapeCombineMask (display_info->dpy, MYWINDOW_XWINDOW (c->corners[CORNER_BOTTOM_RIGHT]), ShapeBounding, - 0, 0, params.corners[CORNER_BOTTOM_RIGHT][state].mask, ShapeSet); - XShapeCombineMask (c->md->dpy, + 0, 0, screen_info->corners[CORNER_BOTTOM_RIGHT][state].mask, ShapeSet); + XShapeCombineMask (display_info->dpy, MYWINDOW_XWINDOW (c->corners[CORNER_TOP_LEFT]), ShapeBounding, 0, - 0, params.corners[CORNER_TOP_LEFT][state].mask, ShapeSet); - XShapeCombineMask (c->md->dpy, + 0, screen_info->corners[CORNER_TOP_LEFT][state].mask, ShapeSet); + XShapeCombineMask (display_info->dpy, MYWINDOW_XWINDOW (c->corners[CORNER_TOP_RIGHT]), ShapeBounding, 0, - 0, params.corners[CORNER_TOP_RIGHT][state].mask, ShapeSet); + 0, screen_info->corners[CORNER_TOP_RIGHT][state].mask, ShapeSet); for (i = 0; i < BUTTON_COUNT; i++) { my_pixmap = frameGetPixmap (c, i, c->button_pressed[i] ? PRESSED : state); - XShapeCombineMask (c->md->dpy, MYWINDOW_XWINDOW (c->buttons[i]), + XShapeCombineMask (display_info->dpy, MYWINDOW_XWINDOW (c->buttons[i]), ShapeBounding, 0, 0, my_pixmap->mask, ShapeSet); } - if (params.corners[CORNER_TOP_LEFT][ACTIVE].height > + if (screen_info->corners[CORNER_TOP_LEFT][ACTIVE].height > frameHeight (c) - frameBottom (c) + 1) { rect.x = 0; rect.y = frameHeight (c) - frameBottom (c) + 1; - rect.width = params.corners[CORNER_TOP_LEFT][ACTIVE].width; + rect.width = screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width; rect.height = - params.corners[CORNER_TOP_LEFT][ACTIVE].height - + screen_info->corners[CORNER_TOP_LEFT][ACTIVE].height - (frameHeight (c) - frameBottom (c) + 1); - XShapeCombineRectangles (c->md->dpy, + XShapeCombineRectangles (display_info->dpy, MYWINDOW_XWINDOW (c->corners[CORNER_TOP_LEFT]), ShapeBounding, 0, 0, &rect, 1, ShapeSubtract, 0); } - if (params.corners[CORNER_TOP_RIGHT][ACTIVE].height > + if (screen_info->corners[CORNER_TOP_RIGHT][ACTIVE].height > frameHeight (c) - frameBottom (c) + 1) { rect.x = 0; rect.y = frameHeight (c) - frameBottom (c) + 1; - rect.width = params.corners[CORNER_TOP_RIGHT][ACTIVE].width; + rect.width = screen_info->corners[CORNER_TOP_RIGHT][ACTIVE].width; rect.height = - params.corners[CORNER_TOP_RIGHT][ACTIVE].height - + screen_info->corners[CORNER_TOP_RIGHT][ACTIVE].height - (frameHeight (c) - frameBottom (c) + 1); - XShapeCombineRectangles (c->md->dpy, + XShapeCombineRectangles (display_info->dpy, MYWINDOW_XWINDOW (c->corners[CORNER_TOP_RIGHT]), ShapeBounding, 0, 0, &rect, 1, ShapeSubtract, 0); } - if (params.corners[CORNER_BOTTOM_LEFT][ACTIVE].height > + if (screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE].height > frameHeight (c) - frameTop (c) + 1) { rect.x = 0; rect.y = 0; - rect.width = params.corners[CORNER_BOTTOM_LEFT][ACTIVE].width; + rect.width = screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE].width; rect.height = - params.corners[CORNER_BOTTOM_LEFT][ACTIVE].height - + screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE].height - (frameHeight (c) - frameTop (c) + 1); - XShapeCombineRectangles (c->md->dpy, + XShapeCombineRectangles (display_info->dpy, MYWINDOW_XWINDOW (c->corners[CORNER_BOTTOM_LEFT]), ShapeBounding, 0, 0, &rect, 1, ShapeSubtract, 0); } - if (params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].height > + if (screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE].height > frameHeight (c) - frameTop (c) + 1) { rect.x = 0; rect.y = 0; - rect.width = params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].width; + rect.width = screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE].width; rect.height = - params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].height - + screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE].height - (frameHeight (c) - frameTop (c) + 1); - XShapeCombineRectangles (c->md->dpy, + XShapeCombineRectangles (display_info->dpy, MYWINDOW_XWINDOW (c->corners[CORNER_BOTTOM_RIGHT]), ShapeBounding, 0, 0, &rect, 1, ShapeSubtract, 0); } if (!FLAG_TEST (c->flags, CLIENT_FLAG_SHADED)) { - XShapeCombineShape (c->md->dpy, temp, ShapeBounding, 0, frameTop (c), + XShapeCombineShape (display_info->dpy, temp, ShapeBounding, 0, frameTop (c), MYWINDOW_XWINDOW (c->sides[SIDE_LEFT]), ShapeBounding, ShapeUnion); - XShapeCombineShape (c->md->dpy, temp, ShapeBounding, + XShapeCombineShape (display_info->dpy, temp, ShapeBounding, frameWidth (c) - frameRight (c), frameTop (c), MYWINDOW_XWINDOW (c->sides[SIDE_RIGHT]), ShapeBounding, ShapeUnion); } - XShapeCombineShape (c->md->dpy, temp, ShapeBounding, - params.corners[CORNER_TOP_LEFT][ACTIVE].width, 0, + XShapeCombineShape (display_info->dpy, temp, ShapeBounding, + screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width, 0, MYWINDOW_XWINDOW (c->title), ShapeBounding, ShapeUnion); - XShapeCombineShape (c->md->dpy, temp, ShapeBounding, - params.corners[CORNER_BOTTOM_LEFT][ACTIVE].width, + XShapeCombineShape (display_info->dpy, temp, ShapeBounding, + screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE].width, frameHeight (c) - frameBottom (c), MYWINDOW_XWINDOW (c->sides[SIDE_BOTTOM]), ShapeBounding, ShapeUnion); - XShapeCombineShape (c->md->dpy, temp, ShapeBounding, 0, + XShapeCombineShape (display_info->dpy, temp, ShapeBounding, 0, frameHeight (c) - - params.corners[CORNER_BOTTOM_LEFT][ACTIVE].height, + screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE].height, MYWINDOW_XWINDOW (c->corners[CORNER_BOTTOM_LEFT]), ShapeBounding, ShapeUnion); - XShapeCombineShape (c->md->dpy, temp, ShapeBounding, + XShapeCombineShape (display_info->dpy, temp, ShapeBounding, frameWidth (c) - - params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].width, + screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE].width, frameHeight (c) - - params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].height, + screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE].height, MYWINDOW_XWINDOW (c->corners[CORNER_BOTTOM_RIGHT]), ShapeBounding, ShapeUnion); - XShapeCombineShape (c->md->dpy, temp, ShapeBounding, 0, 0, + XShapeCombineShape (display_info->dpy, temp, ShapeBounding, 0, 0, MYWINDOW_XWINDOW (c->corners[CORNER_TOP_LEFT]), ShapeBounding, ShapeUnion); - XShapeCombineShape (c->md->dpy, temp, ShapeBounding, - frameWidth (c) - params.corners[CORNER_TOP_RIGHT][ACTIVE].width, + XShapeCombineShape (display_info->dpy, temp, ShapeBounding, + frameWidth (c) - screen_info->corners[CORNER_TOP_RIGHT][ACTIVE].width, 0, MYWINDOW_XWINDOW (c->corners[CORNER_TOP_RIGHT]), ShapeBounding, ShapeUnion); for (i = 0; i < BUTTON_COUNT; i++) { char b = getLetterFromButton (i, c); - if ((b) && strchr (params.button_layout, b)) + if ((b) && strchr (screen_info->params->button_layout, b)) { - XShapeCombineShape (c->md->dpy, temp, ShapeBounding, button_x[i], - (frameTop (c) - params.buttons[i][ACTIVE].height) / 2, + XShapeCombineShape (display_info->dpy, temp, ShapeBounding, button_x[i], + (frameTop (c) - screen_info->buttons[i][ACTIVE].height) / 2, MYWINDOW_XWINDOW (c->buttons[i]), ShapeBounding, ShapeUnion); } } } - XShapeCombineShape (c->md->dpy, c->frame, ShapeBounding, 0, 0, temp, + XShapeCombineShape (display_info->dpy, c->frame, ShapeBounding, 0, 0, temp, ShapeBounding, ShapeSet); - XDestroyWindow (c->md->dpy, temp); + XDestroyWindow (display_info->dpy, temp); } void frameDraw (Client * c, gboolean invalidate_cache, gboolean force_shape_update) { + ScreenInfo *screen_info; + XfwmPixmap *my_pixmap; + gboolean requires_clearing = FALSE; int state = ACTIVE; int i; int j; @@ -693,14 +697,13 @@ frameDraw (Client * c, gboolean invalidate_cache, gboolean force_shape_update) int left_height; int right_height; int button_x[BUTTON_COUNT]; - gboolean requires_clearing = FALSE; - MyPixmap *my_pixmap; TRACE ("entering frameDraw"); TRACE ("drawing frame for \"%s\" (0x%lx)", c->name, c->window); g_return_if_fail (c != NULL); + screen_info = c->screen_info; if (c != clientGetFocus ()) { TRACE ("\"%s\" is not the active window", c->name); @@ -736,19 +739,19 @@ frameDraw (Client * c, gboolean invalidate_cache, gboolean force_shape_update) { if (c->pm_cache.previous_width != c->width) { - myPixmapFree (&c->pm_cache.pm_title[ACTIVE]); - myPixmapFree (&c->pm_cache.pm_title[INACTIVE]); - myPixmapFree (&c->pm_cache.pm_sides[SIDE_BOTTOM][ACTIVE]); - myPixmapFree (&c->pm_cache.pm_sides[SIDE_BOTTOM][INACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_title[ACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_title[INACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_BOTTOM][ACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_BOTTOM][INACTIVE]); c->pm_cache.previous_width = c->width; requires_clearing = TRUE; } if (c->pm_cache.previous_height != c->height) { - myPixmapFree (&c->pm_cache.pm_sides[SIDE_LEFT][ACTIVE]); - myPixmapFree (&c->pm_cache.pm_sides[SIDE_LEFT][INACTIVE]); - myPixmapFree (&c->pm_cache.pm_sides[SIDE_RIGHT][ACTIVE]); - myPixmapFree (&c->pm_cache.pm_sides[SIDE_RIGHT][INACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_LEFT][ACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_LEFT][INACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_RIGHT][ACTIVE]); + xfwmPixmapFree (&c->pm_cache.pm_sides[SIDE_RIGHT][INACTIVE]); c->pm_cache.previous_height = c->height; requires_clearing = TRUE; } @@ -758,17 +761,17 @@ frameDraw (Client * c, gboolean invalidate_cache, gboolean force_shape_update) for (i = 0; i < BUTTON_COUNT; i++) { char b = getLetterFromButton (i, c); - if ((!b) || !strchr (params.button_layout, b)) + if ((!b) || !strchr (screen_info->params->button_layout, b)) { - myWindowHide (&c->buttons[i]); + xfwmWindowHide (&c->buttons[i]); } } /* Then, show the ones that we do have on right... */ - x = frameLeft (c) + params.button_offset; - for (i = 0; i < strlen (params.button_layout); i++) + x = frameLeft (c) + screen_info->params->button_offset; + for (i = 0; i < strlen (screen_info->params->button_layout); i++) { - button = getButtonFromLetter (params.button_layout[i], c); + button = getButtonFromLetter (screen_info->params->button_layout[i], c); if (button == TITLE_SEPARATOR) { break; @@ -780,28 +783,27 @@ frameDraw (Client * c, gboolean invalidate_cache, gboolean force_shape_update) c->button_pressed[button] ? PRESSED : state); if (my_pixmap->pixmap) { - XSetWindowBackgroundPixmap (c->md->dpy, + XSetWindowBackgroundPixmap (clientGetXDisplay (c), MYWINDOW_XWINDOW (c->buttons[button]), my_pixmap->pixmap); } - myWindowShow (&c->buttons[button], x, - (frameTop (c) - - params.buttons[button][ACTIVE].height) / 2, - params.buttons[button][ACTIVE].width, - params.buttons[button][ACTIVE].height, TRUE); + xfwmWindowShow (&c->buttons[button], x, + (frameTop (c) - screen_info->buttons[button][ACTIVE].height) / 2, + screen_info->buttons[button][ACTIVE].width, + screen_info->buttons[button][ACTIVE].height, TRUE); button_x[button] = x; - x = x + params.buttons[button][ACTIVE].width + - params.button_spacing; + x = x + screen_info->buttons[button][ACTIVE].width + + screen_info->params->button_spacing; } } - left = x - params.button_spacing; + left = x - screen_info->params->button_spacing; /* and those that we do have on left... */ - x = frameWidth (c) - frameRight (c) + params.button_spacing - - params.button_offset; - for (j = strlen (params.button_layout) - 1; j >= i; j--) + x = frameWidth (c) - frameRight (c) + screen_info->params->button_spacing - + screen_info->params->button_offset; + for (j = strlen (screen_info->params->button_layout) - 1; j >= i; j--) { - button = getButtonFromLetter (params.button_layout[j], c); + button = getButtonFromLetter (screen_info->params->button_layout[j], c); if (button == TITLE_SEPARATOR) { break; @@ -813,35 +815,34 @@ frameDraw (Client * c, gboolean invalidate_cache, gboolean force_shape_update) c->button_pressed[button] ? PRESSED : state); if (my_pixmap->pixmap) { - XSetWindowBackgroundPixmap (c->md->dpy, + XSetWindowBackgroundPixmap (clientGetXDisplay (c), MYWINDOW_XWINDOW (c->buttons[button]), my_pixmap->pixmap); } - x = x - params.buttons[button][ACTIVE].width - - params.button_spacing; - myWindowShow (&c->buttons[button], x, - (frameTop (c) - - params.buttons[button][ACTIVE].height) / 2, - params.buttons[button][ACTIVE].width, - params.buttons[button][ACTIVE].height, TRUE); + x = x - screen_info->buttons[button][ACTIVE].width - + screen_info->params->button_spacing; + xfwmWindowShow (&c->buttons[button], x, + (frameTop (c) - screen_info->buttons[button][ACTIVE].height) / 2, + screen_info->buttons[button][ACTIVE].width, + screen_info->buttons[button][ACTIVE].height, TRUE); button_x[button] = x; } } right = x; top_width = - frameWidth (c) - params.corners[CORNER_TOP_LEFT][ACTIVE].width - - params.corners[CORNER_TOP_RIGHT][ACTIVE].width; + frameWidth (c) - screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width - + screen_info->corners[CORNER_TOP_RIGHT][ACTIVE].width; bottom_width = frameWidth (c) - - params.corners[CORNER_BOTTOM_LEFT][ACTIVE].width - - params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].width; + screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE].width - + screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE].width; left_height = frameHeight (c) - frameTop (c) - - params.corners[CORNER_BOTTOM_LEFT][ACTIVE].height; + screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE].height; right_height = frameHeight (c) - frameTop (c) - - params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].height; + screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE].height; if (c->pm_cache.pm_title[state].pixmap == None) { @@ -852,111 +853,111 @@ frameDraw (Client * c, gboolean invalidate_cache, gboolean force_shape_update) if (c->pm_cache.pm_sides[SIDE_LEFT][state].pixmap == None) { - myPixmapCreate (c->md, &c->pm_cache.pm_sides[SIDE_LEFT][state], + xfwmPixmapCreate (screen_info, &c->pm_cache.pm_sides[SIDE_LEFT][state], frameLeft (c), left_height); requires_clearing = TRUE; } - fillRectangle (c->md->dpy, c->md->screen, c->pm_cache.pm_sides[SIDE_LEFT][state].pixmap, - params.sides[SIDE_LEFT][state].pixmap, 0, 0, frameLeft (c), + fillRectangle (clientGetXDisplay (c), screen_info->screen, c->pm_cache.pm_sides[SIDE_LEFT][state].pixmap, + screen_info->sides[SIDE_LEFT][state].pixmap, 0, 0, frameLeft (c), left_height); - fillRectangle (c->md->dpy, c->md->screen, c->pm_cache.pm_sides[SIDE_LEFT][state].mask, - params.sides[SIDE_LEFT][state].mask, 0, 0, frameLeft (c), + fillRectangle (clientGetXDisplay (c), screen_info->screen, c->pm_cache.pm_sides[SIDE_LEFT][state].mask, + screen_info->sides[SIDE_LEFT][state].mask, 0, 0, frameLeft (c), left_height); if (c->pm_cache.pm_sides[SIDE_RIGHT][state].pixmap == None) { - myPixmapCreate (c->md, &c->pm_cache.pm_sides[SIDE_RIGHT][state], + xfwmPixmapCreate (screen_info, &c->pm_cache.pm_sides[SIDE_RIGHT][state], frameRight (c), right_height); requires_clearing = TRUE; } - fillRectangle (c->md->dpy, c->md->screen, c->pm_cache.pm_sides[SIDE_RIGHT][state].pixmap, - params.sides[SIDE_RIGHT][state].pixmap, 0, 0, frameRight (c), + fillRectangle (clientGetXDisplay (c), screen_info->screen, c->pm_cache.pm_sides[SIDE_RIGHT][state].pixmap, + screen_info->sides[SIDE_RIGHT][state].pixmap, 0, 0, frameRight (c), right_height); - fillRectangle (c->md->dpy, c->md->screen, c->pm_cache.pm_sides[SIDE_RIGHT][state].mask, - params.sides[SIDE_RIGHT][state].mask, 0, 0, frameRight (c), + fillRectangle (clientGetXDisplay (c), screen_info->screen, c->pm_cache.pm_sides[SIDE_RIGHT][state].mask, + screen_info->sides[SIDE_RIGHT][state].mask, 0, 0, frameRight (c), right_height); if (c->pm_cache.pm_sides[SIDE_BOTTOM][state].pixmap == None) { - myPixmapCreate (c->md, &c->pm_cache.pm_sides[SIDE_BOTTOM][state], + xfwmPixmapCreate (screen_info, &c->pm_cache.pm_sides[SIDE_BOTTOM][state], bottom_width, frameBottom (c)); requires_clearing = TRUE; } - fillRectangle (c->md->dpy, c->md->screen, c->pm_cache.pm_sides[SIDE_BOTTOM][state].pixmap, - params.sides[SIDE_BOTTOM][state].pixmap, 0, 0, bottom_width, + fillRectangle (clientGetXDisplay (c), screen_info->screen, c->pm_cache.pm_sides[SIDE_BOTTOM][state].pixmap, + screen_info->sides[SIDE_BOTTOM][state].pixmap, 0, 0, bottom_width, frameBottom (c)); - fillRectangle (c->md->dpy, c->md->screen, c->pm_cache.pm_sides[SIDE_BOTTOM][state].mask, - params.sides[SIDE_BOTTOM][state].mask, 0, 0, bottom_width, + fillRectangle (clientGetXDisplay (c), screen_info->screen, c->pm_cache.pm_sides[SIDE_BOTTOM][state].mask, + screen_info->sides[SIDE_BOTTOM][state].mask, 0, 0, bottom_width, frameBottom (c)); - XSetWindowBackgroundPixmap (c->md->dpy, MYWINDOW_XWINDOW (c->title), + XSetWindowBackgroundPixmap (clientGetXDisplay (c), MYWINDOW_XWINDOW (c->title), c->pm_cache.pm_title[state].pixmap); - XSetWindowBackgroundPixmap (c->md->dpy, + XSetWindowBackgroundPixmap (clientGetXDisplay (c), MYWINDOW_XWINDOW (c->sides[SIDE_LEFT]), c->pm_cache.pm_sides[SIDE_LEFT][state].pixmap); - XSetWindowBackgroundPixmap (c->md->dpy, + XSetWindowBackgroundPixmap (clientGetXDisplay (c), MYWINDOW_XWINDOW (c->sides[SIDE_RIGHT]), c->pm_cache.pm_sides[SIDE_RIGHT][state].pixmap); - XSetWindowBackgroundPixmap (c->md->dpy, + XSetWindowBackgroundPixmap (clientGetXDisplay (c), MYWINDOW_XWINDOW (c->sides[SIDE_BOTTOM]), c->pm_cache.pm_sides[SIDE_BOTTOM][state].pixmap); - XSetWindowBackgroundPixmap (c->md->dpy, + XSetWindowBackgroundPixmap (clientGetXDisplay (c), MYWINDOW_XWINDOW (c->corners[CORNER_TOP_LEFT]), - params.corners[CORNER_TOP_LEFT][state].pixmap); - XSetWindowBackgroundPixmap (c->md->dpy, + screen_info->corners[CORNER_TOP_LEFT][state].pixmap); + XSetWindowBackgroundPixmap (clientGetXDisplay (c), MYWINDOW_XWINDOW (c->corners[CORNER_TOP_RIGHT]), - params.corners[CORNER_TOP_RIGHT][state].pixmap); - XSetWindowBackgroundPixmap (c->md->dpy, + screen_info->corners[CORNER_TOP_RIGHT][state].pixmap); + XSetWindowBackgroundPixmap (clientGetXDisplay (c), MYWINDOW_XWINDOW (c->corners[CORNER_BOTTOM_LEFT]), - params.corners[CORNER_BOTTOM_LEFT][state].pixmap); - XSetWindowBackgroundPixmap (c->md->dpy, + screen_info->corners[CORNER_BOTTOM_LEFT][state].pixmap); + XSetWindowBackgroundPixmap (clientGetXDisplay (c), MYWINDOW_XWINDOW (c->corners[CORNER_BOTTOM_RIGHT]), - params.corners[CORNER_BOTTOM_RIGHT][state].pixmap); + screen_info->corners[CORNER_BOTTOM_RIGHT][state].pixmap); if (FLAG_TEST (c->flags, CLIENT_FLAG_SHADED)) { - myWindowHide (&c->sides[SIDE_LEFT]); - myWindowHide (&c->sides[SIDE_RIGHT]); + xfwmWindowHide (&c->sides[SIDE_LEFT]); + xfwmWindowHide (&c->sides[SIDE_RIGHT]); } else { - myWindowShow (&c->sides[SIDE_LEFT], 0, frameTop (c), + xfwmWindowShow (&c->sides[SIDE_LEFT], 0, frameTop (c), frameLeft (c), left_height, requires_clearing); - myWindowShow (&c->sides[SIDE_RIGHT], + xfwmWindowShow (&c->sides[SIDE_RIGHT], frameWidth (c) - frameRight (c), frameTop (c), frameRight (c), right_height, requires_clearing); } - myWindowShow (&c->title, - params.corners[CORNER_TOP_LEFT][ACTIVE].width, 0, top_width, + xfwmWindowShow (&c->title, + screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width, 0, top_width, frameTop (c), requires_clearing); - myWindowShow (&c->sides[SIDE_BOTTOM], - params.corners[CORNER_BOTTOM_LEFT][ACTIVE].width, + xfwmWindowShow (&c->sides[SIDE_BOTTOM], + screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE].width, frameHeight (c) - frameBottom (c), bottom_width, frameBottom (c), requires_clearing); - myWindowShow (&c->corners[CORNER_TOP_LEFT], 0, 0, - params.corners[CORNER_TOP_LEFT][ACTIVE].width, - params.corners[CORNER_TOP_LEFT][ACTIVE].height, + xfwmWindowShow (&c->corners[CORNER_TOP_LEFT], 0, 0, + screen_info->corners[CORNER_TOP_LEFT][ACTIVE].width, + screen_info->corners[CORNER_TOP_LEFT][ACTIVE].height, requires_clearing); - myWindowShow (&c->corners[CORNER_TOP_RIGHT], - frameWidth (c) - params.corners[CORNER_TOP_RIGHT][ACTIVE].width, - 0, params.corners[CORNER_TOP_RIGHT][ACTIVE].width, - params.corners[CORNER_TOP_RIGHT][ACTIVE].height, + xfwmWindowShow (&c->corners[CORNER_TOP_RIGHT], + frameWidth (c) - screen_info->corners[CORNER_TOP_RIGHT][ACTIVE].width, + 0, screen_info->corners[CORNER_TOP_RIGHT][ACTIVE].width, + screen_info->corners[CORNER_TOP_RIGHT][ACTIVE].height, requires_clearing); - myWindowShow (&c->corners[CORNER_BOTTOM_LEFT], 0, + xfwmWindowShow (&c->corners[CORNER_BOTTOM_LEFT], 0, frameHeight (c) - - params.corners[CORNER_BOTTOM_LEFT][ACTIVE].height, - params.corners[CORNER_BOTTOM_LEFT][ACTIVE].width, - params.corners[CORNER_BOTTOM_LEFT][ACTIVE].height, + screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE].height, + screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE].width, + screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE].height, requires_clearing); - myWindowShow (&c->corners[CORNER_BOTTOM_RIGHT], + xfwmWindowShow (&c->corners[CORNER_BOTTOM_RIGHT], frameWidth (c) - - params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].width, + screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE].width, frameHeight (c) - - params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].height, - params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].width, - params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].height, + screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE].height, + screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE].width, + screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE].height, requires_clearing); if (requires_clearing | force_shape_update) @@ -966,26 +967,26 @@ frameDraw (Client * c, gboolean invalidate_cache, gboolean force_shape_update) } else { - myWindowHide (&c->title); + xfwmWindowHide (&c->title); for (i = 0; i < 3; i++) { if (MYWINDOW_XWINDOW (c->sides[i])) { - myWindowHide (&c->sides[i]); + xfwmWindowHide (&c->sides[i]); } } for (i = 0; i < 4; i++) { if (MYWINDOW_XWINDOW (c->corners[i])) { - myWindowHide (&c->corners[i]); + xfwmWindowHide (&c->corners[i]); } } for (i = 0; i < BUTTON_COUNT; i++) { if (MYWINDOW_XWINDOW (c->buttons[i])) { - myWindowHide (&c->buttons[i]); + xfwmWindowHide (&c->buttons[i]); } } frameSetShape (c, 0, NULL, 0); diff --git a/src/hints.c b/src/hints.c index 6fb243d4b..ea7e9f032 100644 --- a/src/hints.c +++ b/src/hints.c @@ -36,7 +36,6 @@ #include <stdlib.h> #include <libxfce4util/libxfce4util.h> #include "hints.h" -#include "client.h" Atom gnome_panel_desktop_area; Atom motif_wm_hints; @@ -123,7 +122,6 @@ Atom kwm_win_icon; /* Systray similation for older KDE apps */ Atom net_system_tray_manager; -Atom net_system_tray_selection; Atom net_system_tray_opcode; static gboolean @@ -171,7 +169,10 @@ getWMState (Display * dpy, Window w) (unsigned char **) &data) == Success) && (items_read)) { state = *data; - XFree (data); + if (data) + { + XFree (data); + } } return state; } @@ -218,7 +219,10 @@ getMotifHints (Display * dpy, Window w) result = g_new0(PropMwmHints, 1); memcpy (result, data, sizeof (PropMwmHints)); } - XFree (data); + if (data) + { + XFree (data); + } } return result; } @@ -318,9 +322,10 @@ initKDEHints (Display * dpy) kwm_win_icon = XInternAtom (dpy, "KWM_WIN_ICON", FALSE); } -void +Atom initSystrayHints (Display * dpy, int nscreen) { + Atom net_system_tray_selection; gchar selection[32]; TRACE ("entering initSystrayHints"); @@ -329,6 +334,8 @@ initSystrayHints (Display * dpy, int nscreen) net_system_tray_manager = XInternAtom (dpy, "MANAGER", FALSE); net_system_tray_opcode = XInternAtom (dpy, "_NET_SYSTEM_TRAY_OPCODE", FALSE); net_system_tray_selection = XInternAtom (dpy, selection, FALSE); + + return net_system_tray_selection; } gboolean @@ -349,7 +356,10 @@ getHint (Display * dpy, Window w, Atom a, long *value) (unsigned char **) &data) == Success) && (items_read)) { *value = *data; - XFree (data); + if (data) + { + XFree (data); + } success = TRUE; } return success; @@ -652,10 +662,10 @@ setNetWorkarea (Display * dpy, int screen, int nb_workspaces, int width, int hei } void -initNetDesktopParams (Display * dpy, int screen, int workspace, int width, int height) +initNetDesktopInfo (Display * dpy, int screen, int workspace, int width, int height) { unsigned long data[2]; - TRACE ("entering initNetDesktopParams"); + TRACE ("entering initNetDesktopInfo"); data[0] = width; data[1] = height; XChangeProperty (dpy, RootWindow (dpy, screen), net_desktop_geometry, @@ -725,8 +735,7 @@ getUTF8String (Display * dpy, Window w, Atom xatom, char **str_p, int *length) return FALSE; } - if (!check_type_and_format (dpy, w, xatom, 8, utf8_string, -1, format, - type)) + if (!check_type_and_format (dpy, w, xatom, 8, utf8_string, -1, format, type)) { TRACE ("utf8_string value invalid"); if (str) @@ -743,9 +752,7 @@ getUTF8String (Display * dpy, Window w, Atom xatom, char **str_p, int *length) name = XGetAtomName (dpy, xatom); if (name) { - TRACE - ("Property %s on window 0x%lx contains invalid UTF-8 characters", - name, w); + TRACE ("Property %s on window 0x%lx contains invalid UTF-8 characters", name, w); XFree (name); } XFree (str); @@ -775,9 +782,8 @@ text_property_to_utf8 (Display * dpy, const XTextProperty * prop) list = NULL; if ((count = - gdk_text_property_to_utf8_list (gdk_x11_xatom_to_atom (prop-> - encoding), prop->format, prop->value, prop->nitems, - &list)) == 0) + gdk_text_property_to_utf8_list (gdk_x11_xatom_to_atom (prop->encoding), + prop->format, prop->value, prop->nitems, &list)) == 0) { TRACE ("gdk_text_property_to_utf8_list returned 0"); return NULL; @@ -896,7 +902,7 @@ sendSystrayReqDock(Display * dpy, Window window, Window systray) } Window -getSystrayWindow (Display * dpy) +getSystrayWindow (Display * dpy, Atom net_system_tray_selection) { Window systray_win = None; @@ -1068,7 +1074,10 @@ getKDEIcon (Display * dpy, Window window, Pixmap * pixmap, Pixmap * mask) if (type != kwm_win_icon) { - XFree (icons); + if (icons) + { + XFree (icons); + } return FALSE; } @@ -1091,14 +1100,17 @@ getRGBIconData (Display * dpy, Window window, unsigned long **data, unsigned lon FALSE, XA_CARDINAL, &type, &format, nitems, &bytes_after, (unsigned char **)data) != Success) { - data = NULL; + *data = NULL; return FALSE; } if (type != XA_CARDINAL) { - XFree (*data); - data = NULL; + if (*data) + { + XFree (*data); + } + *data = NULL; return FALSE; } diff --git a/src/hints.h b/src/hints.h index f3b0c362b..61f21b2fe 100644 --- a/src/hints.h +++ b/src/hints.h @@ -97,6 +97,19 @@ #define NET_WM_STATE_ADD 1 #define NET_WM_STATE_TOGGLE 2 +#define LEFT 0 +#define RIGHT 1 +#define TOP 2 +#define BOTTOM 3 +#define LEFT_START_Y 4 +#define LEFT_END_Y 5 +#define RIGHT_START_Y 6 +#define RIGHT_END_Y 7 +#define TOP_START_X 8 +#define TOP_END_X 9 +#define BOTTOM_START_X 10 +#define BOTTOM_END_X 11 + typedef struct { unsigned long flags; @@ -200,7 +213,7 @@ PropMwmHints *getMotifHints (Display *, Window); unsigned int getWMProtocols (Display *, Window); void initGnomeHints (Display *); void initKDEHints (Display *); -void initSystrayHints (Display *, int); +Atom initSystrayHints (Display *, int); gboolean getHint (Display *, Window, Atom, long *); void setHint (Display *, Window, Atom, long); void getGnomeDesktopMargins (Display *, int, int *); @@ -210,7 +223,7 @@ void setNetSupportedHint (Display *, int, Window); gboolean getAtomList (Display *, Window, Atom, Atom **, int *); gboolean getCardinalList (Display *, Window, Atom, unsigned long **, int *); void setNetWorkarea (Display *, int, int, int, int, int *); -void initNetDesktopParams (Display *, int, int, int, int); +void initNetDesktopInfo (Display *, int, int, int, int); void set_utf8_string_hint (Display *, Window, Atom, const char *); void getTransientFor (Display *, int, Window, Window *); void getWindowName (Display *, Window, char **); @@ -218,7 +231,7 @@ gboolean getUTF8String (Display *, Window, Atom, char **, int *); void getWindowName (Display *, Window, char **); gboolean checkKdeSystrayWindow(Display *, Window); void sendSystrayReqDock(Display *, Window, Window); -Window getSystrayWindow (Display *); +Window getSystrayWindow (Display *, Atom); gboolean getWindowRole (Display *, Window, char **); Window getClientLeader (Display *, Window); gboolean getNetWMUserTime (Display *, Window, Time *); diff --git a/src/keyboard.h b/src/keyboard.h index c75896a3b..aeb3803f3 100644 --- a/src/keyboard.h +++ b/src/keyboard.h @@ -27,12 +27,12 @@ #include <X11/keysym.h> -typedef struct +typedef struct _MyKey MyKey; +struct _MyKey { KeyCode keycode; int modifier; -} -MyKey; +}; extern unsigned int KeyMask; extern unsigned int ButtonMask; diff --git a/src/main.c b/src/main.c index 9e3b7271a..b40bff6b4 100644 --- a/src/main.c +++ b/src/main.c @@ -41,6 +41,7 @@ #include <signal.h> #include <string.h> +#include "display.h" #include "screen.h" #include "events.h" #include "frame.h" @@ -65,60 +66,31 @@ PropertyChangeMask|\ ColormapNotify -static ScreenData *md = NULL; -gboolean xfwm4_quit = FALSE; -gboolean xfwm4_reload = FALSE; - -static int -handleXError (Display * dpy, XErrorEvent * err) -{ -#if DEBUG - char buf[64]; - - XGetErrorText (dpy, err->error_code, buf, 63); - g_print ("XError: %s\n", buf); - g_print ("==> XID Ox%lx, Request %d, Error %d <==\n", - err->resourceid, err->request_code, err->error_code); -#endif - return 0; -} +static DisplayInfo *display_info = NULL; +gboolean xfwm4_quit = FALSE; +gboolean xfwm4_reload = FALSE; static void cleanUp (void) { int i; + GSList *screens; - g_return_if_fail (md); + g_return_if_fail (display_info); TRACE ("entering cleanUp"); - clientUnframeAll (md); - sn_close_display (); - unloadSettings (md); - XFreeCursor (md->dpy, md->root_cursor); - XFreeCursor (md->dpy, md->move_cursor); - XFreeCursor (md->dpy, md->busy_cursor); - sessionFreeWindowStates (); - for (i = 0; i < 7; i++) + xfce_close_event_filter (display_info->xfilter); + for (screens = display_info->screens; screens; screens = g_slist_next (screens)) { - XFreeCursor (md->dpy, md->resize_cursor[i]); + ScreenInfo *screen_info_n = (ScreenInfo *) screens->data; + myScreenClose (screen_info_n); + g_free (screen_info_n); } - for (i = 0; i < NB_KEY_SHORTCUTS; i++) - { - if (params.shortcut_exec[i]) - { - g_free (params.shortcut_exec[i]); - params.shortcut_exec[i] = NULL; - } - } - g_free (params.workspace_names); - params.workspace_names = NULL; - myWindowDelete (&md->sidewalk[0]); - myWindowDelete (&md->sidewalk[1]); - XSetInputFocus (md->dpy, md->xroot, RevertToPointerRoot, GDK_CURRENT_TIME); - xfce_close_event_filter (md->xfilter); - g_free (md); - md = NULL; + + sn_close_display (); + + sessionFreeWindowStates (); } static char *build_session_filename(SessionClient *client_session) @@ -173,7 +145,7 @@ save_phase_2 (gpointer data) filename = build_session_filename(client_session); if (filename) { - sessionSaveWindowStates (filename); + sessionSaveWindowStates (display_info, filename); g_free (filename); } } @@ -213,16 +185,12 @@ handleSignal (int sig) static int initialize (int argc, char **argv) { - PangoLayout *layout; struct sigaction act; - int dummy; long ws; - GdkWindow *groot; SessionClient *client_session; - + gint i, nscreens; + TRACE ("entering initialize"); - - md = g_new0 (ScreenData, 1); xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); @@ -232,119 +200,12 @@ initialize (int argc, char **argv) DBG ("xfwm4 starting, using GTK+-%d.%d.%d", gtk_major_version, gtk_minor_version, gtk_micro_version); - md->gscr = gdk_screen_get_default (); - if (!md->gscr) - { - g_error (_("Cannot get default screen")); - } - md->gdisplay = gdk_screen_get_display (md->gscr); - gtk_widget_push_colormap(gdk_screen_get_rgb_colormap (md->gscr)); - md->dpy = gdk_x11_display_get_xdisplay (md->gdisplay); - md->xscreen = gdk_x11_screen_get_xscreen (md->gscr); - groot = gdk_screen_get_root_window (md->gscr); - md->xroot = (Window) gdk_x11_drawable_get_xid (groot); - md->screen = gdk_screen_get_number (md->gscr); - md->cmap = GDK_COLORMAP_XCOLORMAP(gdk_screen_get_rgb_colormap (md->gscr)); - - xfce_setenv ("DISPLAY", gdk_display_get_name (md->gdisplay), TRUE); - - md->depth = DefaultDepth (md->dpy, md->screen); - sn_init_display (md); - md->current_ws = 0; - - XSetErrorHandler (handleXError); - md->shape = XShapeQueryExtension (md->dpy, &md->shape_event, &dummy); - - /* Create the side windows to detect edge movement */ - myWindowTemp (md->dpy, md->xroot, &md->sidewalk[0], 0, 0, - 1, gdk_screen_get_height (md->gscr), - LeaveWindowMask | PointerMotionMask); - - myWindowTemp (md->dpy, md->xroot, &md->sidewalk[1], - gdk_screen_get_width (md->gscr) - 1, 0, - 1, gdk_screen_get_height (md->gscr), - LeaveWindowMask | PointerMotionMask); - - md->margins[TOP] = md->gnome_margins[TOP] = 0; - md->margins[LEFT] = md->gnome_margins[LEFT] = 0; - md->margins[RIGHT] = md->gnome_margins[RIGHT] = 0; - md->margins[BOTTOM] = md->gnome_margins[BOTTOM] = 0; - - initICCCMHints (md->dpy); - initMotifHints (md->dpy); - initGnomeHints (md->dpy); - initNetHints (md->dpy); - initKDEHints (md->dpy); - initSystrayHints (md->dpy, md->screen); - - initModifiers (md->dpy); - - md->root_cursor = XCreateFontCursor (md->dpy, XC_left_ptr); - md->move_cursor = XCreateFontCursor (md->dpy, XC_fleur); - md->busy_cursor = cursorCreateSpinning (md->dpy, md->xroot); - md->resize_cursor[CORNER_TOP_LEFT] = - XCreateFontCursor (md->dpy, XC_top_left_corner); - md->resize_cursor[CORNER_TOP_RIGHT] = - XCreateFontCursor (md->dpy, XC_top_right_corner); - md->resize_cursor[CORNER_BOTTOM_LEFT] = - XCreateFontCursor (md->dpy, XC_bottom_left_corner); - md->resize_cursor[CORNER_BOTTOM_RIGHT] = - XCreateFontCursor (md->dpy, XC_bottom_right_corner); - md->resize_cursor[4 + SIDE_LEFT] = XCreateFontCursor (md->dpy, XC_left_side); - md->resize_cursor[4 + SIDE_RIGHT] = XCreateFontCursor (md->dpy, XC_right_side); - md->resize_cursor[4 + SIDE_BOTTOM] = XCreateFontCursor (md->dpy, XC_bottom_side); - - XDefineCursor (md->dpy, md->xroot, md->root_cursor); - - md->xfilter = xfce_init_event_filter (md->gscr, MAIN_EVENT_MASK, (gpointer) md, "xfwm"); - if (!md->xfilter) - { - return -1; - } - xfce_push_event_filter (md->xfilter, xfwm4_event_filter, (gpointer) md); - - md->gnome_win = xfce_get_default_XID (md->xfilter); - DBG ("Our event window is 0x%lx", md->gnome_win); - - if (!initSettings (md)) - { - return -2; - } - - md->systray = getSystrayWindow (md->dpy); - setGnomeProtocols (md->dpy, md->screen, md->gnome_win); - setHint (md->dpy, md->xroot, win_supporting_wm_check, md->gnome_win); - setHint (md->dpy, md->xroot, win_desktop_button_proxy, md->gnome_win); - setHint (md->dpy, md->gnome_win, win_desktop_button_proxy, md->gnome_win); - getHint (md->dpy, md->xroot, win_workspace, &ws); - md->current_ws = (int) ws; - getGnomeDesktopMargins (md->dpy, md->screen, md->gnome_margins); - set_utf8_string_hint (md->dpy, md->gnome_win, net_wm_name, "Xfwm4"); - setNetSupportedHint (md->dpy, md->screen, md->gnome_win); - workspaceUpdateArea (md); - initNetDesktopParams (md->dpy, md->screen, - md->current_ws, - gdk_screen_get_width (md->gscr), - gdk_screen_get_height (md->gscr)); - setNetWorkarea (md->dpy, md->screen, params.workspace_count, - gdk_screen_get_width (md->gscr), - gdk_screen_get_height (md->gscr), - md->margins); - XSetInputFocus (md->dpy, md->gnome_win, RevertToPointerRoot, GDK_CURRENT_TIME); - initGtkCallbacks (md); initMenuEventWin (); - - /* The first time the first Gtk application on a display uses pango, - * pango grabs the XServer while it creates the font cache window. - * Therefore, force the cache window to be created now instead of - * trying to do it while we have another grab and deadlocking the server. - */ - layout = gtk_widget_create_pango_layout (xfce_get_default_gtk_widget (md->xfilter), "-"); - pango_layout_get_pixel_extents (layout, NULL, NULL); - g_object_unref (G_OBJECT (layout)); - clientClearFocus (); - clientFrameAll (md); + + display_info = myDisplayInit (gdk_display_get_default ()); + + initModifiers (display_info->dpy); act.sa_handler = handleSignal; act.sa_flags = 0; @@ -354,7 +215,7 @@ initialize (int argc, char **argv) sigaction (SIGUSR1, &act, NULL); sigaction (SIGSEGV, &act, NULL); - client_session = client_session_new (argc, argv, (gpointer) md, + client_session = client_session_new (argc, argv, (gpointer) display_info, SESSION_RESTART_IF_RUNNING, 20); client_session->data = (gpointer) client_session; client_session->save_phase_2 = save_phase_2; @@ -365,6 +226,51 @@ initialize (int argc, char **argv) load_saved_session (client_session); } + nscreens = gdk_display_get_n_screens(display_info->gdisplay); + for(i = 0; i < nscreens; i++) + { + ScreenInfo *screen_info = NULL; + GdkScreen *gscr; + + printf("Attemping to manage screen #%i\n", i); + gscr = gdk_display_get_screen(display_info->gdisplay, i); + screen_info = myScreenInit (display_info, gscr, MAIN_EVENT_MASK); + sn_init_display (screen_info); + myDisplayAddScreen (display_info, screen_info); + + if (!screen_info) + { + printf("Cannot manage screen #%i\n", i); + continue; + } + if (!initSettings (screen_info)) + { + return -2; + } + setGnomeProtocols (display_info->dpy, screen_info->screen, screen_info->gnome_win); + setHint (display_info->dpy, screen_info->xroot, win_supporting_wm_check, screen_info->gnome_win); + setHint (display_info->dpy, screen_info->xroot, win_desktop_button_proxy, screen_info->gnome_win); + setHint (display_info->dpy, screen_info->gnome_win, win_desktop_button_proxy, screen_info->gnome_win); + getHint (display_info->dpy, screen_info->xroot, win_workspace, &ws); + screen_info->current_ws = (int) ws; + getGnomeDesktopMargins (display_info->dpy, screen_info->screen, screen_info->gnome_margins); + set_utf8_string_hint (display_info->dpy, screen_info->gnome_win, net_wm_name, "Xfwm4"); + setNetSupportedHint (display_info->dpy, screen_info->screen, screen_info->gnome_win); + initNetDesktopInfo (display_info->dpy, screen_info->screen, + screen_info->current_ws, + gdk_screen_get_width (screen_info->gscr), + gdk_screen_get_height (screen_info->gscr)); + workspaceUpdateArea (screen_info); + XSetInputFocus (display_info->dpy, screen_info->gnome_win, RevertToPointerRoot, GDK_CURRENT_TIME); + + clientFrameAll (screen_info); + + initGtkCallbacks (screen_info); + } + + display_info->xfilter = xfce_init_event_filter ((gpointer) display_info); + xfce_push_event_filter (display_info->xfilter, xfwm4_event_filter, (gpointer) display_info); + return 0; } @@ -411,11 +317,12 @@ main (int argc, char **argv) if (daemon_mode) { #ifdef HAVE_DAEMON - if (daemon(TRUE, TRUE) < 0) { - g_warning(_("%s: Failed to enter daemon mode: %s"), - g_get_prgname(), g_strerror(errno)); - exit(EXIT_FAILURE); - } + if (daemon(TRUE, TRUE) < 0) + { + g_warning(_("%s: Failed to enter daemon mode: %s"), + g_get_prgname(), g_strerror(errno)); + exit(EXIT_FAILURE); + } #else /* !HAVE_DAEMON */ switch (fork ()) { @@ -426,8 +333,8 @@ main (int argc, char **argv) break; case 0: /* child */ #ifdef HAVE_SETSID - /* detach from terminal session */ - (void)setsid(); + /* detach from terminal session */ + (void)setsid(); #endif /* !HAVE_SETSID */ break; default: /* parent */ @@ -435,9 +342,9 @@ main (int argc, char **argv) break; } #endif /* !HAVE_DAEMON */ - } + } - /* enter GTK main loop */ + /* enter GTK main loop */ gtk_main (); break; default: diff --git a/src/menu.c b/src/menu.c index 8cec00479..d7b5b3a1c 100644 --- a/src/menu.c +++ b/src/menu.c @@ -160,6 +160,7 @@ menu_workspace (Menu * menu, MenuOp insensitive, gint ws, gint nws, gchar *wsn, gchar *ptr = wsn; menu_widget = gtk_menu_new (); + gtk_menu_set_screen (GTK_MENU (menu->menu), menu->screen); for (i = 0; i < nws; i++) { @@ -202,7 +203,7 @@ menu_workspace (Menu * menu, MenuOp insensitive, gint ws, gint nws, gchar *wsn, } Menu * -menu_default (MenuOp ops, MenuOp insensitive, MenuFunc func, gint ws, +menu_default (GdkScreen *gscr, MenuOp ops, MenuOp insensitive, MenuFunc func, gint ws, gint nws, gchar *wsn, gint wsnl, XfceFilterSetup *filter_setup, gpointer data) { int i; @@ -215,7 +216,9 @@ menu_default (MenuOp ops, MenuOp insensitive, MenuFunc func, gint ws, menu->data = data; menu->ops = ops; menu->insensitive = insensitive; + menu->screen = gscr; menu->menu = gtk_menu_new (); + gtk_menu_set_screen (GTK_MENU (menu->menu), menu->screen); i = 0; while (i < (int) (sizeof (menuitems) / sizeof (MenuItem))) @@ -403,7 +406,7 @@ menu_popup (Menu * menu, int root_x, int root_y, int button, if (!menu_check_and_close ()) { - if (!grab_available (xfce_get_gdk_event_window (menu->filter_setup), timestamp)) + if (!grab_available (gdk_screen_get_root_window (menu->screen), timestamp)) { g_free (pt); TRACE ("Cannot get grab on pointer/keyboard, cancel."); @@ -418,8 +421,7 @@ menu_popup (Menu * menu, int root_x, int root_y, int button, if (!GTK_MENU_SHELL (GTK_MENU (menu->menu))->have_xgrab) { gdk_beep (); - g_message (_("%s: GtkMenu failed to grab the pointer\n"), - g_get_prgname ()); + g_message (_("%s: GtkMenu failed to grab the pointer\n"), g_get_prgname ()); gtk_menu_popdown (GTK_MENU (menu->menu)); menu_open = NULL; xfce_pop_event_filter (menu->filter_setup); diff --git a/src/menu.h b/src/menu.h index 8161900fa..3aee216b7 100644 --- a/src/menu.h +++ b/src/menu.h @@ -78,6 +78,7 @@ struct _MenuData struct _Menu { + GdkScreen *screen; GtkWidget *menu; XfceFilterSetup *filter_setup; MenuFunc func; @@ -86,7 +87,8 @@ struct _Menu MenuOp insensitive; }; -Menu *menu_default (MenuOp, +Menu *menu_default (GdkScreen *, + MenuOp, MenuOp, MenuFunc, gint, diff --git a/src/misc.c b/src/misc.c index b1b9e100e..b0406dba5 100644 --- a/src/misc.c +++ b/src/misc.c @@ -35,6 +35,7 @@ #include <unistd.h> #include <libxfce4util/libxfce4util.h> +#include "display.h" #include "screen.h" #include "mywindow.h" #include "client.h" @@ -43,30 +44,30 @@ static int xgrabcount = 0; void -getMouseXY (ScreenData *md, Window w, int *x2, int *y2) +getMouseXY (ScreenInfo *screen_info, Window w, int *x2, int *y2) { Window w1, w2; gint x1, y1, m; TRACE ("entering getMouseXY"); - XQueryPointer (md->dpy, w, &w1, &w2, &x1, &y1, x2, y2, &m); + XQueryPointer (myScreenGetXDisplay (screen_info), w, &w1, &w2, &x1, &y1, x2, y2, &m); } Window -getMouseWindow (ScreenData *md, Window w) +getMouseWindow (ScreenInfo *screen_info, Window w) { Window w1, w2; int x1, y1, x2, y2, m; TRACE ("entering getMouseWindow"); - XQueryPointer (md->dpy, w, &w1, &w2, &x1, &y1, &x2, &y2, &m); + XQueryPointer (myScreenGetXDisplay (screen_info), w, &w1, &w2, &x1, &y1, &x2, &y2, &m); return w2; } GC -createGC (ScreenData *md, char *col, int func, XFontStruct * font, +createGC (ScreenInfo *screen_info, char *col, int func, XFontStruct * font, int line_width, gboolean inc_sw) { XGCValues gv; @@ -78,7 +79,7 @@ createGC (ScreenData *md, char *col, int func, XFontStruct * font, TRACE ("color=%s", col); mask = GCForeground | GCFunction; - XAllocNamedColor (md->dpy, md->cmap, col, &xc1, &xc2); + XAllocNamedColor (myScreenGetXDisplay (screen_info), screen_info->cmap, col, &xc1, &xc2); gv.foreground = xc2.pixel; gv.function = func; if (font) @@ -96,12 +97,12 @@ createGC (ScreenData *md, char *col, int func, XFontStruct * font, gv.line_width = line_width; mask = mask | GCLineWidth; } - gc = XCreateGC (md->dpy, md->xroot, mask, &gv); + gc = XCreateGC (myScreenGetXDisplay (screen_info), screen_info->xroot, mask, &gv); return gc; } void -sendClientMessage (ScreenData *md, Window w, Atom a, Atom x, Time timestamp) +sendClientMessage (ScreenInfo *screen_info, Window w, Atom a, Atom x, Time timestamp) { XClientMessageEvent ev; @@ -113,24 +114,24 @@ sendClientMessage (ScreenData *md, Window w, Atom a, Atom x, Time timestamp) ev.format = 32; ev.data.l[0] = x; ev.data.l[1] = timestamp; - XSendEvent (md->dpy, w, FALSE, 0L, (XEvent *)&ev); + XSendEvent (myScreenGetXDisplay (screen_info), w, FALSE, 0L, (XEvent *)&ev); } void -myXGrabServer (ScreenData *md) +myXGrabServer (ScreenInfo *screen_info) { DBG ("entering myXGrabServer"); if (xgrabcount == 0) { DBG ("grabbing server"); - XGrabServer (md->dpy); + XGrabServer (myScreenGetXDisplay (screen_info)); } xgrabcount++; DBG ("grabs : %i", xgrabcount); } void -myXUngrabServer (ScreenData *md) +myXUngrabServer (ScreenInfo *screen_info) { DBG ("entering myXUngrabServer"); if (--xgrabcount < 0) /* should never happen */ @@ -140,28 +141,31 @@ myXUngrabServer (ScreenData *md) if (xgrabcount == 0) { DBG ("ungrabbing server"); - XUngrabServer (md->dpy); - XFlush (md->dpy); + XUngrabServer (myScreenGetXDisplay (screen_info)); + XFlush (myScreenGetXDisplay (screen_info)); } DBG ("grabs : %i", xgrabcount); } /* * it's safer to grab the display before calling this routine - * Returns true if the given window is present and mapped on md->xroot + * Returns true if the given window is present and mapped on root */ gboolean -myCheckWindow(ScreenData *md, Window w) +checkWindowOnRoot(ScreenInfo *screen_info, Window w) { + DisplayInfo *display_info; Window dummy_root, parent; Window *wins = NULL; unsigned int count; Status test; + g_return_val_if_fail (screen_info != NULL, FALSE); g_return_val_if_fail (w != None, FALSE); + display_info = screen_info->display_info; gdk_error_trap_push (); - test = XQueryTree(md->dpy, w, &dummy_root, &parent, &wins, &count); + test = XQueryTree(display_info->dpy, w, &dummy_root, &parent, &wins, &count); if (wins) { XFree (wins); @@ -170,28 +174,28 @@ myCheckWindow(ScreenData *md, Window w) } void -placeSidewalks(ScreenData *md, gboolean activate) +placeSidewalks(ScreenInfo *screen_info, gboolean activate) { - g_return_if_fail (MYWINDOW_XWINDOW (md->sidewalk[0]) != None); - g_return_if_fail (MYWINDOW_XWINDOW (md->sidewalk[1]) != None); + g_return_if_fail (MYWINDOW_XWINDOW (screen_info->sidewalk[0]) != None); + g_return_if_fail (MYWINDOW_XWINDOW (screen_info->sidewalk[1]) != None); if (activate) { - myWindowShow (&md->sidewalk[0], + xfwmWindowShow (&screen_info->sidewalk[0], 0, 0, - 1, gdk_screen_get_height (md->gscr), FALSE); - myWindowShow (&md->sidewalk[1], - gdk_screen_get_width (md->gscr) - 1, 0, - 1, gdk_screen_get_height (md->gscr), FALSE); + 1, gdk_screen_get_height (screen_info->gscr), FALSE); + xfwmWindowShow (&screen_info->sidewalk[1], + gdk_screen_get_width (screen_info->gscr) - 1, 0, + 1, gdk_screen_get_height (screen_info->gscr), FALSE); } else { /* Place the windows off screen */ - myWindowShow (&md->sidewalk[0], + xfwmWindowShow (&screen_info->sidewalk[0], -1, 0, - 1, gdk_screen_get_height (md->gscr), FALSE); - myWindowShow (&md->sidewalk[1], - gdk_screen_get_width (md->gscr), 0, - 1, gdk_screen_get_height (md->gscr), FALSE); + 1, gdk_screen_get_height (screen_info->gscr), FALSE); + xfwmWindowShow (&screen_info->sidewalk[1], + gdk_screen_get_width (screen_info->gscr), 0, + 1, gdk_screen_get_height (screen_info->gscr), FALSE); } } diff --git a/src/misc.h b/src/misc.h index 1aef28819..b1de74ae1 100644 --- a/src/misc.h +++ b/src/misc.h @@ -18,9 +18,6 @@ */ -#ifndef INC_MISC_H -#define INC_MISC_H - #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -30,13 +27,16 @@ #include <glib.h> #include "screen.h" -void getMouseXY (ScreenData *, Window, int *, int *); -Window getMouseWindow (ScreenData *, Window); -GC createGC (ScreenData *, char *, int, XFontStruct *, int, gboolean); -void sendClientMessage (ScreenData *, Window, Atom, Atom, Time); -void myXGrabServer (ScreenData *); -void myXUngrabServer (ScreenData *); -gboolean myCheckWindow(ScreenData *, Window); -void placeSidewalks(ScreenData *, gboolean); +#ifndef INC_MISC_H +#define INC_MISC_H + +void getMouseXY (ScreenInfo *, Window, int *, int *); +Window getMouseWindow (ScreenInfo *, Window); +GC createGC (ScreenInfo *, char *, int, XFontStruct *, int, gboolean); +void sendClientMessage (ScreenInfo *, Window, Atom, Atom, Time); +void myXGrabServer (ScreenInfo *); +void myXUngrabServer (ScreenInfo *); +gboolean checkWindowOnRoot (ScreenInfo *, Window); +void placeSidewalks(ScreenInfo *, gboolean); #endif /* INC_MISC_H */ diff --git a/src/mypixmap.c b/src/mypixmap.c index 4daa16e7c..d361ba10f 100644 --- a/src/mypixmap.c +++ b/src/mypixmap.c @@ -34,7 +34,7 @@ #include "mypixmap.h" static gboolean -myPixmapCompose (MyPixmap * pm, gchar * dir, gchar * file) +xfwmPixmapCompose (XfwmPixmap * pm, gchar * dir, gchar * file) { gchar *filepng; gchar *filename; @@ -88,7 +88,7 @@ myPixmapCompose (MyPixmap * pm, gchar * dir, gchar * file) { g_object_ref (G_OBJECT (cmap)); } - if (cmap == NULL) + else { if (gdk_drawable_get_depth (destw) == 1) { @@ -96,7 +96,7 @@ myPixmapCompose (MyPixmap * pm, gchar * dir, gchar * file) } else { - cmap = gdk_screen_get_rgb_colormap (pm->md->gscr); + cmap = gdk_screen_get_rgb_colormap (pm->screen_info->gscr); g_object_ref (G_OBJECT (cmap)); } } @@ -126,19 +126,19 @@ myPixmapCompose (MyPixmap * pm, gchar * dir, gchar * file) } gboolean -myPixmapLoad (ScreenData * md, MyPixmap * pm, gchar * dir, gchar * file, +xfwmPixmapLoad (ScreenInfo * screen_info, XfwmPixmap * pm, gchar * dir, gchar * file, XpmColorSymbol * cs, gint n) { gchar *filename; gchar *filexpm; XpmAttributes attr; - TRACE ("entering myPixmapLoad"); + TRACE ("entering xfwmPixmapLoad"); g_return_val_if_fail (dir != NULL, FALSE); g_return_val_if_fail (file != NULL, FALSE); - pm->md = md; + pm->screen_info = screen_info; pm->pixmap = None; pm->mask = None; pm->width = 1; @@ -148,14 +148,14 @@ myPixmapLoad (ScreenData * md, MyPixmap * pm, gchar * dir, gchar * file, g_free (filexpm); attr.colorsymbols = cs; attr.numsymbols = n; - attr.colormap = pm->md->cmap; + attr.colormap = pm->screen_info->cmap; attr.closeness = 65535; attr.valuemask = XpmCloseness | XpmColormap | XpmSize; if (n > 0 && cs) { attr.valuemask = attr.valuemask | XpmColorSymbols; } - if (XpmReadFileToPixmap (md->dpy, md->xroot, filename, &pm->pixmap, &pm->mask, &attr)) + if (XpmReadFileToPixmap (myScreenGetXDisplay (screen_info), screen_info->xroot, filename, &pm->pixmap, &pm->mask, &attr)) { TRACE ("%s not found", filename); g_free (filename); @@ -167,33 +167,33 @@ myPixmapLoad (ScreenData * md, MyPixmap * pm, gchar * dir, gchar * file, g_free (filename); /* Apply the alpha channel if available */ - myPixmapCompose (pm, dir, file); + xfwmPixmapCompose (pm, dir, file); return TRUE; } void -myPixmapCreate (ScreenData * md, MyPixmap * pm, gint width, gint height) +xfwmPixmapCreate (ScreenInfo * screen_info, XfwmPixmap * pm, gint width, gint height) { - TRACE ("entering myPixmapCreate, width=%i, height=%i", width, height); - if ((width < 1) || (height < 1) || (!md)) + TRACE ("entering xfwmPixmapCreate, width=%i, height=%i", width, height); + if ((width < 1) || (height < 1) || (!screen_info)) { - myPixmapInit (pm); + xfwmPixmapInit (screen_info, pm); } else { - pm->md = md; - pm->pixmap = XCreatePixmap (md->dpy, md->xroot, width, height, md->depth); - pm->mask = XCreatePixmap (md->dpy, pm->pixmap, width, height, 1); + pm->screen_info = screen_info; + pm->pixmap = XCreatePixmap (myScreenGetXDisplay (screen_info), screen_info->xroot, width, height, screen_info->depth); + pm->mask = XCreatePixmap (myScreenGetXDisplay (screen_info), pm->pixmap, width, height, 1); pm->width = width; pm->height = height; } } void -myPixmapInit (MyPixmap * pm) +xfwmPixmapInit (ScreenInfo * screen_info, XfwmPixmap * pm) { - pm->md = NULL; + pm->screen_info = screen_info; pm->pixmap = None; pm->mask = None; pm->width = 0; @@ -201,18 +201,19 @@ myPixmapInit (MyPixmap * pm) } void -myPixmapFree (MyPixmap * pm) +xfwmPixmapFree (XfwmPixmap * pm) { - TRACE ("entering myPixmapFree"); - + + TRACE ("entering xfwmPixmapFree"); + if (pm->pixmap != None) { - XFreePixmap (pm->md->dpy, pm->pixmap); + XFreePixmap (myScreenGetXDisplay(pm->screen_info), pm->pixmap); pm->pixmap = None; } if (pm->mask != None) { - XFreePixmap (pm->md->dpy, pm->mask); + XFreePixmap (myScreenGetXDisplay(pm->screen_info), pm->mask); pm->mask = None; } } diff --git a/src/mypixmap.h b/src/mypixmap.h index 779a053fa..cbd748e83 100644 --- a/src/mypixmap.h +++ b/src/mypixmap.h @@ -18,9 +18,6 @@ */ -#ifndef INC_MYPIXMAP_H -#define INC_MYPIXMAP_H - #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -29,18 +26,28 @@ #include <glib.h> #include "screen.h" -typedef struct +#ifndef INC_MYPIXMAP_H +#define INC_MYPIXMAP_H + +struct _XfwmPixmap { - ScreenData *md; + ScreenInfo *screen_info; Pixmap pixmap, mask; gint width, height; -} -MyPixmap; +}; -gboolean myPixmapLoad (ScreenData *, MyPixmap *, gchar *, gchar *, - XpmColorSymbol *, gint); -void myPixmapCreate (ScreenData *, MyPixmap *, gint, gint); -void myPixmapInit (MyPixmap *); -void myPixmapFree (MyPixmap *); +gboolean xfwmPixmapLoad (ScreenInfo *, + XfwmPixmap *, + gchar *, + gchar *, + XpmColorSymbol *, + gint); +void xfwmPixmapCreate (ScreenInfo *, + XfwmPixmap *, + gint, + gint); +void xfwmPixmapInit (ScreenInfo *, + XfwmPixmap *); +void xfwmPixmapFree (XfwmPixmap *); #endif /* INC_MYPIXMAP_H */ diff --git a/src/mywindow.c b/src/mywindow.c index 60ac3f56e..3434a80b0 100644 --- a/src/mywindow.c +++ b/src/mywindow.c @@ -31,21 +31,21 @@ #include "mywindow.h" void -myWindowInit (myWindow * win) +xfwmWindowInit (xfwmWindow * win) { win->window = None; win->map = FALSE; win->dpy = NULL; win->x = 0; win->y = 0; - win->w = 0; - win->h = 0; + win->w = 1; + win->h = 1; } void -myWindowCreate (Display * dpy, Window parent, myWindow * win, Cursor cursor) +xfwmWindowCreate (Display * dpy, Window parent, xfwmWindow * win, Cursor cursor) { - TRACE ("entering myWindowCreate"); + TRACE ("entering xfwmWindowCreate"); win->window = XCreateSimpleWindow (dpy, parent, 0, 0, 1, 1, 0, 0, 0); TRACE ("Created XID 0x%lx", win->window); @@ -62,9 +62,9 @@ myWindowCreate (Display * dpy, Window parent, myWindow * win, Cursor cursor) } void -myWindowDelete (myWindow * win) +xfwmWindowDelete (xfwmWindow * win) { - TRACE ("entering myWindowDelete"); + TRACE ("entering xfwmWindowDelete"); if (win->window != None) { @@ -75,10 +75,10 @@ myWindowDelete (myWindow * win) } void -myWindowShow (myWindow * win, int x, int y, int width, int height, +xfwmWindowShow (xfwmWindow * win, int x, int y, int width, int height, gboolean refresh) { - TRACE ("entering myWindowShow"); + TRACE ("entering xfwmWindowShow"); if (!(win->window)) { @@ -86,7 +86,7 @@ myWindowShow (myWindow * win, int x, int y, int width, int height, } if ((width < 1) || (height < 1)) { - myWindowHide (win); + xfwmWindowHide (win); return; } if (!(win->map)) @@ -129,19 +129,20 @@ myWindowShow (myWindow * win, int x, int y, int width, int height, } void -myWindowHide (myWindow * win) +xfwmWindowHide (xfwmWindow * win) { - TRACE ("entering myWindowHide"); + TRACE ("entering xfwmWindowHide"); if (win->map) { + g_assert (win->window); XUnmapWindow (win->dpy, win->window); win->map = FALSE; } } gboolean -myWindowVisible (myWindow *win) +xfwmWindowVisible (xfwmWindow *win) { g_return_val_if_fail (win, FALSE); @@ -149,15 +150,15 @@ myWindowVisible (myWindow *win) } gboolean -myWindowDeleted (myWindow *win) +xfwmWindowDeleted (xfwmWindow *win) { g_return_val_if_fail (win, TRUE); - return win->window == None; + return (win->window == None); } void -myWindowTemp (Display * dpy, Window parent, myWindow * win, +xfwmWindowTemp (Display * dpy, Window parent, xfwmWindow * win, int x, int y, int w, int h, long eventmask) { XSetWindowAttributes attributes; diff --git a/src/mywindow.h b/src/mywindow.h index 7020655f9..ad1ae98ba 100644 --- a/src/mywindow.h +++ b/src/mywindow.h @@ -30,8 +30,8 @@ #define MYWINDOW_XWINDOW(w) (w.window) -typedef struct _myWindow myWindow; -struct _myWindow +typedef struct _xfwmWindow xfwmWindow; +struct _xfwmWindow { Display *dpy; Window window; @@ -40,30 +40,29 @@ struct _myWindow gboolean map; }; -void -myWindowInit (myWindow *); -void myWindowCreate (Display *, - Window, - myWindow *, - Cursor); -void myWindowTemp (Display *, - Window, - myWindow *, - int, - int, - int, - int, - long); -void myWindowDelete (myWindow *); -void myWindowShow (myWindow *, - int, - int, - int, - int, - gboolean); -void myWindowHide (myWindow *); -gboolean myWindowVisible (myWindow *); -gboolean myWindowDeleted (myWindow *); +void xfwmWindowInit (xfwmWindow *); +void xfwmWindowCreate (Display *, + Window, + xfwmWindow *, + Cursor); +void xfwmWindowTemp (Display *, + Window, + xfwmWindow *, + int, + int, + int, + int, + long); +void xfwmWindowDelete (xfwmWindow *); +void xfwmWindowShow (xfwmWindow *, + int, + int, + int, + int, + gboolean); +void xfwmWindowHide (xfwmWindow *); +gboolean xfwmWindowVisible (xfwmWindow *); +gboolean xfwmWindowDeleted (xfwmWindow *); #endif /* INC_MYWINDOW_H */ diff --git a/src/netwm.c b/src/netwm.c index 48aceabeb..d55092ee2 100644 --- a/src/netwm.c +++ b/src/netwm.c @@ -113,13 +113,13 @@ clientSetNetState (Client * c) TRACE ("clientSetNetState : hidden"); data[i++] = net_wm_state_hidden; } - XChangeProperty (c->md->dpy, c->window, net_wm_state, XA_ATOM, 32, + XChangeProperty (clientGetXDisplay (c), c->window, net_wm_state, XA_ATOM, 32, PropModeReplace, (unsigned char *) data, i); /* We also set GNOME hint here for consistency and convenience, although the meaning of net_wm_state and win_state aren't the same. */ - setHint (c->md->dpy, c->window, win_state, c->win_state); + setHint (clientGetXDisplay (c), c->window, win_state, c->win_state); } void @@ -132,7 +132,7 @@ clientGetNetState (Client * c) TRACE ("entering clientGetNetState"); TRACE ("client \"%s\" (0x%lx)", c->name, c->window); - if (getAtomList (c->md->dpy, c->window, net_wm_state, &atoms, &n_atoms)) + if (getAtomList (clientGetXDisplay (c), c->window, net_wm_state, &atoms, &n_atoms)) { int i; TRACE ("clientGetNetState: %i atoms detected", n_atoms); @@ -510,8 +510,8 @@ clientUpdateFullscreenState (Client * c) cx = frameX (c) + (frameWidth (c) / 2); cy = frameY (c) + (frameHeight (c) / 2); - monitor_nbr = gdk_screen_get_monitor_at_point (c->md->gscr, cx, cy); - gdk_screen_get_monitor_geometry (c->md->gscr, monitor_nbr, &rect); + monitor_nbr = gdk_screen_get_monitor_at_point (c->screen_info->gscr, cx, cy); + gdk_screen_get_monitor_geometry (c->screen_info->gscr, monitor_nbr, &rect); c->fullscreen_old_x = c->x; c->fullscreen_old_y = c->y; @@ -542,10 +542,10 @@ clientUpdateFullscreenState (Client * c) grab focus in focus follow mouse mode. Grab the pointer to avoid these effects */ - XGrabPointer (c->md->dpy, c->md->gnome_win, FALSE, EnterWindowMask, GrabModeAsync, + XGrabPointer (clientGetXDisplay (c), c->screen_info->gnome_win, FALSE, EnterWindowMask, GrabModeAsync, GrabModeAsync, None, None, GDK_CURRENT_TIME); clientConfigure (c, &wc, CWX | CWY | CWWidth | CWHeight, NO_CFG_FLAG); - XUngrabPointer (c->md->dpy, GDK_CURRENT_TIME); + XUngrabPointer (clientGetXDisplay (c), GDK_CURRENT_TIME); } else { @@ -571,7 +571,7 @@ clientGetNetWmType (Client * c) n_atoms = 0; atoms = NULL; - if (!getAtomList (c->md->dpy, c->window, net_wm_window_type, &atoms, &n_atoms)) + if (!getAtomList (clientGetXDisplay (c), c->window, net_wm_window_type, &atoms, &n_atoms)) { switch (c->win_layer) { @@ -644,9 +644,9 @@ clientGetInitialNetWmDesktop (Client * c) CLIENT_FLAG_SESSION_MANAGED | CLIENT_FLAG_WORKSPACE_SET)) { FLAG_SET (c->flags, CLIENT_FLAG_WORKSPACE_SET); - c->win_workspace = c->md->current_ws; + c->win_workspace = c->screen_info->current_ws; } - if (getHint (c->md->dpy, c->window, net_wm_desktop, &val)) + if (getHint (clientGetXDisplay (c), c->window, net_wm_desktop, &val)) { TRACE ("atom net_wm_desktop detected"); if (val == (int) ALL_WORKSPACES) @@ -660,7 +660,7 @@ clientGetInitialNetWmDesktop (Client * c) FLAG_SET (c->flags, CLIENT_FLAG_STICKY); c->win_state |= WIN_STATE_STICKY; } - c->win_workspace = c->md->current_ws; + c->win_workspace = c->screen_info->current_ws; } else { @@ -671,7 +671,7 @@ clientGetInitialNetWmDesktop (Client * c) } FLAG_SET (c->flags, CLIENT_FLAG_WORKSPACE_SET); } - else if (getHint (c->md->dpy, c->window, win_workspace, &val)) + else if (getHint (clientGetXDisplay (c), c->window, win_workspace, &val)) { TRACE ("atom win_workspace specifies window \"%s\" is on desk %i", c->name, (int) val); @@ -681,28 +681,28 @@ clientGetInitialNetWmDesktop (Client * c) } TRACE ("initial desktop for window \"%s\" is %i", c->name, c->win_workspace); - if (c->win_workspace > params.workspace_count - 1) + if (c->win_workspace > c->screen_info->workspace_count - 1) { TRACE ("value off limits, using %i instead", - params.workspace_count - 1); - c->win_workspace = params.workspace_count - 1; + c->screen_info->workspace_count - 1); + c->win_workspace = c->screen_info->workspace_count - 1; FLAG_SET (c->flags, CLIENT_FLAG_WORKSPACE_SET); } TRACE ("initial desktop for window \"%s\" is %i", c->name, c->win_workspace); - setHint (c->md->dpy, c->window, win_workspace, c->win_workspace); + setHint (clientGetXDisplay (c), c->window, win_workspace, c->win_workspace); if (FLAG_TEST (c->flags, CLIENT_FLAG_STICKY)) { - setHint (c->md->dpy, c->window, net_wm_desktop, (unsigned long) ALL_WORKSPACES); + setHint (clientGetXDisplay (c), c->window, net_wm_desktop, (unsigned long) ALL_WORKSPACES); } else { - setHint (c->md->dpy, c->window, net_wm_desktop, (unsigned long) c->win_workspace); + setHint (clientGetXDisplay (c), c->window, net_wm_desktop, (unsigned long) c->win_workspace); } } void -clientSetNetClientList (ScreenData * md, Atom a, GList * list) +clientSetNetClientList (ScreenInfo * screen_info, Atom a, GList * list) { Window *listw; Window *index_dest; @@ -714,18 +714,18 @@ clientSetNetClientList (ScreenData * md, Atom a, GList * list) size = g_list_length (list); if (size < 1) { - XDeleteProperty (md->dpy, md->xroot, a); + XDeleteProperty (myScreenGetXDisplay (screen_info), screen_info->xroot, a); } else if ((listw = (Window *) malloc ((size + 1) * sizeof (Window)))) { - TRACE ("%i windows in list for %i clients", size, client_count); + TRACE ("%i windows in list for %i clients", size, screen_info->client_count); for (i = 0, index_dest = listw, index_src = list; i < size; i++, index_dest++, index_src = g_list_next (index_src)) { Client *c = (Client *) index_src->data; *index_dest = c->window; } - XChangeProperty (md->dpy, md->xroot, a, XA_WINDOW, 32, PropModeReplace, + XChangeProperty (myScreenGetXDisplay (screen_info), screen_info->xroot, a, XA_WINDOW, 32, PropModeReplace, (unsigned char *) listw, size); free (listw); } @@ -749,11 +749,14 @@ clientGetNetStruts (Client * c) FLAG_UNSET (c->flags, CLIENT_FLAG_HAS_STRUT); FLAG_UNSET (c->flags, CLIENT_FLAG_HAS_STRUT_PARTIAL); - if (getCardinalList (c->md->dpy, c->window, net_wm_strut_partial, &struts, &nitems)) + if (getCardinalList (clientGetXDisplay (c), c->window, net_wm_strut_partial, &struts, &nitems)) { if (nitems != 12) { - XFree (struts); + if (struts) + { + XFree (struts); + } return; } @@ -765,13 +768,16 @@ clientGetNetStruts (Client * c) } XFree (struts); - workspaceUpdateArea (c->md); + workspaceUpdateArea (c->screen_info); } - else if (getCardinalList (c->md->dpy, c->window, net_wm_strut, &struts, &nitems)) + else if (getCardinalList (clientGetXDisplay (c), c->window, net_wm_strut, &struts, &nitems)) { if (nitems != 4) { - XFree (struts); + if (struts) + { + XFree (struts); + } return; } @@ -787,13 +793,13 @@ clientGetNetStruts (Client * c) /* Fill(in values as for partial struts */ c->struts[TOP_START_X] = c->struts[BOTTOM_START_X] = 0; c->struts[TOP_END_X] = c->struts[BOTTOM_END_X] = - gdk_screen_get_width (c->md->gscr); + gdk_screen_get_width (c->screen_info->gscr); c->struts[LEFT_START_Y] = c->struts[RIGHT_START_Y] = 0; c->struts[LEFT_END_Y] = c->struts[RIGHT_END_Y] = - gdk_screen_get_height (c->md->gscr); + gdk_screen_get_height (c->screen_info->gscr); XFree (struts); - workspaceUpdateArea (c->md); + workspaceUpdateArea (c->screen_info); } } @@ -818,7 +824,7 @@ clientSetNetActions (Client * c) { atoms[i++] = net_wm_action_shade; } - XChangeProperty (c->md->dpy, c->window, net_wm_allowed_actions, XA_ATOM, 32, + XChangeProperty (clientGetXDisplay (c), c->window, net_wm_allowed_actions, XA_ATOM, 32, PropModeReplace, (unsigned char *) atoms, i); } diff --git a/src/netwm.h b/src/netwm.h index 47ab7d8ff..740ead33d 100644 --- a/src/netwm.h +++ b/src/netwm.h @@ -36,7 +36,7 @@ void clientUpdateNetState (Client *, XClientMessageEvent *); void clientUpdateFullscreenState (Client *); void clientGetNetWmType (Client *); void clientGetInitialNetWmDesktop (Client *); -void clientSetNetClientList (ScreenData *, Atom, GList *); +void clientSetNetClientList (ScreenInfo *, Atom, GList *); void clientGetNetStruts (Client *); void clientSetNetActions (Client *); void clientWindowType (Client *); diff --git a/src/parserc.c b/src/parserc.c index 9ff062d49..3d2afe392 100644 --- a/src/parserc.c +++ b/src/parserc.c @@ -29,8 +29,8 @@ #include <glib.h> #include <libxfce4util/libxfce4util.h> -#include "parserc.h" #include "settings.h" +#include "parserc.h" #ifndef DEFAULT_THEME #define DEFAULT_THEME "Default" diff --git a/src/placement.c b/src/placement.c index 3bf8de3ed..5a91df5f7 100644 --- a/src/placement.c +++ b/src/placement.c @@ -52,18 +52,18 @@ clientStrutAreaOverlap (int x, int y, int w, int h, Client * c) c->struts[LEFT], c->struts[LEFT_END_Y]) + overlap (x, y, x + w, y + h, - gdk_screen_get_width (c->md->gscr) - c->struts[RIGHT], + gdk_screen_get_width (c->screen_info->gscr) - c->struts[RIGHT], c->struts[RIGHT_START_Y], - gdk_screen_get_width (c->md->gscr), c->struts[RIGHT_END_Y]) + gdk_screen_get_width (c->screen_info->gscr), c->struts[RIGHT_END_Y]) + overlap (x, y, x + w, y + h, c->struts[TOP_START_X], 0, c->struts[TOP_END_X], c->struts[TOP]) + overlap (x, y, x + w, y + h, c->struts[BOTTOM_START_X], - gdk_screen_get_height (c->md->gscr) - c->struts[BOTTOM], + gdk_screen_get_height (c->screen_info->gscr) - c->struts[BOTTOM], c->struts[BOTTOM_END_X], - gdk_screen_get_height (c->md->gscr)); + gdk_screen_get_height (c->screen_info->gscr)); } return sigma; } @@ -114,7 +114,7 @@ overlap (int x0, int y0, int x1, int y1, int tx0, int ty0, int tx1, int ty1) } void -clientMaxSpace (int *x, int *y, int *w, int *h) +clientMaxSpace (ScreenInfo *screen_info, int *x, int *y, int *w, int *h) { Client *c2; int i, delta = 0; @@ -124,7 +124,7 @@ clientMaxSpace (int *x, int *y, int *w, int *h) g_return_if_fail (w != NULL); g_return_if_fail (h != NULL); - for (c2 = clients, i = 0; i < client_count; c2 = c2->next, i++) + for (c2 = screen_info->clients, i = 0; i < screen_info->client_count; c2 = c2->next, i++) { if (FLAG_TEST_ALL (c2->flags, CLIENT_FLAG_HAS_STRUT | CLIENT_FLAG_VISIBLE)) { @@ -139,10 +139,10 @@ clientMaxSpace (int *x, int *y, int *w, int *h) /* Right */ if (overlap (*x, *y, *x + *w, *y + *h, - gdk_screen_get_width (c2->md->gscr) - c2->struts[RIGHT], c2->struts[RIGHT_START_Y], - gdk_screen_get_width (c2->md->gscr), c2->struts[RIGHT_END_Y])) + gdk_screen_get_width (c2->screen_info->gscr) - c2->struts[RIGHT], c2->struts[RIGHT_START_Y], + gdk_screen_get_width (c2->screen_info->gscr), c2->struts[RIGHT_END_Y])) { - delta = (*x + *w) - gdk_screen_get_width (c2->md->gscr) + c2->struts[RIGHT]; + delta = (*x + *w) - gdk_screen_get_width (c2->screen_info->gscr) + c2->struts[RIGHT]; *w = *w - delta; } @@ -157,10 +157,10 @@ clientMaxSpace (int *x, int *y, int *w, int *h) /* Bottom */ if (overlap (*x, *y, *x + *w, *y + *h, - c2->struts[BOTTOM_START_X], gdk_screen_get_height (c2->md->gscr) - c2->struts[BOTTOM], - c2->struts[BOTTOM_END_X], gdk_screen_get_height (c2->md->gscr))) + c2->struts[BOTTOM_START_X], gdk_screen_get_height (c2->screen_info->gscr) - c2->struts[BOTTOM], + c2->struts[BOTTOM_END_X], gdk_screen_get_height (c2->screen_info->gscr))) { - delta = (*y + *h) - gdk_screen_get_height (c2->md->gscr) + c2->struts[BOTTOM]; + delta = (*y + *h) - gdk_screen_get_height (c2->screen_info->gscr) + c2->struts[BOTTOM]; *h = *h - delta; } } @@ -171,15 +171,17 @@ gboolean clientCkeckTitle (Client * c) { Client *c2; + ScreenInfo *screen_info; int i, frame_x, frame_y, frame_width, frame_top; - + frame_x = frameX (c); frame_y = frameY (c); frame_width = frameWidth (c); frame_top = frameTop (c); /* Struts and other partial struts */ - for (c2 = clients, i = 0; i < client_count; c2 = c2->next, i++) + screen_info = c->screen_info; + for (c2 = screen_info->clients, i = 0; i < screen_info->client_count; c2 = c2->next, i++) { if ((c2 != c) && clientStrutAreaOverlap(frame_x, frame_y, frame_width, frame_top, c2)) { @@ -196,6 +198,7 @@ void clientConstrainPos (Client * c, gboolean show_full) { Client *c2; + ScreenInfo *screen_info; int i, cx, cy, disp_x, disp_y, disp_max_x, disp_max_y; int frame_x, frame_y, frame_height, frame_width, frame_top, frame_left; GdkRectangle rect; @@ -217,8 +220,9 @@ clientConstrainPos (Client * c, gboolean show_full) cx = frame_x + (frame_width / 2); cy = frame_y + (frame_height / 2); - monitor_nbr = gdk_screen_get_monitor_at_point (c->md->gscr, cx, cy); - gdk_screen_get_monitor_geometry (c->md->gscr, monitor_nbr, &rect); + screen_info = c->screen_info; + monitor_nbr = gdk_screen_get_monitor_at_point (screen_info->gscr, cx, cy); + gdk_screen_get_monitor_geometry (screen_info->gscr, monitor_nbr, &rect); disp_x = rect.x; disp_y = rect.y; @@ -251,7 +255,7 @@ clientConstrainPos (Client * c, gboolean show_full) } /* Struts and other partial struts */ - for (c2 = clients, i = 0; i < client_count; c2 = c2->next, i++) + for (c2 = screen_info->clients, i = 0; i < screen_info->client_count; c2 = c2->next, i++) { if (FLAG_TEST_ALL (c2->flags, CLIENT_FLAG_HAS_STRUT | CLIENT_FLAG_VISIBLE) && (c2 != c)) { @@ -269,9 +273,9 @@ clientConstrainPos (Client * c, gboolean show_full) if (overlapY (frame_y, frame_y + frame_height, c2->struts[RIGHT_START_Y], c2->struts[RIGHT_END_Y])) { if (overlapX (frame_x, frame_x + frame_width, - gdk_screen_get_width (c->md->gscr) - c2->struts[RIGHT], gdk_screen_get_width (c->md->gscr))) + gdk_screen_get_width (screen_info->gscr) - c2->struts[RIGHT], gdk_screen_get_width (screen_info->gscr))) { - c->x = gdk_screen_get_width (c->md->gscr) - c2->struts[RIGHT] - frame_width; + c->x = gdk_screen_get_width (screen_info->gscr) - c2->struts[RIGHT] - frame_width; frame_x = frameX (c); } } @@ -290,9 +294,9 @@ clientConstrainPos (Client * c, gboolean show_full) if (overlapX (frame_x, frame_x + frame_width, c2->struts[BOTTOM_START_X], c2->struts[BOTTOM_END_X])) { if (overlapY (frame_y, frame_y + frame_height, - gdk_screen_get_height (c->md->gscr) - c2->struts[BOTTOM], gdk_screen_get_height (c->md->gscr))) + gdk_screen_get_height (screen_info->gscr) - c2->struts[BOTTOM], gdk_screen_get_height (screen_info->gscr))) { - c->y = gdk_screen_get_height (c->md->gscr) - c2->struts[BOTTOM] - frame_height; + c->y = gdk_screen_get_height (screen_info->gscr) - c2->struts[BOTTOM] - frame_height; frame_y = frameY (c); } } @@ -328,7 +332,7 @@ clientConstrainPos (Client * c, gboolean show_full) } /* Struts and other partial struts */ - for (c2 = clients, i = 0; i < client_count; c2 = c2->next, i++) + for (c2 = screen_info->clients, i = 0; i < screen_info->client_count; c2 = c2->next, i++) { if (FLAG_TEST_ALL (c2->flags, CLIENT_FLAG_HAS_STRUT | CLIENT_FLAG_VISIBLE) && (c2 != c)) { @@ -345,9 +349,9 @@ clientConstrainPos (Client * c, gboolean show_full) /* Right */ if (overlapY (frame_y, frame_y + frame_height, c2->struts[RIGHT_START_Y], c2->struts[RIGHT_END_Y])) { - if (frame_x > gdk_screen_get_width (c->md->gscr) - c2->struts[RIGHT] - CLIENT_MIN_VISIBLE) + if (frame_x > gdk_screen_get_width (screen_info->gscr) - c2->struts[RIGHT] - CLIENT_MIN_VISIBLE) { - c->x = gdk_screen_get_width (c->md->gscr) - c2->struts[RIGHT] - CLIENT_MIN_VISIBLE + frame_left; + c->x = gdk_screen_get_width (screen_info->gscr) - c2->struts[RIGHT] - CLIENT_MIN_VISIBLE + frame_left; frame_x = frameX (c); } } @@ -370,9 +374,9 @@ clientConstrainPos (Client * c, gboolean show_full) /* Bottom */ if (overlapX (frame_x, frame_x + frame_width, c2->struts[BOTTOM_START_X], c2->struts[BOTTOM_END_X])) { - if (frame_y > gdk_screen_get_height (c->md->gscr) - c2->struts[BOTTOM] - CLIENT_MIN_VISIBLE) + if (frame_y > gdk_screen_get_height (screen_info->gscr) - c2->struts[BOTTOM] - CLIENT_MIN_VISIBLE) { - c->y = gdk_screen_get_height (c->md->gscr) - c2->struts[BOTTOM] - CLIENT_MIN_VISIBLE + frame_top; + c->y = gdk_screen_get_height (screen_info->gscr) - c2->struts[BOTTOM] - CLIENT_MIN_VISIBLE + frame_top; frame_y = frameY (c); } } @@ -401,10 +405,10 @@ clientKeepVisible (Client * c) /* Translate coodinates to center on physical screen */ - diff_x = abs (c->size->x - ((gdk_screen_get_width (c->md->gscr) - c->width) / 2)); - diff_y = abs (c->size->y - ((gdk_screen_get_height (c->md->gscr) - c->height) / 2)); + diff_x = abs (c->size->x - ((gdk_screen_get_width (c->screen_info->gscr) - c->width) / 2)); + diff_y = abs (c->size->y - ((gdk_screen_get_height (c->screen_info->gscr) - c->height) / 2)); - if (((gdk_screen_get_n_monitors (c->md->gscr) > 1) && (diff_x < 25) && (diff_y < 25)) || + if (((gdk_screen_get_n_monitors (c->screen_info->gscr) > 1) && (diff_x < 25) && (diff_y < 25)) || ((frameX (c) == 0) && (frameY (c) == 0) && (c->type & (WINDOW_TYPE_DIALOG)) && !clientIsTransient (c))) { GdkRectangle rect; @@ -414,10 +418,10 @@ clientKeepVisible (Client * c) * Thus, will move it so its center on the current * physical screen */ - getMouseXY (c->md, c->md->xroot, &cx, &cy); + getMouseXY (c->screen_info, c->screen_info->xroot, &cx, &cy); - monitor_nbr = gdk_screen_get_monitor_at_point (c->md->gscr, cx, cy); - gdk_screen_get_monitor_geometry (c->md->gscr, monitor_nbr, &rect); + monitor_nbr = gdk_screen_get_monitor_at_point (c->screen_info->gscr, cx, cy); + gdk_screen_get_monitor_geometry (c->screen_info->gscr, monitor_nbr, &rect); c->x = rect.x + (rect.width - c->width) / 2; c->y = rect.y + (rect.height - c->height) / 2; @@ -429,6 +433,7 @@ void clientInitPosition (Client * c) { Client *c2; + ScreenInfo *screen_info; int test_x = 0, test_y = 0; int xmax, ymax, best_x, best_y, i, msx, msy; int frame_x, frame_y, frame_height, frame_width, frame_left, frame_top; @@ -443,6 +448,7 @@ clientInitPosition (Client * c) clientGravitate (c, APPLY); + screen_info = c->screen_info; if ((c->size->flags & (PPosition | USPosition)) || (c->type & (WINDOW_TYPE_DONT_PLACE)) || ((c->type & (WINDOW_TYPE_DIALOG)) && !clientIsTransient (c))) @@ -466,10 +472,10 @@ clientInitPosition (Client * c) return; } - getMouseXY (c->md, c->md->xroot, &msx, &msy); + getMouseXY (screen_info, screen_info->xroot, &msx, &msy); - monitor_nbr = gdk_screen_get_monitor_at_point (c->md->gscr, msx, msy); - gdk_screen_get_monitor_geometry (c->md->gscr, monitor_nbr, &rect); + monitor_nbr = gdk_screen_get_monitor_at_point (screen_info->gscr, msx, msy); + gdk_screen_get_monitor_geometry (screen_info->gscr, monitor_nbr, &rect); frame_x = frameX (c); frame_y = frameY (c); @@ -478,15 +484,15 @@ clientInitPosition (Client * c) frame_left = frameLeft(c); frame_top = frameTop (c); - full_x = MAX (params.xfwm_margins[LEFT], rect.x); - full_y = MAX (params.xfwm_margins[TOP], rect.y); - full_w = MIN (gdk_screen_get_width (c->md->gscr) - params.xfwm_margins[RIGHT], + full_x = MAX (screen_info->params->xfwm_margins[LEFT], rect.x); + full_y = MAX (screen_info->params->xfwm_margins[TOP], rect.y); + full_w = MIN (gdk_screen_get_width (screen_info->gscr) - screen_info->params->xfwm_margins[RIGHT], rect.x + rect.width) - full_x; - full_h = MIN (gdk_screen_get_height (c->md->gscr) - params.xfwm_margins[BOTTOM], + full_h = MIN (gdk_screen_get_height (screen_info->gscr) - screen_info->params->xfwm_margins[BOTTOM], rect.y + rect.height) - full_y; /* Adjust size to the widest size available, not covering struts */ - clientMaxSpace (&full_x, &full_y, &full_w, &full_h); + clientMaxSpace (screen_info, &full_x, &full_y, &full_w, &full_h); xmax = full_x + full_w - c->width - frameRight (c); ymax = full_y + full_h - c->height - frameBottom (c); @@ -500,8 +506,8 @@ clientInitPosition (Client * c) test_x <= xmax; test_x += 8) { unsigned long count_overlaps = 0; - TRACE ("analyzing %i clients", client_count); - for (c2 = clients, i = 0; i < client_count; c2 = c2->next, i++) + TRACE ("analyzing %i clients", screen_info->client_count); + for (c2 = screen_info->clients, i = 0; i < screen_info->client_count; c2 = c2->next, i++) { if ((c2 != c) && (c2->type != WINDOW_DESKTOP) && (c->win_workspace == c2->win_workspace) diff --git a/src/placement.h b/src/placement.h index bfb78310a..99553b725 100644 --- a/src/placement.h +++ b/src/placement.h @@ -28,7 +28,7 @@ #include <glib.h> #include "client.h" -void clientMaxSpace (int *, int *, int *, int *h); +void clientMaxSpace (ScreenInfo *, int *, int *, int *, int *h); gboolean clientCkeckTitle (Client *); void clientConstrainPos (Client *, gboolean); void clientKeepVisible (Client *); diff --git a/src/poswin.c b/src/poswin.c index 17b6caf4c..2b08486f8 100644 --- a/src/poswin.c +++ b/src/poswin.c @@ -49,7 +49,6 @@ poswinCreate (GdkScreen *gscr) gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); gtk_container_set_border_width (GTK_CONTAINER (frame), 0); gtk_container_add (GTK_CONTAINER (poswin->window), frame); - gtk_widget_show (frame); poswin->label = gtk_label_new (""); gtk_misc_set_alignment (GTK_MISC (poswin->label), 0.5, 0.5); diff --git a/src/screen.h b/src/screen.h index 6a390e5a3..4303d25c3 100644 --- a/src/screen.h +++ b/src/screen.h @@ -18,58 +18,107 @@ */ -#ifndef INC_MAIN_H -#define INC_MAIN_H - #ifdef HAVE_CONFIG_H # include "config.h" #endif #include <X11/Xlib.h> #include <X11/cursorfont.h> -#include <X11/extensions/shape.h> #include <gtk/gtk.h> #include <glib.h> #include <libxfcegui4/libxfcegui4.h> +#include <libxfce4mcs/mcs-client.h> #ifdef HAVE_LIBSTARTUP_NOTIFICATION #define SN_API_NOT_YET_FROZEN #include <libsn/sn.h> #endif +#ifndef INC_SCREEN_H +#define INC_SCREEN_H + +#include "display.h" +#include "settings.h" #include "mywindow.h" +#include "mypixmap.h" +#include "client.h" +#include "hints.h" -typedef struct ScreenData +struct _ScreenInfo { #ifdef HAVE_LIBSTARTUP_NOTIFICATION + /* Startup notification data, per screen */ SnMonitorContext *sn_context; GSList *startup_sequences; guint startup_sequence_timeout; #endif + + /* The display this screen belongs to */ + DisplayInfo *display_info; + + /* There can be one systray per screen */ + Atom net_system_tray_selection; + + /* Window stacking, per screen */ + GList *windows_stack; + Client *last_raise; + GList *windows; + Client *clients; + unsigned int client_count; + unsigned long client_serial; + + /* Theme pixmaps and other params, per screen */ + XfwmColor title_colors[2]; + XfwmPixmap buttons[BUTTON_COUNT][6]; + XfwmPixmap corners[4][2]; + XfwmPixmap sides[3][2]; + XfwmPixmap title[5][2]; + + /* Per screen graphic contexts */ + GC box_gc; + GdkGC *black_gc; + GdkGC *white_gc; + + /* Screen data */ Colormap cmap; - Cursor busy_cursor; - Cursor move_cursor; - Cursor resize_cursor[7]; - Cursor root_cursor; - Display *dpy; - GdkDisplay *gdisplay; GdkScreen *gscr; - XfceFilterSetup *xfilter; Screen *xscreen; + int depth; + + GtkWidget *gtk_win; + xfwmWindow sidewalk[2]; Window gnome_win; Window xroot; - myWindow sidewalk[2]; Window systray; - int depth; + int gnome_margins[4]; int margins[4]; - int quit; - int reload; int screen; - int shape; - int shape_event; int current_ws; -} -ScreenData; + + /* Workspace definitions */ + int workspace_count; + gchar *workspace_names; + int workspace_names_length; + + /* Button handler for GTK */ + gulong button_handler_id; + + /* MCS stuff */ + McsClient *mcs_client; + gboolean mcs_initted; + + /* Per screen parameters */ + XfwmParams *params; +}; + +ScreenInfo * myScreenInit (DisplayInfo *, + GdkScreen *, + unsigned long); +ScreenInfo * myScreenClose (ScreenInfo *); +Display * myScreenGetXDisplay (ScreenInfo *); +GtkWidget * myScreenGetGtkWidget (ScreenInfo *); +GtkWidget * myScreenGetGtkWidget (ScreenInfo *); +GdkWindow * myScreenGetGdkWindow (ScreenInfo *); #endif /* INC_SCREEN_H */ diff --git a/src/session.c b/src/session.c index c9743b3ed..4fdff9fc8 100644 --- a/src/session.c +++ b/src/session.c @@ -60,6 +60,7 @@ typedef struct _match int old_width; int old_height; int desktop; + int screen; unsigned long flags; gboolean used; } @@ -252,10 +253,9 @@ getsubstring (gchar * s, gint * length) return ns; } -gboolean -sessionSaveWindowStates (gchar * filename) +static void +sessionSaveScreen (ScreenInfo *screen_info, FILE *f) { - FILE *f; Client *c; gint client_idx; char *client_id = NULL; @@ -263,87 +263,102 @@ sessionSaveWindowStates (gchar * filename) int wm_command_count = 0; char **wm_command = NULL; - g_return_val_if_fail (filename != NULL, FALSE); - - if ((f = fopen (filename, "w"))) + for (c = screen_info->clients, client_idx = 0; client_idx < screen_info->client_count; + c = c->next, client_idx++) { - for (c = clients, client_idx = 0; client_idx < client_count; - c = c->next, client_idx++) + if (c->client_leader != None) { - if (c->client_leader != None) - { - getWindowRole (c->md->dpy, c->client_leader, &window_role); - } - else - { - window_role = NULL; - } + getWindowRole (clientGetXDisplay (c), c->client_leader, &window_role); + } + else + { + window_role = NULL; + } - fprintf (f, "[CLIENT] 0x%lx\n", c->window); + fprintf (f, "[CLIENT] 0x%lx\n", c->window); - getClientID (c->md->dpy, c->window, &client_id); - if (client_id) - { - fprintf (f, " [CLIENT_ID] %s\n", client_id); - XFree (client_id); - client_id = NULL; - } + getClientID (clientGetXDisplay (c), c->window, &client_id); + if (client_id) + { + fprintf (f, " [CLIENT_ID] %s\n", client_id); + XFree (client_id); + client_id = NULL; + } - if (c->client_leader) - { - fprintf (f, " [CLIENT_LEADER] 0x%lx\n", c->client_leader); - } + if (c->client_leader) + { + fprintf (f, " [CLIENT_LEADER] 0x%lx\n", c->client_leader); + } - if (window_role) - { - fprintf (f, " [WINDOW_ROLE] %s\n", window_role); - XFree (window_role); - window_role = NULL; - } + if (window_role) + { + fprintf (f, " [WINDOW_ROLE] %s\n", window_role); + XFree (window_role); + window_role = NULL; + } - if (c->class.res_class) - { - fprintf (f, " [RES_NAME] %s\n", c->class.res_name); - } + if (c->class.res_class) + { + fprintf (f, " [RES_NAME] %s\n", c->class.res_name); + } - if (c->class.res_name) - { - fprintf (f, " [RES_CLASS] %s\n", c->class.res_class); - } + if (c->class.res_name) + { + fprintf (f, " [RES_CLASS] %s\n", c->class.res_class); + } - if (c->name) - { - fprintf (f, " [WM_NAME] %s\n", c->name); - } + if (c->name) + { + fprintf (f, " [WM_NAME] %s\n", c->name); + } - wm_command_count = 0; - getWindowCommand (c->md->dpy, c->window, &wm_command, &wm_command_count); - if ((wm_command_count > 0) && (wm_command)) + wm_command_count = 0; + getWindowCommand (clientGetXDisplay (c), c->window, &wm_command, &wm_command_count); + if ((wm_command_count > 0) && (wm_command)) + { + gint j; + fprintf (f, " [WM_COMMAND] (%i)", wm_command_count); + for (j = 0; j < wm_command_count; j++) { - gint j; - fprintf (f, " [WM_COMMAND] (%i)", wm_command_count); - for (j = 0; j < wm_command_count; j++) - { - gchar *escaped_string; - escaped_string = escape_quote (wm_command[j]); - fprintf (f, " \"%s\"", escaped_string); - g_free (escaped_string); - } - fprintf (f, "\n"); - XFreeStringList (wm_command); - wm_command = NULL; - wm_command_count = 0; + gchar *escaped_string; + escaped_string = escape_quote (wm_command[j]); + fprintf (f, " \"%s\"", escaped_string); + g_free (escaped_string); } + fprintf (f, "\n"); + XFreeStringList (wm_command); + wm_command = NULL; + wm_command_count = 0; + } - fprintf (f, " [GEOMETRY] (%i,%i,%i,%i)\n", c->x, c->y, c->width, - c->height); - fprintf (f, " [GEOMETRY-MAXIMIZED] (%i,%i,%i,%i)\n", c->old_x, - c->old_y, c->old_width, c->old_height); - fprintf (f, " [DESK] %i\n", c->win_workspace); - fprintf (f, " [FLAGS] 0x%lx\n", FLAG_TEST (c->flags, - CLIENT_FLAG_STICKY | CLIENT_FLAG_HIDDEN | - CLIENT_FLAG_SHADED | CLIENT_FLAG_MAXIMIZED | - CLIENT_FLAG_NAME_CHANGED)); + fprintf (f, " [GEOMETRY] (%i,%i,%i,%i)\n", c->x, c->y, c->width, + c->height); + fprintf (f, " [GEOMETRY-MAXIMIZED] (%i,%i,%i,%i)\n", c->old_x, + c->old_y, c->old_width, c->old_height); + fprintf (f, " [SCREEN] %i\n", screen_info->screen); + fprintf (f, " [DESK] %i\n", c->win_workspace); + fprintf (f, " [FLAGS] 0x%lx\n", FLAG_TEST (c->flags, + CLIENT_FLAG_STICKY | CLIENT_FLAG_HIDDEN | + CLIENT_FLAG_SHADED | CLIENT_FLAG_MAXIMIZED | + CLIENT_FLAG_NAME_CHANGED)); + } +} + +gboolean +sessionSaveWindowStates (DisplayInfo *display_info, gchar * filename) +{ + FILE *f; + GSList *screens; + + g_return_val_if_fail (filename != NULL, FALSE); + g_return_val_if_fail (display_info != NULL, FALSE); + + if ((f = fopen (filename, "w"))) + { + for (screens = display_info->screens; screens; screens = g_slist_next (screens)) + { + ScreenInfo *screen_info_n = (ScreenInfo *) screens->data; + sessionSaveScreen (screen_info_n, f); } fclose (f); return TRUE; @@ -389,6 +404,7 @@ sessionLoadWindowStates (gchar * filename) matches[num_match - 1].old_height = matches[num_match - 1].height; matches[num_match - 1].desktop = 0; + matches[num_match - 1].screen = 0; matches[num_match - 1].used = FALSE; matches[num_match - 1].flags = 0; } @@ -405,6 +421,10 @@ sessionLoadWindowStates (gchar * filename) &matches[num_match - 1].old_width, &matches[num_match - 1].old_height); } + else if (!strcmp (s1, "[SCREEN]")) + { + sscanf (s, "%*s %i", &matches[num_match - 1].screen); + } else if (!strcmp (s1, "[DESK]")) { sscanf (s, "%*s %i", &matches[num_match - 1].desktop); @@ -534,13 +554,13 @@ matchWin (Client * c, Match * m) g_return_val_if_fail (c != NULL, FALSE); found = FALSE; - getClientID (c->md->dpy, c->window, &client_id); + getClientID (clientGetXDisplay (c), c->window, &client_id); if (xstreq (client_id, m->client_id)) { /* client_id's match */ if (c->client_leader != None) { - getWindowRole (c->md->dpy, c->client_leader, &window_role); + getWindowRole (clientGetXDisplay (c), c->client_leader, &window_role); } else { @@ -566,13 +586,12 @@ matchWin (Client * c, Match * m) /* If we have a client_id, we don't compare WM_COMMAND, since it will be different. */ found = TRUE; - } else { /* for non-SM-aware clients we also compare WM_COMMAND */ wm_command_count = 0; - getWindowCommand (c->md->dpy, c->window, &wm_command, + getWindowCommand (clientGetXDisplay (c), c->window, &wm_command, &wm_command_count); if (wm_command_count == m->wm_command_count) { @@ -640,7 +659,7 @@ sessionMatchWinToSM (Client * c) g_return_val_if_fail (c != NULL, FALSE); for (i = 0; i < num_match; i++) { - if (!matches[i].used && matchWin (c, &matches[i])) + if (!matches[i].used && (c->screen_info->screen != matches[i].screen) && matchWin (c, &matches[i])) { matches[i].used = TRUE; c->x = matches[i].x; diff --git a/src/session.h b/src/session.h index 0fc56b32a..31725974c 100644 --- a/src/session.h +++ b/src/session.h @@ -22,11 +22,13 @@ #include <glib.h> #include "client.h" +#include "display.h" +#include "screen.h" /* ** Save window states to file which name is given in argument. */ -gboolean sessionSaveWindowStates (gchar *); +gboolean sessionSaveWindowStates (DisplayInfo *, gchar *); /* ** Load window states to file which name is given in argument. diff --git a/src/settings.c b/src/settings.c index 2e132d749..312521cc9 100644 --- a/src/settings.c +++ b/src/settings.c @@ -47,13 +47,38 @@ #define WS_SEP ';' #define WS_SEP_S ";" -Params params; +/* Forward static decls. */ + +static void notify_cb (const char *, + const char *, + McsAction, + McsSetting *, + void *); +static GdkFilterReturn client_event_filter (GdkXEvent *, + GdkEvent *, + gpointer); +static void watch_cb (Window, + Bool, + long, + void *); +static void loadRcData (ScreenInfo *, + Settings rc[]); +static void loadMcsData (ScreenInfo *, + Settings rc[]); +static void loadTheme (ScreenInfo *, + Settings rc[]); +static void loadShortcutCmd (ScreenInfo *, + Settings rc[]); +static gboolean loadKeyBindings (ScreenInfo *, + Settings rc[]); +static void unloadTheme (ScreenInfo *); +static void unloadSettings (ScreenInfo *); +static gboolean reloadScreenSettings (ScreenInfo *, + int); -static McsClient *client = NULL; -static int mcs_initted = FALSE; static void -set_settings_margin (ScreenData *md, int idx, int value) +set_settings_margin (ScreenInfo *screen_info, int idx, int value) { int val; @@ -65,15 +90,15 @@ set_settings_margin (ScreenData *md, int idx, int value) { val = 0; } - else if (value > gdk_screen_get_width (md->gscr) / 4) + else if (value > gdk_screen_get_width (screen_info->gscr) / 4) { - val = gdk_screen_get_width (md->gscr) / 4; + val = gdk_screen_get_width (screen_info->gscr) / 4; } else { val = value; } - params.xfwm_margins[idx] = val; + screen_info->params->xfwm_margins[idx] = val; break; case TOP: case BOTTOM: @@ -81,15 +106,15 @@ set_settings_margin (ScreenData *md, int idx, int value) { val = 0; } - else if (value > gdk_screen_get_height (md->gscr) / 4) + else if (value > gdk_screen_get_height (screen_info->gscr) / 4) { - val = gdk_screen_get_height (md->gscr) / 4; + val = gdk_screen_get_height (screen_info->gscr) / 4; } else { val = value; } - params.xfwm_margins[idx] = val; + screen_info->params->xfwm_margins[idx] = val; break; default: break; @@ -97,20 +122,19 @@ set_settings_margin (ScreenData *md, int idx, int value) } static void -notify_cb (const char *name, const char *channel_name, McsAction action, - McsSetting * setting, void *data) +notify_cb (const char *name, const char *channel_name, McsAction action, McsSetting * setting, void *data) { - ScreenData *md = (ScreenData *) data; + ScreenInfo *screen_info = (ScreenInfo *) data; + + g_return_if_fail (screen_info != NULL); - g_return_if_fail (md != NULL); - if (!g_ascii_strcasecmp (CHANNEL1, channel_name)) { switch (action) { case MCS_ACTION_NEW: /* The following is to reduce initial startup time and reload */ - if (!mcs_initted) + if (!screen_info->mcs_initted) { return; } @@ -119,84 +143,84 @@ notify_cb (const char *name, const char *channel_name, McsAction action, { if (!strcmp (name, "Xfwm/ClickToFocus")) { - params.click_to_focus = setting->data.v_int; + screen_info->params->click_to_focus = setting->data.v_int; } else if (!strcmp (name, "Xfwm/FocusNewWindow")) { - params.focus_new = setting->data.v_int; + screen_info->params->focus_new = setting->data.v_int; } else if (!strcmp (name, "Xfwm/FocusRaise")) { - params.raise_on_focus = setting->data.v_int; + screen_info->params->raise_on_focus = setting->data.v_int; } else if (!strcmp (name, "Xfwm/RaiseDelay")) { - params.raise_delay = setting->data.v_int; + screen_info->params->raise_delay = setting->data.v_int; } else if (!strcmp (name, "Xfwm/RaiseOnClick")) { - params.raise_on_click = setting->data.v_int; + screen_info->params->raise_on_click = setting->data.v_int; clientPassGrabButton1 (NULL); } else if (!strcmp (name, "Xfwm/SnapToBorder")) { - params.snap_to_border = setting->data.v_int; + screen_info->params->snap_to_border = setting->data.v_int; } else if (!strcmp (name, "Xfwm/SnapToWindows")) { - params.snap_to_windows = setting->data.v_int; + screen_info->params->snap_to_windows = setting->data.v_int; } else if (!strcmp (name, "Xfwm/SnapWidth")) { - params.snap_width = setting->data.v_int; + screen_info->params->snap_width = setting->data.v_int; } else if (!strcmp (name, "Xfwm/WrapWorkspaces")) { - params.wrap_workspaces = setting->data.v_int; - placeSidewalks (md, params.wrap_workspaces); + screen_info->params->wrap_workspaces = setting->data.v_int; + placeSidewalks (screen_info, screen_info->params->wrap_workspaces); } else if (!strcmp (name, "Xfwm/WrapWindows")) { - params.wrap_windows = setting->data.v_int; + screen_info->params->wrap_windows = setting->data.v_int; } else if (!strcmp (name, "Xfwm/WrapResistance")) { - params.wrap_resistance = setting->data.v_int; + screen_info->params->wrap_resistance = setting->data.v_int; } else if (!strcmp (name, "Xfwm/BoxMove")) { - params.box_move = setting->data.v_int; + screen_info->params->box_move = setting->data.v_int; } else if (!strcmp (name, "Xfwm/BoxResize")) { - params.box_resize = setting->data.v_int; + screen_info->params->box_resize = setting->data.v_int; } } else if (setting->type == MCS_TYPE_STRING) { if (!strcmp (name, "Xfwm/DblClickAction")) { - reloadSettings (md, NO_UPDATE_FLAG); + reloadScreenSettings (screen_info, NO_UPDATE_FLAG); } else if (!strcmp (name, "Xfwm/KeyThemeName")) { - reloadSettings (md, UPDATE_KEYGRABS); + reloadScreenSettings (screen_info, UPDATE_KEYGRABS); } else if (!strcmp (name, "Xfwm/ThemeName")) { - reloadSettings (md, UPDATE_GRAVITY | UPDATE_CACHE); + reloadScreenSettings (screen_info, UPDATE_GRAVITY | UPDATE_CACHE); } else if (!strcmp (name, "Xfwm/ButtonLayout")) { - reloadSettings (md, UPDATE_FRAME | UPDATE_CACHE); + reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE); } if (!strcmp (name, "Xfwm/TitleAlign")) { - reloadSettings (md, UPDATE_FRAME | UPDATE_CACHE); + reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE); } if (!strcmp (name, "Xfwm/TitleFont")) { - reloadSettings (md, UPDATE_FRAME | UPDATE_CACHE); + reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE); } } break; @@ -211,7 +235,7 @@ notify_cb (const char *name, const char *channel_name, McsAction action, { case MCS_ACTION_NEW: /* The following is to reduce initial startup time and reloads */ - if (!mcs_initted) + if (!screen_info->mcs_initted) { return; } @@ -220,19 +244,19 @@ notify_cb (const char *name, const char *channel_name, McsAction action, { if (!strcmp (name, "Xfwm/LeftMargin")) { - set_settings_margin (md, LEFT, setting->data.v_int); + set_settings_margin (screen_info, LEFT, setting->data.v_int); } else if (!strcmp (name, "Xfwm/RightMargin")) { - set_settings_margin (md, RIGHT, setting->data.v_int); + set_settings_margin (screen_info, RIGHT, setting->data.v_int); } else if (!strcmp (name, "Xfwm/BottomMargin")) { - set_settings_margin (md, BOTTOM, setting->data.v_int); + set_settings_margin (screen_info, BOTTOM, setting->data.v_int); } else if (!strcmp (name, "Xfwm/TopMargin")) { - set_settings_margin (md, TOP, setting->data.v_int); + set_settings_margin (screen_info, TOP, setting->data.v_int); } } break; @@ -247,7 +271,7 @@ notify_cb (const char *name, const char *channel_name, McsAction action, { case MCS_ACTION_NEW: /* The following is to reduce initial startup time and reloads */ - if (!mcs_initted) + if (!screen_info->mcs_initted) { return; } @@ -256,7 +280,7 @@ notify_cb (const char *name, const char *channel_name, McsAction action, { if (!strcmp (name, "Xfwm/WorkspaceCount")) { - workspaceSetCount(md, setting->data.v_int); + workspaceSetCount(screen_info, setting->data.v_int); } } break; @@ -270,7 +294,9 @@ notify_cb (const char *name, const char *channel_name, McsAction action, static GdkFilterReturn client_event_filter (GdkXEvent * xevent, GdkEvent * event, gpointer data) { - if (mcs_client_process_event (client, (XEvent *) xevent)) + ScreenInfo *screen_info = (ScreenInfo *) data; + + if (mcs_client_process_event (screen_info->mcs_client, (XEvent *) xevent)) return GDK_FILTER_REMOVE; else return GDK_FILTER_CONTINUE; @@ -304,7 +330,7 @@ watch_cb (Window window, Bool is_start, long mask, void *cb_data) } static void -loadRcData (ScreenData *md, Settings rc[]) +loadRcData (ScreenInfo *screen_info, Settings rc[]) { const gchar *homedir = xfce_get_userdir (); gchar *keytheme; @@ -326,151 +352,151 @@ loadRcData (ScreenData *md, Settings rc[]) } static void -loadMcsData (ScreenData *md, Settings rc[]) +loadMcsData (ScreenInfo *screen_info, Settings rc[]) { McsSetting *setting; - if (client) + if (screen_info->mcs_client) { - if (mcs_client_get_setting (client, "Xfwm/ClickToFocus", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ClickToFocus", CHANNEL1, &setting) == MCS_SUCCESS) { setBooleanValueFromInt ("click_to_focus", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/FocusNewWindow", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusNewWindow", CHANNEL1, &setting) == MCS_SUCCESS) { setBooleanValueFromInt ("focus_new", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/FocusRaise", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusRaise", CHANNEL1, &setting) == MCS_SUCCESS) { setBooleanValueFromInt ("raise_on_focus", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/RaiseDelay", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RaiseDelay", CHANNEL1, &setting) == MCS_SUCCESS) { setIntValueFromInt ("raise_delay", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/RaiseOnClick", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RaiseOnClick", CHANNEL1, &setting) == MCS_SUCCESS) { setBooleanValueFromInt ("raise_on_click", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/SnapToBorder", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapToBorder", CHANNEL1, &setting) == MCS_SUCCESS) { setBooleanValueFromInt ("snap_to_border", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/SnapToWindows", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapToWindows", CHANNEL1, &setting) == MCS_SUCCESS) { setBooleanValueFromInt ("snap_to_windows", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/SnapWidth", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapWidth", CHANNEL1, &setting) == MCS_SUCCESS) { setIntValueFromInt ("snap_width", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/WrapWorkspaces", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WrapWorkspaces", CHANNEL1, &setting) == MCS_SUCCESS) { setBooleanValueFromInt ("wrap_workspaces", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/WrapWindows", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WrapWindows", CHANNEL1, &setting) == MCS_SUCCESS) { setBooleanValueFromInt ("wrap_windows", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/WrapResistance", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WrapResistance", CHANNEL1, &setting) == MCS_SUCCESS) { setIntValueFromInt ("wrap_resistance", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/BoxMove", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/BoxMove", CHANNEL1, &setting) == MCS_SUCCESS) { setBooleanValueFromInt ("box_move", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/BoxResize", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/BoxResize", CHANNEL1, &setting) == MCS_SUCCESS) { setBooleanValueFromInt ("box_resize", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/DblClickAction", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/DblClickAction", CHANNEL1, &setting) == MCS_SUCCESS) { setValue ("double_click_action", setting->data.v_string, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/ThemeName", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ThemeName", CHANNEL1, &setting) == MCS_SUCCESS) { setValue ("theme", setting->data.v_string, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/KeyThemeName", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/KeyThemeName", CHANNEL1, &setting) == MCS_SUCCESS) { setValue ("keytheme", setting->data.v_string, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/ButtonLayout", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ButtonLayout", CHANNEL1, &setting) == MCS_SUCCESS) { setValue ("button_layout", setting->data.v_string, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/TitleAlign", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/TitleAlign", CHANNEL1, &setting) == MCS_SUCCESS) { setValue ("title_alignment", setting->data.v_string, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/TitleFont", CHANNEL1, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/TitleFont", CHANNEL1, &setting) == MCS_SUCCESS) { setValue ("title_font", setting->data.v_string, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/LeftMargin", CHANNEL2, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/LeftMargin", CHANNEL2, &setting) == MCS_SUCCESS) { setIntValueFromInt ("margin_left", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/RightMargin", CHANNEL2, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RightMargin", CHANNEL2, &setting) == MCS_SUCCESS) { setIntValueFromInt ("margin_right", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/BottomMargin", CHANNEL2, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/BottomMargin", CHANNEL2, &setting) == MCS_SUCCESS) { setIntValueFromInt ("margin_bottom", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/TopMargin", CHANNEL2, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/TopMargin", CHANNEL2, &setting) == MCS_SUCCESS) { setIntValueFromInt ("margin_top", setting->data.v_int, rc); mcs_setting_free (setting); } - if (mcs_client_get_setting (client, "Xfwm/WorkspaceCount", CHANNEL3, + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WorkspaceCount", CHANNEL3, &setting) == MCS_SUCCESS) { setIntValueFromInt ("workspace_count", setting->data.v_int, rc); @@ -480,14 +506,17 @@ loadMcsData (ScreenData *md, Settings rc[]) } static void -loadTheme (ScreenData *md, Settings rc[]) +loadTheme (ScreenInfo *screen_info, Settings rc[]) { + GtkWidget *widget = myScreenGetGtkWidget (screen_info); + DisplayInfo *display_info = screen_info->display_info; + GSList *screens; gchar *theme; gchar *font; XpmColorSymbol colsym[20]; - GtkWidget *widget = xfce_get_default_gtk_widget (md->xfilter); - PangoFontDescription *desc; + PangoFontDescription *desc = NULL; guint i; + GValue tmp_val = { 0, }; rc[0].value = get_style (widget, "fg", "selected"); rc[1].value = get_style (widget, "fg", "normal"); @@ -519,245 +548,249 @@ loadTheme (ScreenData *md, Settings rc[]) colsym[i].value = rc[i].value; } - if (params.title_colors[ACTIVE].allocated) + g_value_init (&tmp_val, G_TYPE_INT); + display_info->dbl_click_time = abs (TOINT (getValue ("dbl_click_time", rc))); + if (gdk_setting_get ("gtk-double-click-time", &tmp_val)) { - gdk_colormap_free_colors (gdk_screen_get_rgb_colormap (md->gscr), - ¶ms.title_colors[ACTIVE].col, 1); - params.title_colors[ACTIVE].allocated = FALSE; + display_info->dbl_click_time = abs (g_value_get_int (&tmp_val)); } - if (gdk_color_parse (rc[0].value, ¶ms.title_colors[ACTIVE].col)) + + font = getValue ("title_font", rc); + if (font && strlen (font)) { - if (gdk_colormap_alloc_color (gdk_screen_get_rgb_colormap (md->gscr), - ¶ms.title_colors[ACTIVE].col, FALSE, FALSE)) + desc = pango_font_description_from_string (font); + if (desc) { - params.title_colors[ACTIVE].allocated = TRUE; - if (params.title_colors[ACTIVE].gc) + gtk_widget_modify_font (widget, desc); + g_free (desc); + } + + } + + if (screen_info->title_colors[ACTIVE].allocated) + { + gdk_colormap_free_colors (gdk_screen_get_rgb_colormap (screen_info->gscr), + &screen_info->title_colors[ACTIVE].col, 1); + screen_info->title_colors[ACTIVE].allocated = FALSE; + } + if (gdk_color_parse (rc[0].value, &screen_info->title_colors[ACTIVE].col)) + { + if (gdk_colormap_alloc_color (gdk_screen_get_rgb_colormap (screen_info->gscr), + &screen_info->title_colors[ACTIVE].col, FALSE, FALSE)) + { + screen_info->title_colors[ACTIVE].allocated = TRUE; + if (screen_info->title_colors[ACTIVE].gc) { - g_object_unref (G_OBJECT (params.title_colors[ACTIVE].gc)); + g_object_unref (G_OBJECT (screen_info->title_colors[ACTIVE].gc)); } - params.title_colors[ACTIVE].gc = - gdk_gc_new (xfce_get_default_gdk_window (md->xfilter)); - gdk_gc_copy (params.title_colors[ACTIVE].gc, get_style_gc (widget, + screen_info->title_colors[ACTIVE].gc = + gdk_gc_new (myScreenGetGdkWindow (screen_info)); + gdk_gc_copy (screen_info->title_colors[ACTIVE].gc, get_style_gc (widget, "text", "selected")); - gdk_gc_set_foreground (params.title_colors[ACTIVE].gc, - ¶ms.title_colors[ACTIVE].col); + gdk_gc_set_foreground (screen_info->title_colors[ACTIVE].gc, + &screen_info->title_colors[ACTIVE].col); } else { gdk_beep (); - g_message (_("%s: Cannot allocate active color %s\n"), - g_get_prgname (), rc[0].value); + g_message (_("%s: Cannot allocate active color %s\n"), g_get_prgname (), rc[0].value); } } else { gdk_beep (); - g_message (_("%s: Cannot parse active color %s\n"), g_get_prgname (), - rc[0].value); + g_message (_("%s: Cannot parse active color %s\n"), g_get_prgname (), rc[0].value); } - if (params.black_gc) + if (screen_info->black_gc) { - g_object_unref (G_OBJECT (params.black_gc)); + g_object_unref (G_OBJECT (screen_info->black_gc)); } - params.black_gc = widget->style->black_gc; + screen_info->black_gc = widget->style->black_gc; g_object_ref (G_OBJECT (widget->style->black_gc)); - if (params.white_gc) + if (screen_info->white_gc) { - g_object_unref (G_OBJECT (params.white_gc)); + g_object_unref (G_OBJECT (screen_info->white_gc)); } - params.white_gc = widget->style->white_gc; + screen_info->white_gc = widget->style->white_gc; g_object_ref (G_OBJECT (widget->style->white_gc)); - if (params.title_colors[INACTIVE].allocated) + if (screen_info->title_colors[INACTIVE].allocated) { - gdk_colormap_free_colors (gdk_screen_get_rgb_colormap (md->gscr), - ¶ms.title_colors[INACTIVE].col, 1); - params.title_colors[INACTIVE].allocated = FALSE; + gdk_colormap_free_colors (gdk_screen_get_rgb_colormap (screen_info->gscr), + &screen_info->title_colors[INACTIVE].col, 1); + screen_info->title_colors[INACTIVE].allocated = FALSE; } - if (gdk_color_parse (rc[1].value, ¶ms.title_colors[INACTIVE].col)) + if (gdk_color_parse (rc[1].value, &screen_info->title_colors[INACTIVE].col)) { - if (gdk_colormap_alloc_color (gdk_screen_get_rgb_colormap (md->gscr), - ¶ms.title_colors[INACTIVE].col, FALSE, FALSE)) + if (gdk_colormap_alloc_color (gdk_screen_get_rgb_colormap (screen_info->gscr), + &screen_info->title_colors[INACTIVE].col, FALSE, FALSE)) { - params.title_colors[INACTIVE].allocated = TRUE; - if (params.title_colors[INACTIVE].gc) + screen_info->title_colors[INACTIVE].allocated = TRUE; + if (screen_info->title_colors[INACTIVE].gc) { - g_object_unref (G_OBJECT (params.title_colors[INACTIVE].gc)); + g_object_unref (G_OBJECT (screen_info->title_colors[INACTIVE].gc)); } - params.title_colors[INACTIVE].gc = - gdk_gc_new (xfce_get_default_gdk_window (md->xfilter)); - gdk_gc_copy (params.title_colors[INACTIVE].gc, + screen_info->title_colors[INACTIVE].gc = + gdk_gc_new (myScreenGetGdkWindow (screen_info)); + gdk_gc_copy (screen_info->title_colors[INACTIVE].gc, get_style_gc (widget, "text", "normal")); - gdk_gc_set_foreground (params.title_colors[INACTIVE].gc, - ¶ms.title_colors[INACTIVE].col); + gdk_gc_set_foreground (screen_info->title_colors[INACTIVE].gc, + &screen_info->title_colors[INACTIVE].col); } else { gdk_beep (); - g_message (_("%s: Cannot allocate inactive color %s\n"), - g_get_prgname (), rc[1].value); + g_message (_("%s: Cannot allocate inactive color %s\n"), g_get_prgname (), rc[1].value); } } else { gdk_beep (); - g_message (_("%s: Cannot parse inactive color %s\n"), - g_get_prgname (), rc[1].value); - } - - font = getValue ("title_font", rc); - if (font && strlen (font)) - { - desc = pango_font_description_from_string (font); - if (desc) - { - gtk_widget_modify_font (widget, desc); - g_free (desc); - } + g_message (_("%s: Cannot parse inactive color %s\n"), g_get_prgname (), rc[1].value); } - myPixmapLoad (md, ¶ms.sides[SIDE_LEFT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_LEFT][ACTIVE], theme, "left-active", colsym, 20); - myPixmapLoad (md, ¶ms.sides[SIDE_LEFT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_LEFT][INACTIVE], theme, "left-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.sides[SIDE_RIGHT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_RIGHT][ACTIVE], theme, "right-active", colsym, 20); - myPixmapLoad (md, ¶ms.sides[SIDE_RIGHT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_RIGHT][INACTIVE], theme, "right-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.sides[SIDE_BOTTOM][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_BOTTOM][ACTIVE], theme, "bottom-active", colsym, 20); - myPixmapLoad (md, ¶ms.sides[SIDE_BOTTOM][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_BOTTOM][INACTIVE], theme, "bottom-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_TOP_LEFT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_LEFT][ACTIVE], theme, "top-left-active", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_TOP_LEFT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_LEFT][INACTIVE], theme, "top-left-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_TOP_RIGHT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_RIGHT][ACTIVE], theme, "top-right-active", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_TOP_RIGHT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_RIGHT][INACTIVE], theme, "top-right-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_BOTTOM_LEFT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE], theme, "bottom-left-active", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_BOTTOM_LEFT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_LEFT][INACTIVE], theme, "bottom-left-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_BOTTOM_RIGHT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE], theme, "bottom-right-active", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_BOTTOM_RIGHT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_RIGHT][INACTIVE], theme, "bottom-right-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[HIDE_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][ACTIVE], theme, "hide-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[HIDE_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][INACTIVE], theme, "hide-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[HIDE_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][PRESSED], theme, "hide-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[CLOSE_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][ACTIVE], theme, "close-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[CLOSE_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][INACTIVE], theme, "close-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[CLOSE_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][PRESSED], theme, "close-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][ACTIVE], theme, "maximize-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][INACTIVE], theme, "maximize-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][PRESSED], theme, "maximize-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][ACTIVE], theme, "shade-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][INACTIVE], theme, "shade-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][PRESSED], theme, "shade-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][ACTIVE], theme, "stick-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][INACTIVE], theme, "stick-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][PRESSED], theme, "stick-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MENU_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][ACTIVE], theme, "menu-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MENU_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][INACTIVE], theme, "menu-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MENU_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][PRESSED], theme, "menu-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][T_ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_ACTIVE], theme, "shade-toggled-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][T_INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_INACTIVE], theme, "shade-toggled-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][T_PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_PRESSED], theme, "shade-toggled-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][T_ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_ACTIVE], theme, "stick-toggled-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][T_INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_INACTIVE], theme, "stick-toggled-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][T_PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_PRESSED], theme, "stick-toggled-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][T_ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_ACTIVE], theme, "maximize-toggled-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][T_INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_INACTIVE], theme, "maximize-toggled-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][T_PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_PRESSED], theme, "maximize-toggled-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_1][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_1][ACTIVE], theme, "title-1-active", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_1][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_1][INACTIVE], theme, "title-1-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_2][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_2][ACTIVE], theme, "title-2-active", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_2][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_2][INACTIVE], theme, "title-2-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_3][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_3][ACTIVE], theme, "title-3-active", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_3][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_3][INACTIVE], theme, "title-3-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_4][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_4][ACTIVE], theme, "title-4-active", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_4][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_4][INACTIVE], theme, "title-4-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_5][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_5][ACTIVE], theme, "title-5-active", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_5][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_5][INACTIVE], theme, "title-5-inactive", colsym, 20); + screen_info->box_gc = createGC (screen_info, "#FFFFFF", GXxor, NULL, 2, TRUE); + if (!g_ascii_strcasecmp ("left", getValue ("title_alignment", rc))) { - params.title_alignment = ALIGN_LEFT; + screen_info->params->title_alignment = ALIGN_LEFT; } else if (!g_ascii_strcasecmp ("right", getValue ("title_alignment", rc))) { - params.title_alignment = ALIGN_RIGHT; + screen_info->params->title_alignment = ALIGN_RIGHT; } else { - params.title_alignment = ALIGN_CENTER; + screen_info->params->title_alignment = ALIGN_CENTER; } - params.full_width_title = + screen_info->params->full_width_title = !g_ascii_strcasecmp ("true", getValue ("full_width_title", rc)); - params.title_shadow[ACTIVE] = + screen_info->params->title_shadow[ACTIVE] = !g_ascii_strcasecmp ("true", getValue ("title_shadow_active", rc)); - params.title_shadow[INACTIVE] = + screen_info->params->title_shadow[INACTIVE] = !g_ascii_strcasecmp ("true", getValue ("title_shadow_inactive", rc)); - strncpy (params.button_layout, getValue ("button_layout", rc), 7); - params.button_spacing = TOINT (getValue ("button_spacing", rc)); - params.button_offset = TOINT (getValue ("button_offset", rc)); - params.title_vertical_offset_active = + strncpy (screen_info->params->button_layout, getValue ("button_layout", rc), 7); + screen_info->params->button_spacing = TOINT (getValue ("button_spacing", rc)); + screen_info->params->button_offset = TOINT (getValue ("button_offset", rc)); + screen_info->params->title_vertical_offset_active = TOINT (getValue ("title_vertical_offset_active", rc)); - params.title_vertical_offset_inactive = + screen_info->params->title_vertical_offset_inactive = TOINT (getValue ("title_vertical_offset_inactive", rc)); - params.title_horizontal_offset = + screen_info->params->title_horizontal_offset = TOINT (getValue ("title_horizontal_offset", rc)); - params.box_gc = createGC (md, "#FFFFFF", GXxor, NULL, 2, TRUE); - g_free (theme); } static void -loadShortcutCmd (Settings rc[]) +loadShortcutCmd (ScreenInfo *screen_info, Settings rc[]) { int i; @@ -765,26 +798,28 @@ loadShortcutCmd (Settings rc[]) { gchar *tmp, *shortcut; tmp = g_strdup_printf ("shortcut_%i_exec", i + 1); - if (params.shortcut_exec[i]) + if (screen_info->params->shortcut_exec[i]) { - g_free (params.shortcut_exec[i]); - params.shortcut_exec[i] = NULL; + g_free (screen_info->params->shortcut_exec[i]); + screen_info->params->shortcut_exec[i] = NULL; } shortcut = getValue (tmp, rc); if (shortcut) { - params.shortcut_exec[i] = g_strdup (shortcut); + screen_info->params->shortcut_exec[i] = g_strdup (shortcut); } g_free (tmp); } } static gboolean -loadKeyBindings (ScreenData *md, Settings rc[]) +loadKeyBindings (ScreenInfo *screen_info, Settings rc[]) { + Display *dpy; gchar *keytheme; gchar *keythemevalue; + dpy = myScreenGetXDisplay (screen_info); keythemevalue = getValue ("keytheme", rc); if (keythemevalue) { @@ -806,143 +841,92 @@ loadKeyBindings (ScreenData *md, Settings rc[]) } } - loadShortcutCmd (rc); - - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_UP], - getValue ("move_window_up_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_DOWN], - getValue ("move_window_down_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_LEFT], - getValue ("move_window_left_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_RIGHT], - getValue ("move_window_right_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_RESIZE_UP], - getValue ("resize_window_up_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_RESIZE_DOWN], - getValue ("resize_window_down_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_RESIZE_LEFT], - getValue ("resize_window_left_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_RESIZE_RIGHT], - getValue ("resize_window_right_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_CYCLE_WINDOWS], - getValue ("cycle_windows_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_CLOSE_WINDOW], - getValue ("close_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_HIDE_WINDOW], - getValue ("hide_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MAXIMIZE_WINDOW], - getValue ("maximize_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MAXIMIZE_VERT], - getValue ("maximize_vert_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MAXIMIZE_HORIZ], - getValue ("maximize_horiz_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHADE_WINDOW], - getValue ("shade_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_NEXT_WORKSPACE], - getValue ("next_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_PREV_WORKSPACE], - getValue ("prev_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_ADD_WORKSPACE], - getValue ("add_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_DEL_WORKSPACE], - getValue ("del_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_STICK_WINDOW], - getValue ("stick_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_1], - getValue ("workspace_1_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_2], - getValue ("workspace_2_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_3], - getValue ("workspace_3_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_4], - getValue ("workspace_4_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_5], - getValue ("workspace_5_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_6], - getValue ("workspace_6_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_7], - getValue ("workspace_7_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_8], - getValue ("workspace_8_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_9], - getValue ("workspace_9_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_NEXT_WORKSPACE], - getValue ("move_window_next_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_PREV_WORKSPACE], - getValue ("move_window_prev_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_1], - getValue ("move_window_workspace_1_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_2], - getValue ("move_window_workspace_2_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_3], - getValue ("move_window_workspace_3_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_4], - getValue ("move_window_workspace_4_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_5], - getValue ("move_window_workspace_5_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_6], - getValue ("move_window_workspace_6_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_7], - getValue ("move_window_workspace_7_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_8], - getValue ("move_window_workspace_8_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_9], - getValue ("move_window_workspace_9_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_1], - getValue ("shortcut_1_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_2], - getValue ("shortcut_2_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_3], - getValue ("shortcut_3_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_4], - getValue ("shortcut_4_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_5], - getValue ("shortcut_5_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_6], - getValue ("shortcut_6_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_7], - getValue ("shortcut_7_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_8], - getValue ("shortcut_8_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_9], - getValue ("shortcut_9_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_10], - getValue ("shortcut_10_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_RAISE_WINDOW], - getValue ("raise_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_LOWER_WINDOW], - getValue ("lower_window_key", rc)); - ungrabKeys (md->dpy, md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_CYCLE_WINDOWS], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_NEXT_WORKSPACE], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_PREV_WORKSPACE], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_ADD_WORKSPACE], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_NEXT_WORKSPACE], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_1], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_2], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_3], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_4], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_5], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_6], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_7], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_8], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_9], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_1], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_2], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_3], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_4], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_5], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_6], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_7], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_8], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_9], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_10], md->gnome_win); + loadShortcutCmd (screen_info, rc); + + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_UP], getValue ("move_window_up_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_DOWN], getValue ("move_window_down_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_LEFT], getValue ("move_window_left_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_RIGHT], getValue ("move_window_right_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE_UP], getValue ("resize_window_up_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE_DOWN], getValue ("resize_window_down_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE_LEFT], getValue ("resize_window_left_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE_RIGHT], getValue ("resize_window_right_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_CYCLE_WINDOWS], getValue ("cycle_windows_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_CLOSE_WINDOW], getValue ("close_window_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_HIDE_WINDOW], getValue ("hide_window_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_WINDOW], getValue ("maximize_window_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_VERT], getValue ("maximize_vert_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_HORIZ], getValue ("maximize_horiz_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHADE_WINDOW], getValue ("shade_window_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_NEXT_WORKSPACE], getValue ("next_workspace_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_PREV_WORKSPACE], getValue ("prev_workspace_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_ADD_WORKSPACE], getValue ("add_workspace_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_DEL_WORKSPACE], getValue ("del_workspace_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_STICK_WINDOW], getValue ("stick_window_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_1], getValue ("workspace_1_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_2], getValue ("workspace_2_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_3], getValue ("workspace_3_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_4], getValue ("workspace_4_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_5], getValue ("workspace_5_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_6], getValue ("workspace_6_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_7], getValue ("workspace_7_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_8], getValue ("workspace_8_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_9], getValue ("workspace_9_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_NEXT_WORKSPACE], getValue ("move_window_next_workspace_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_PREV_WORKSPACE], getValue ("move_window_prev_workspace_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_1], getValue ("move_window_workspace_1_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_2], getValue ("move_window_workspace_2_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_3], getValue ("move_window_workspace_3_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_4], getValue ("move_window_workspace_4_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_5], getValue ("move_window_workspace_5_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_6], getValue ("move_window_workspace_6_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_7], getValue ("move_window_workspace_7_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_8], getValue ("move_window_workspace_8_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_9], getValue ("move_window_workspace_9_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_1], getValue ("shortcut_1_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_2], getValue ("shortcut_2_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_3], getValue ("shortcut_3_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_4], getValue ("shortcut_4_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_5], getValue ("shortcut_5_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_6], getValue ("shortcut_6_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_7], getValue ("shortcut_7_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_8], getValue ("shortcut_8_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_9], getValue ("shortcut_9_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_10], getValue ("shortcut_10_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_RAISE_WINDOW], getValue ("raise_window_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_LOWER_WINDOW], getValue ("lower_window_key", rc)); + + ungrabKeys (dpy, screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_CYCLE_WINDOWS], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_NEXT_WORKSPACE], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_PREV_WORKSPACE], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_ADD_WORKSPACE], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_NEXT_WORKSPACE], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_1], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_2], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_3], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_4], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_5], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_6], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_7], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_8], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_9], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_1], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_2], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_3], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_4], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_5], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_6], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_7], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_8], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_9], screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_10], screen_info->gnome_win); return TRUE; } gboolean -loadSettings (ScreenData *md) +loadSettings (ScreenInfo *screen_info) { Settings rc[] = { /* Do not chnage the order of the following parameters */ @@ -1068,78 +1052,69 @@ loadSettings (ScreenData *md) {"lower_window_key", NULL, TRUE}, {NULL, NULL, FALSE} }; - GValue tmp_val = { 0, }; TRACE ("entering loadSettings"); - loadRcData (md, rc); - loadMcsData (md, rc); - loadTheme (md, rc); + loadRcData (screen_info, rc); + loadMcsData (screen_info, rc); + loadTheme (screen_info, rc); - if (!loadKeyBindings (md, rc)) + if (!loadKeyBindings (screen_info, rc)) { freeRc (rc); return FALSE; } - params.box_resize = + screen_info->params->box_resize = !g_ascii_strcasecmp ("true", getValue ("box_resize", rc)); - params.box_move = !g_ascii_strcasecmp ("true", getValue ("box_move", rc)); + screen_info->params->box_move = !g_ascii_strcasecmp ("true", getValue ("box_move", rc)); - params.click_to_focus = + screen_info->params->click_to_focus = !g_ascii_strcasecmp ("true", getValue ("click_to_focus", rc)); - params.easy_click = + screen_info->params->easy_click = !g_ascii_strcasecmp ("true", getValue ("easy_click", rc)); - params.cycle_minimum = + screen_info->params->cycle_minimum = !g_ascii_strcasecmp ("true", getValue ("cycle_minimum", rc)); - params.focus_hint = + screen_info->params->focus_hint = !g_ascii_strcasecmp ("true", getValue ("focus_hint", rc)); - params.focus_new = + screen_info->params->focus_new = !g_ascii_strcasecmp ("true", getValue ("focus_new", rc)); - params.raise_on_focus = + screen_info->params->raise_on_focus = !g_ascii_strcasecmp ("true", getValue ("raise_on_focus", rc)); - params.raise_delay = abs (TOINT (getValue ("raise_delay", rc))); - params.raise_on_click = + screen_info->params->raise_delay = abs (TOINT (getValue ("raise_delay", rc))); + screen_info->params->raise_on_click = !g_ascii_strcasecmp ("true", getValue ("raise_on_click", rc)); - params.snap_to_border = + screen_info->params->snap_to_border = !g_ascii_strcasecmp ("true", getValue ("snap_to_border", rc)); - params.snap_to_windows = + screen_info->params->snap_to_windows = !g_ascii_strcasecmp ("true", getValue ("snap_to_windows", rc)); - params.snap_width = abs (TOINT (getValue ("snap_width", rc))); - params.dbl_click_time = abs (TOINT (getValue ("dbl_click_time", rc))); + screen_info->params->snap_width = abs (TOINT (getValue ("snap_width", rc))); - set_settings_margin (md, LEFT, TOINT (getValue ("margin_left", rc))); - set_settings_margin (md, RIGHT, TOINT (getValue ("margin_right", rc))); - set_settings_margin (md, BOTTOM, TOINT (getValue ("margin_bottom", rc))); - set_settings_margin (md, TOP, TOINT (getValue ("margin_top", rc))); - g_value_init (&tmp_val, G_TYPE_INT); - if (gdk_setting_get ("gtk-double-click-time", &tmp_val)) - { - params.dbl_click_time = abs (g_value_get_int (&tmp_val)); - } + set_settings_margin (screen_info, LEFT, TOINT (getValue ("margin_left", rc))); + set_settings_margin (screen_info, RIGHT, TOINT (getValue ("margin_right", rc))); + set_settings_margin (screen_info, BOTTOM, TOINT (getValue ("margin_bottom", rc))); + set_settings_margin (screen_info, TOP, TOINT (getValue ("margin_top", rc))); if (!g_ascii_strcasecmp ("shade", getValue ("double_click_action", rc))) { - params.double_click_action = ACTION_SHADE; + screen_info->params->double_click_action = ACTION_SHADE; } - else if (!g_ascii_strcasecmp ("hide", getValue ("double_click_action", - rc))) + else if (!g_ascii_strcasecmp ("hide", getValue ("double_click_action", rc))) { - params.double_click_action = ACTION_HIDE; + screen_info->params->double_click_action = ACTION_HIDE; } - else if (!g_ascii_strcasecmp ("maximize", getValue ("double_click_action", - rc))) + else if (!g_ascii_strcasecmp ("maximize", getValue ("double_click_action", rc))) { - params.double_click_action = ACTION_MAXIMIZE; + screen_info->params->double_click_action = ACTION_MAXIMIZE; } else { - params.double_click_action = ACTION_NONE; + screen_info->params->double_click_action = ACTION_NONE; } - if (params.workspace_count < 0) + if (screen_info->workspace_count < 0) { gint workspace_count; workspace_count = abs (TOINT (getValue ("workspace_count", rc))); @@ -1147,173 +1122,192 @@ loadSettings (ScreenData *md) { workspace_count = 0; } - g_message (_("%s: Workspace count not set, using rc value: %i"), - g_get_prgname (), workspace_count); - workspaceSetCount (md, workspace_count); + g_message (_("%s: Workspace count not set, using rc value: %i"), g_get_prgname (), workspace_count); + workspaceSetCount (screen_info, workspace_count); } - params.wrap_workspaces = + screen_info->params->wrap_workspaces = !g_ascii_strcasecmp ("true", getValue ("wrap_workspaces", rc)); - params.wrap_windows = + screen_info->params->wrap_windows = !g_ascii_strcasecmp ("true", getValue ("wrap_windows", rc)); - params.wrap_resistance = abs (TOINT (getValue ("wrap_resistance", rc))); + screen_info->params->wrap_resistance = abs (TOINT (getValue ("wrap_resistance", rc))); freeRc (rc); return TRUE; } static void -unloadTheme (ScreenData *md) +unloadTheme (ScreenInfo *screen_info) { + DisplayInfo *display_info = screen_info->display_info; + GSList *screens; int i; + TRACE ("entering unloadTheme"); for (i = 0; i < 3; i++) { - myPixmapFree (¶ms.sides[i][ACTIVE]); - myPixmapFree (¶ms.sides[i][INACTIVE]); + xfwmPixmapFree (&screen_info->sides[i][ACTIVE]); + xfwmPixmapFree (&screen_info->sides[i][INACTIVE]); } for (i = 0; i < 4; i++) { - myPixmapFree (¶ms.corners[i][ACTIVE]); - myPixmapFree (¶ms.corners[i][INACTIVE]); + xfwmPixmapFree (&screen_info->corners[i][ACTIVE]); + xfwmPixmapFree (&screen_info->corners[i][INACTIVE]); } for (i = 0; i < BUTTON_COUNT; i++) { - myPixmapFree (¶ms.buttons[i][ACTIVE]); - myPixmapFree (¶ms.buttons[i][INACTIVE]); - myPixmapFree (¶ms.buttons[i][PRESSED]); - myPixmapFree (¶ms.buttons[i][T_ACTIVE]); - myPixmapFree (¶ms.buttons[i][T_INACTIVE]); - myPixmapFree (¶ms.buttons[i][T_PRESSED]); + xfwmPixmapFree (&screen_info->buttons[i][ACTIVE]); + xfwmPixmapFree (&screen_info->buttons[i][INACTIVE]); + xfwmPixmapFree (&screen_info->buttons[i][PRESSED]); + xfwmPixmapFree (&screen_info->buttons[i][T_ACTIVE]); + xfwmPixmapFree (&screen_info->buttons[i][T_INACTIVE]); + xfwmPixmapFree (&screen_info->buttons[i][T_PRESSED]); } for (i = 0; i < 5; i++) { - myPixmapFree (¶ms.title[i][ACTIVE]); - myPixmapFree (¶ms.title[i][INACTIVE]); + xfwmPixmapFree (&screen_info->title[i][ACTIVE]); + xfwmPixmapFree (&screen_info->title[i][INACTIVE]); } - if (params.box_gc != None) + if (screen_info->box_gc != None) { - XFreeGC (md->dpy, params.box_gc); - params.box_gc = None; + XFreeGC (myScreenGetXDisplay (screen_info), screen_info->box_gc); + screen_info->box_gc = None; } } -gboolean -reloadSettings (ScreenData *md, int mask) +static void +unloadSettings (ScreenInfo *screen_info) { - TRACE ("entering reloadSettings"); + int i; + + g_return_if_fail (screen_info); + + TRACE ("entering unloadSettings"); + + unloadTheme (screen_info); + + for (i = 0; i < NB_KEY_SHORTCUTS; i++) + { + if (screen_info->params->shortcut_exec[i]) + { + g_free (screen_info->params->shortcut_exec[i]); + screen_info->params->shortcut_exec[i] = NULL; + } + } +} + +static gboolean +reloadScreenSettings (ScreenInfo *screen_info, int mask) +{ + g_return_val_if_fail (screen_info, FALSE); - unloadTheme (md); - if (!loadSettings (md)) + unloadTheme (screen_info); + if (!loadSettings (screen_info)) { return FALSE; } if (mask) { - clientUpdateAllFrames (md, mask); + clientUpdateAllFrames (screen_info, mask); } return TRUE; } gboolean -initSettings (ScreenData *md) +reloadSettings (DisplayInfo *display_info, int mask) +{ + GSList *screens; + + g_return_if_fail (display_info); + + TRACE ("entering reloadSettings"); + + /* Refresh all screens, not just one */ + for (screens = display_info->screens; screens; screens = g_slist_next (screens)) + { + ScreenInfo *screen_info = (ScreenInfo *) screens->data; + if (!reloadScreenSettings (screen_info, mask)) + { + return FALSE; + } + } + + return TRUE; +} + +gboolean +initSettings (ScreenInfo *screen_info) { int i; long val = 0; char *names = NULL; + g_return_if_fail (screen_info); + TRACE ("entering initSettings"); - mcs_initted = FALSE; - params.box_gc = None; - params.black_gc = NULL; - params.white_gc = NULL; - params.title_colors[ACTIVE].gc = NULL; - params.title_colors[ACTIVE].allocated = FALSE; - params.title_colors[INACTIVE].gc = NULL; - params.title_colors[INACTIVE].allocated = FALSE; - params.workspace_count = -1; - for (i = 0; i < NB_KEY_SHORTCUTS; i++) { - params.shortcut_exec[i] = NULL; - } - for (i = 0; i < 3; i++) - { - myPixmapInit (¶ms.sides[i][ACTIVE]); - myPixmapInit (¶ms.sides[i][INACTIVE]); - } - for (i = 0; i < 4; i++) - { - myPixmapInit (¶ms.corners[i][ACTIVE]); - myPixmapInit (¶ms.corners[i][INACTIVE]); + screen_info->params->shortcut_exec[i] = NULL; } - for (i = 0; i < BUTTON_COUNT; i++) - { - myPixmapInit (¶ms.buttons[i][ACTIVE]); - myPixmapInit (¶ms.buttons[i][INACTIVE]); - myPixmapInit (¶ms.buttons[i][PRESSED]); - myPixmapInit (¶ms.buttons[i][T_ACTIVE]); - myPixmapInit (¶ms.buttons[i][T_INACTIVE]); - myPixmapInit (¶ms.buttons[i][T_PRESSED]); - } - for (i = 0; i < 5; i++) - { - myPixmapInit (¶ms.title[i][ACTIVE]); - myPixmapInit (¶ms.title[i][INACTIVE]); - } - if (!mcs_client_check_manager (md->dpy, md->screen, "xfce-mcs-manager")) + if (!mcs_client_check_manager (myScreenGetXDisplay (screen_info), screen_info->screen, "xfce-mcs-manager")) { - g_warning ("MCS manager not running"); + g_warning ("MCS manager not running, startup delayed for 5 seconds"); + sleep (5); } - client = mcs_client_new (md->dpy, md->screen, notify_cb, watch_cb, (gpointer) md); - if (client) + screen_info->mcs_client = mcs_client_new (myScreenGetXDisplay (screen_info), screen_info->screen, notify_cb, watch_cb, (gpointer) screen_info); + if (screen_info->mcs_client) { - mcs_client_add_channel (client, CHANNEL1); - mcs_client_add_channel (client, CHANNEL2); - mcs_client_add_channel (client, CHANNEL3); + mcs_client_add_channel (screen_info->mcs_client, CHANNEL1); + mcs_client_add_channel (screen_info->mcs_client, CHANNEL2); + mcs_client_add_channel (screen_info->mcs_client, CHANNEL3); } else { g_warning ("Cannot create MCS client channel"); } - mcs_initted = TRUE; + screen_info->mcs_initted = TRUE; - if (getHint (md->dpy, md->xroot, net_number_of_desktops, &val)) + if (getHint (myScreenGetXDisplay (screen_info), screen_info->xroot, net_number_of_desktops, &val)) { - workspaceSetCount (md, val); + workspaceSetCount (screen_info, val); } - else if (getHint (md->dpy, md->xroot, win_workspace_count, &val)) + else if (getHint (myScreenGetXDisplay (screen_info), screen_info->xroot, win_workspace_count, &val)) { - workspaceSetCount (md, val); + workspaceSetCount (screen_info, val); } - if (getUTF8String (md->dpy, md->xroot, net_desktop_names, &names, &i)) + if (getUTF8String (myScreenGetXDisplay (screen_info), screen_info->xroot, net_desktop_names, &names, &i)) { - workspaceSetNames (names, i); + workspaceSetNames (screen_info, names, i); } else { - params.workspace_names = NULL; - params.workspace_names_length = 0; + screen_info->workspace_names = NULL; + screen_info->workspace_names_length = 0; } - if (!loadSettings (md)) + if (!loadSettings (screen_info)) { return FALSE; } - placeSidewalks (md, params.wrap_workspaces); + placeSidewalks (screen_info, screen_info->params->wrap_workspaces); return TRUE; } void -unloadSettings (ScreenData *md) +closeSettings (ScreenInfo *screen_info) { - TRACE ("entering unloadSettings"); - - unloadTheme (md); + g_return_if_fail (screen_info); + + if (screen_info->mcs_client) + { + mcs_client_destroy (screen_info->mcs_client); + screen_info->mcs_client = NULL; + } + unloadSettings (screen_info); } diff --git a/src/settings.h b/src/settings.h index 244e33e94..49b20b00f 100644 --- a/src/settings.h +++ b/src/settings.h @@ -18,9 +18,6 @@ */ -#ifndef INC_SETTINGS_H -#define INC_SETTINGS_H - #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -31,14 +28,8 @@ #include "keyboard.h" #include "mypixmap.h" -#define CORNER_TOP_LEFT 0 -#define CORNER_TOP_RIGHT 1 -#define CORNER_BOTTOM_LEFT 2 -#define CORNER_BOTTOM_RIGHT 3 - -#define SIDE_LEFT 0 -#define SIDE_RIGHT 1 -#define SIDE_BOTTOM 2 +#ifndef INC_SETTINGS_H +#define INC_SETTINGS_H #define TITLE_1 0 #define TITLE_2 1 @@ -126,15 +117,13 @@ #define ACTION_SHADE 2 #define ACTION_HIDE 3 -typedef struct _MyColor MyColor; -struct _MyColor +struct _XfwmColor { GdkColor col; GdkGC *gc; gboolean allocated; }; -typedef struct _Settings Settings; struct _Settings { gchar *option; @@ -142,29 +131,19 @@ struct _Settings gboolean required; }; -typedef struct _Params Params; -struct _Params +struct _XfwmParams { - MyColor title_colors[2]; MyKey keys[KEY_COUNT]; - MyPixmap buttons[BUTTON_COUNT][6]; - MyPixmap corners[4][2]; - MyPixmap sides[3][2]; - MyPixmap title[5][2]; gchar button_layout[8]; gchar *shortcut_exec[NB_KEY_SHORTCUTS]; unsigned int xfwm_margins[4]; int button_offset; int button_spacing; - int dbl_click_time; int double_click_action; int raise_delay; int snap_width; int title_alignment; int title_horizontal_offset; - int workspace_count; - gchar *workspace_names; - int workspace_names_length; int wrap_resistance; gboolean title_shadow[2]; gboolean cycle_minimum; @@ -183,16 +162,12 @@ struct _Params gboolean title_vertical_offset_inactive; gboolean wrap_workspaces; gboolean wrap_windows; - GC box_gc; - GdkGC *black_gc; - GdkGC *white_gc; }; -extern Params params; - -gboolean loadSettings (ScreenData *); -void unloadSettings (ScreenData *); -gboolean reloadSettings (ScreenData *, int); -gboolean initSettings (ScreenData *); +gboolean loadSettings (ScreenInfo *); +gboolean reloadSettings (DisplayInfo *, + int); +gboolean initSettings (ScreenInfo *); +void closeSettings (ScreenInfo *); #endif /* INC_SETTINGS_H */ diff --git a/src/spinning_cursor.c b/src/spinning_cursor.c index 703ba8d99..96278cbd5 100644 --- a/src/spinning_cursor.c +++ b/src/spinning_cursor.c @@ -53,7 +53,7 @@ static const unsigned char xlib_spinning_mask_bits[] = { }; Cursor -cursorCreateSpinning (Display * dpy, Window window) +cursorCreateSpinning (Display * dpy) { Pixmap cursor = None; Pixmap mask = None; @@ -72,12 +72,12 @@ cursorCreateSpinning (Display * dpy, Window window) bg.blue = 0xffff; bg.flags = 0xf; - cursor = - XCreatePixmapFromBitmapData (dpy, window, (char *) xlib_spinning_bits, - 32, 32, 0xffffffff, 0x0, 1); - mask = - XCreatePixmapFromBitmapData (dpy, window, - (char *) xlib_spinning_mask_bits, 32, 32, 0xffffffff, 0x0, 1); + cursor = XCreatePixmapFromBitmapData (dpy, DefaultRootWindow(dpy), + (char *) xlib_spinning_bits, + 32, 32, 0xffffffff, 0x0, 1); + mask = XCreatePixmapFromBitmapData (dpy, DefaultRootWindow(dpy), + (char *) xlib_spinning_mask_bits, + 32, 32, 0xffffffff, 0x0, 1); xcursor = XCreatePixmapCursor (dpy, cursor, mask, &fg, &bg, 2, 2); XFreePixmap (dpy, mask); XFreePixmap (dpy, cursor); diff --git a/src/spinning_cursor.h b/src/spinning_cursor.h index ffb25824a..a5085c766 100644 --- a/src/spinning_cursor.h +++ b/src/spinning_cursor.h @@ -13,7 +13,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - Metacity - (c) 2003 Havoc Pennington + mozilla - (c) 1998 mozilla.org xfwm4 - (c) 2002-2004 Olivier Fourdan */ @@ -27,6 +27,6 @@ #include <X11/Xlib.h> -Cursor cursorCreateSpinning (Display * dpy, Window window); +Cursor cursorCreateSpinning (Display * dpy); #endif /* INC_SPINNING_CURSOR_H */ diff --git a/src/stacking.c b/src/stacking.c index 2a660bd71..42d10cc04 100644 --- a/src/stacking.c +++ b/src/stacking.c @@ -23,6 +23,7 @@ #include <glib.h> #include <libxfce4util/libxfce4util.h> +#include "display.h" #include "screen.h" #include "mywindow.h" #include "client.h" @@ -32,30 +33,26 @@ #include "frame.h" #include "focus.h" -GList *windows_stack = NULL; -static Client *last_raise = NULL; -static GList *windows = NULL; - void -clientApplyStackList (ScreenData *md) +clientApplyStackList (ScreenInfo *screen_info) { Window *xwinstack; guint nwindows; gint i = 0; DBG ("applying stack list"); - nwindows = g_list_length (windows_stack); + nwindows = g_list_length (screen_info->windows_stack); xwinstack = g_new (Window, nwindows + 2); - xwinstack[i++] = MYWINDOW_XWINDOW (md->sidewalk[0]); - xwinstack[i++] = MYWINDOW_XWINDOW (md->sidewalk[1]); + xwinstack[i++] = MYWINDOW_XWINDOW (screen_info->sidewalk[0]); + xwinstack[i++] = MYWINDOW_XWINDOW (screen_info->sidewalk[1]); if (nwindows) { GList *index; Client *c; - for (index = g_list_last(windows_stack); index; index = g_list_previous (index)) + for (index = g_list_last(screen_info->windows_stack); index; index = g_list_previous (index)) { c = (Client *) index->data; xwinstack[i++] = c->frame; @@ -63,7 +60,7 @@ clientApplyStackList (ScreenData *md) } } - XRestackWindows (md->dpy, xwinstack, (int) nwindows + 2); + XRestackWindows (myScreenGetXDisplay (screen_info), xwinstack, (int) nwindows + 2); g_free (xwinstack); } @@ -73,7 +70,8 @@ clientTransientOrModalHasAncestor (Client * c, int ws) { Client *c2; GList *index; - + ScreenInfo *screen_info; + g_return_val_if_fail (c != NULL, FALSE); TRACE ("entering clientTransientOrModalHasAncestor"); @@ -83,7 +81,8 @@ clientTransientOrModalHasAncestor (Client * c, int ws) return FALSE; } - for (index = windows_stack; index; index = g_list_next (index)) + screen_info = c->screen_info; + for (index = screen_info->windows_stack; index; index = g_list_next (index)) { c2 = (Client *) index->data; if ((c2 != c) && !clientIsTransientOrModal (c2) @@ -103,12 +102,14 @@ clientGetLowestTransient (Client * c) { Client *lowest_transient = NULL, *c2; GList *index; - + ScreenInfo *screen_info; + g_return_val_if_fail (c != NULL, NULL); TRACE ("entering clientGetLowestTransient"); - - for (index = windows_stack; index; index = g_list_next (index)) + + screen_info = c->screen_info; + for (index = screen_info->windows_stack; index; index = g_list_next (index)) { c2 = (Client *) index->data; if ((c2 != c) && clientIsTransientFor (c2, c)) @@ -126,11 +127,13 @@ clientGetHighestTransientOrModalFor (Client * c) Client *highest_transient = NULL; Client *c2; GList *index; + ScreenInfo *screen_info; g_return_val_if_fail (c != NULL, NULL); TRACE ("entering clientGetHighestTransientOrModalFor"); - for (index = windows_stack; index; index = g_list_next (index)) + screen_info = c->screen_info; + for (index = screen_info->windows_stack; index; index = g_list_next (index)) { c2 = (Client *) index->data; if (c2) @@ -151,11 +154,13 @@ clientGetTopMostForGroup (Client * c) Client *top_most = NULL; Client *c2; GList *index; + ScreenInfo *screen_info; g_return_val_if_fail (c != NULL, NULL); TRACE ("entering clientGetTopMostForGroup"); - for (index = windows_stack; index; index = g_list_next (index)) + screen_info = c->screen_info; + for (index = screen_info->windows_stack; index; index = g_list_next (index)) { c2 = (Client *) index->data; if (c2 != c) @@ -171,14 +176,14 @@ clientGetTopMostForGroup (Client * c) } Client * -clientGetNextTopMost (int layer, Client * exclude) +clientGetNextTopMost (ScreenInfo *screen_info, int layer, Client * exclude) { Client *top = NULL, *c; GList *index; TRACE ("entering clientGetNextTopMost"); - for (index = windows_stack; index; index = g_list_next (index)) + for (index = screen_info->windows_stack; index; index = g_list_next (index)) { c = (Client *) index->data; TRACE ("*** stack window \"%s\" (0x%lx), layer %i", c->name, @@ -197,14 +202,14 @@ clientGetNextTopMost (int layer, Client * exclude) } Client * -clientGetBottomMost (int layer, Client * exclude) +clientGetBottomMost (ScreenInfo *screen_info, int layer, Client * exclude) { Client *bot = NULL, *c; GList *index; TRACE ("entering clientGetBottomMost"); - for (index = windows_stack; index; index = g_list_next (index)) + for (index = screen_info->windows_stack; index; index = g_list_next (index)) { c = (Client *) index->data; if (c) @@ -228,7 +233,7 @@ clientGetBottomMost (int layer, Client * exclude) } Client * -clientAtPosition (int x, int y, Client * exclude) +clientAtPosition (ScreenInfo *screen_info, int x, int y, Client * exclude) { /* This function does the same as XQueryPointer but w/out the race conditions caused by querying the X server @@ -239,7 +244,7 @@ clientAtPosition (int x, int y, Client * exclude) TRACE ("entering clientAtPos"); - for (index = g_list_last (windows_stack); index; index = g_list_previous (index)) + for (index = g_list_last (screen_info->windows_stack); index; index = g_list_previous (index)) { c2 = (Client *) index->data; if (clientSelectMask (c2, 0) && (c2 != exclude)) @@ -259,17 +264,20 @@ clientAtPosition (int x, int y, Client * exclude) void clientRaise (Client * c) { + ScreenInfo *screen_info; + g_return_if_fail (c != NULL); TRACE ("entering clientRaise"); - if (c == last_raise) + screen_info = c->screen_info; + if (c == screen_info->last_raise) { TRACE ("client \"%s\" (0x%lx) already raised", c->name, c->window); return; } TRACE ("raising client \"%s\" (0x%lx)", c->name, c->window); - if (g_list_length (windows_stack) < 1) + if (g_list_length (screen_info->windows_stack) < 1) { return; } @@ -284,21 +292,21 @@ clientRaise (Client * c) GList *windows_stack_copy; /* Copy the existing window stack temporarily as reference */ - windows_stack_copy = g_list_copy (windows_stack); + windows_stack_copy = g_list_copy (screen_info->windows_stack); /* Search for the window that will be just on top of the raised window (layers...) */ - client_sibling = clientGetNextTopMost (c->win_layer, c); - windows_stack = g_list_remove (windows_stack, (gconstpointer) c); + client_sibling = clientGetNextTopMost (screen_info, c->win_layer, c); + screen_info->windows_stack = g_list_remove (screen_info->windows_stack, (gconstpointer) c); if (client_sibling) { /* If there is one, look for its place in the list */ - sibling = g_list_find (windows_stack, (gconstpointer) client_sibling); + sibling = g_list_find (screen_info->windows_stack, (gconstpointer) client_sibling); /* Place the raised window just before it */ - windows_stack = g_list_insert_before (windows_stack, sibling, c); + screen_info->windows_stack = g_list_insert_before (screen_info->windows_stack, sibling, c); } else { /* There will be no window on top of the raised window, so place it at the end of list */ - windows_stack = g_list_append (windows_stack, c); + screen_info->windows_stack = g_list_append (screen_info->windows_stack, c); } /* Now, look for transients, transients of transients, etc. */ for (index1 = windows_stack_copy; index1; index1 = g_list_next (index1)) @@ -315,15 +323,15 @@ clientRaise (Client * c) if (client_sibling != c2) { /* Place the transient window just before sibling */ - windows_stack = g_list_remove (windows_stack, (gconstpointer) c2); - windows_stack = g_list_insert_before (windows_stack, sibling, c2); + screen_info->windows_stack = g_list_remove (screen_info->windows_stack, (gconstpointer) c2); + screen_info->windows_stack = g_list_insert_before (screen_info->windows_stack, sibling, c2); } } else { /* There will be no window on top of the transient window, so place it at the end of list */ - windows_stack = g_list_remove (windows_stack, (gconstpointer) c2); - windows_stack = g_list_append (windows_stack, c2); + screen_info->windows_stack = g_list_remove (screen_info->windows_stack, (gconstpointer) c2); + screen_info->windows_stack = g_list_append (screen_info->windows_stack, c2); } } else @@ -340,15 +348,15 @@ clientRaise (Client * c) if (client_sibling != c2) { /* Place the transient window just before sibling */ - windows_stack = g_list_remove (windows_stack, (gconstpointer) c2); - windows_stack = g_list_insert_before (windows_stack, sibling, c2); + screen_info->windows_stack = g_list_remove (screen_info->windows_stack, (gconstpointer) c2); + screen_info->windows_stack = g_list_insert_before (screen_info->windows_stack, sibling, c2); } } else { /* There will be no window on top of the transient window, so place it at the end of list */ - windows_stack = g_list_remove (windows_stack, (gconstpointer) c2); - windows_stack = g_list_append (windows_stack, c2); + screen_info->windows_stack = g_list_remove (screen_info->windows_stack, (gconstpointer) c2); + screen_info->windows_stack = g_list_append (screen_info->windows_stack, c2); } break; } @@ -364,23 +372,26 @@ clientRaise (Client * c) { g_list_free (windows_stack_copy); } - /* Now, windows_stack contains the correct window stack + /* Now, screen_info->windows_stack contains the correct window stack We still need to tell the X Server to reflect the changes */ - clientApplyStackList (c->md); - clientSetNetClientList (c->md, net_client_list_stacking, windows_stack); - last_raise = c; + clientApplyStackList (screen_info); + clientSetNetClientList (c->screen_info, net_client_list_stacking, screen_info->windows_stack); + screen_info->last_raise = c; } } void clientLower (Client * c) { + ScreenInfo *screen_info; + g_return_if_fail (c != NULL); TRACE ("entering clientLower"); TRACE ("lowering client \"%s\" (0x%lx)", c->name, c->window); - if (g_list_length (windows_stack) < 1) + screen_info = c->screen_info; + if (g_list_length (screen_info->windows_stack) < 1) { return; } @@ -399,34 +410,34 @@ clientLower (Client * c) } if (!client_sibling) { - client_sibling = clientGetBottomMost (c->win_layer, c); + client_sibling = clientGetBottomMost (screen_info, c->win_layer, c); } if (client_sibling != c) { - windows_stack = g_list_remove (windows_stack, (gconstpointer) c); + screen_info->windows_stack = g_list_remove (screen_info->windows_stack, (gconstpointer) c); /* Paranoid check to avoid circular linked list */ if (client_sibling) { - GList *sibling = g_list_find (windows_stack, (gconstpointer) client_sibling); - gint position = g_list_position (windows_stack, sibling) + 1; + GList *sibling = g_list_find (screen_info->windows_stack, (gconstpointer) client_sibling); + gint position = g_list_position (screen_info->windows_stack, sibling) + 1; - windows_stack = g_list_insert (windows_stack, c, position); + screen_info->windows_stack = g_list_insert (screen_info->windows_stack, c, position); TRACE ("lowest client is \"%s\" (0x%lx) at position %i", client_sibling->name, client_sibling->window, position); } else { - windows_stack = g_list_prepend (windows_stack, c); + screen_info->windows_stack = g_list_prepend (screen_info->windows_stack, c); } } - /* Now, windows_stack contains the correct window stack + /* Now, screen_info->windows_stack contains the correct window stack We still need to tell the X Server to reflect the changes */ - clientApplyStackList (c->md); - clientSetNetClientList (c->md, net_client_list_stacking, windows_stack); - if (last_raise == c) + clientApplyStackList (screen_info); + clientSetNetClientList (screen_info, net_client_list_stacking, screen_info->windows_stack); + if (screen_info->last_raise == c) { - last_raise = NULL; + screen_info->last_raise = NULL; } } } @@ -434,30 +445,35 @@ clientLower (Client * c) void clientAddToList (Client * c) { + ScreenInfo *screen_info; + DisplayInfo *display_info; Client *client_sibling = NULL; GList *sibling = NULL; g_return_if_fail (c != NULL); TRACE ("entering clientAddToList"); - client_count++; - if (clients) + screen_info = c->screen_info; + display_info = screen_info->display_info; + myDisplayAddClient (display_info, c); + + screen_info->client_count++; + if (screen_info->clients) { - c->prev = clients->prev; - c->next = clients; - clients->prev->next = c; - clients->prev = c; + c->prev = screen_info->clients->prev; + c->next = screen_info->clients; + screen_info->clients->prev->next = c; + screen_info->clients->prev = c; } else { - clients = c; + screen_info->clients = c; c->next = c; c->prev = c; } - TRACE ("adding window \"%s\" (0x%lx) to windows list", c->name, - c->window); - windows = g_list_append (windows, c); + TRACE ("adding window \"%s\" (0x%lx) to windows list", c->name, c->window); + screen_info->windows = g_list_append (screen_info->windows, c); client_sibling = clientGetLowestTransient (c); /* Paranoid check to avoid circular linked list */ @@ -466,31 +482,31 @@ clientAddToList (Client * c) if (client_sibling) { /* The client has already a transient mapped */ - sibling = g_list_find (windows_stack, (gconstpointer) client_sibling); - windows_stack = g_list_insert_before (windows_stack, sibling, c); + sibling = g_list_find (screen_info->windows_stack, (gconstpointer) client_sibling); + screen_info->windows_stack = g_list_insert_before (screen_info->windows_stack, sibling, c); } else { - client_sibling = clientGetNextTopMost (c->win_layer, c); + client_sibling = clientGetNextTopMost (screen_info, c->win_layer, c); /* Paranoid check to avoid circular linked list */ if (client_sibling != c) { if (client_sibling) { - sibling = g_list_find (windows_stack, (gconstpointer) client_sibling); - windows_stack = g_list_insert_before (windows_stack, sibling, c); + sibling = g_list_find (screen_info->windows_stack, (gconstpointer) client_sibling); + screen_info->windows_stack = g_list_insert_before (screen_info->windows_stack, sibling, c); } else { - windows_stack = g_list_append (windows_stack, c); + screen_info->windows_stack = g_list_append (screen_info->windows_stack, c); } } } } - clientSetNetClientList (c->md, net_client_list, windows); - clientSetNetClientList (c->md, win_client_list, windows); - clientSetNetClientList (c->md, net_client_list_stacking, windows_stack); + clientSetNetClientList (screen_info, net_client_list, screen_info->windows); + clientSetNetClientList (screen_info, win_client_list, screen_info->windows); + clientSetNetClientList (screen_info, net_client_list_stacking, screen_info->windows_stack); FLAG_SET (c->flags, CLIENT_FLAG_MANAGED); } @@ -498,48 +514,57 @@ clientAddToList (Client * c) void clientRemoveFromList (Client * c) { + ScreenInfo *screen_info; + DisplayInfo *display_info; + g_return_if_fail (c != NULL); TRACE ("entering clientRemoveFromList"); - g_assert (client_count > 0); FLAG_UNSET (c->flags, CLIENT_FLAG_MANAGED); - client_count--; - if (client_count == 0) + + screen_info = c->screen_info; + display_info = screen_info->display_info; + myDisplayRemoveClient (display_info, c); + + g_assert (screen_info->client_count > 0); + screen_info->client_count--; + if (screen_info->client_count == 0) { - clients = NULL; + screen_info->clients = NULL; } else { c->next->prev = c->prev; c->prev->next = c->next; - if (c == clients) + if (c == screen_info->clients) { - clients = clients->next; + screen_info->clients = screen_info->clients->next; } } - TRACE ("removing window \"%s\" (0x%lx) from windows list", c->name, - c->window); - windows = g_list_remove (windows, c); + TRACE ("removing window \"%s\" (0x%lx) from windows list", c->name, c->window); + screen_info->windows = g_list_remove (screen_info->windows, c); - TRACE ("removing window \"%s\" (0x%lx) from windows_stack list", c->name, - c->window); - windows_stack = g_list_remove (windows_stack, c); + TRACE ("removing window \"%s\" (0x%lx) from screen_info->windows_stack list", c->name, c->window); + screen_info->windows_stack = g_list_remove (screen_info->windows_stack, c); - clientSetNetClientList (c->md, net_client_list, windows); - clientSetNetClientList (c->md, win_client_list, windows); - clientSetNetClientList (c->md, net_client_list_stacking, windows_stack); + clientSetNetClientList (screen_info, net_client_list, screen_info->windows); + clientSetNetClientList (screen_info, win_client_list, screen_info->windows); + clientSetNetClientList (screen_info, net_client_list_stacking, screen_info->windows_stack); FLAG_UNSET (c->flags, CLIENT_FLAG_MANAGED); } GList * -clientGetStackList (void) +clientGetStackList (ScreenInfo *screen_info) { GList *windows_stack_copy = NULL; - if (windows_stack) + + g_return_if_fail (screen_info); + + if (screen_info->windows_stack) { - windows_stack_copy = g_list_copy (windows_stack); + windows_stack_copy = g_list_copy (screen_info->windows_stack); } return windows_stack_copy; } @@ -547,17 +572,24 @@ clientGetStackList (void) void clientSetLastRaise (Client *c) { - last_raise = c; + ScreenInfo *screen_info; + + g_return_if_fail (c != NULL); + + screen_info = c->screen_info; + screen_info->last_raise = c; } Client * -clientGetLastRaise (void) +clientGetLastRaise (ScreenInfo *screen_info) { - return (last_raise); + g_return_if_fail (screen_info); + return (screen_info->last_raise); } void -clientClearLastRaise (void) +clientClearLastRaise (ScreenInfo *screen_info) { - last_raise = NULL; + g_return_if_fail (screen_info); + screen_info->last_raise = NULL; } diff --git a/src/stacking.h b/src/stacking.h index ae50758db..f75ac36ce 100644 --- a/src/stacking.h +++ b/src/stacking.h @@ -28,23 +28,21 @@ #include "screen.h" #include "client.h" -extern GList *windows_stack; - -void clientApplyStackList (ScreenData *); +void clientApplyStackList (ScreenInfo *); gboolean clientTransientOrModalHasAncestor (Client *, int); Client *clientGetLowestTransient (Client *); Client *clientGetHighestTransientOrModalFor (Client *); Client *clientGetTopMostForGroup (Client *); -Client *clientGetNextTopMost (int, Client *); -Client *clientGetBottomMost (int, Client *); -Client *clientAtPosition (int, int, Client *); +Client *clientGetNextTopMost (ScreenInfo *, int, Client *); +Client *clientGetBottomMost (ScreenInfo *, int, Client *); +Client *clientAtPosition (ScreenInfo *, int, int, Client *); void clientRaise (Client *); void clientLower (Client *); void clientAddToList (Client *); void clientRemoveFromList (Client *); -GList *clientGetStackList (void); +GList *clientGetStackList (ScreenInfo *); void clientSetLastRaise (Client *); -Client *clientGetLastRaise (void); -void clientClearLastRaise (void); +Client *clientGetLastRaise (ScreenInfo *); +void clientClearLastRaise (ScreenInfo *); #endif /* INC_STACKING_H */ diff --git a/src/startup_notification.c b/src/startup_notification.c index 6365b0cdb..1694d6d2b 100644 --- a/src/startup_notification.c +++ b/src/startup_notification.c @@ -41,7 +41,7 @@ #define STARTUP_TIMEOUT (30 /* seconds */ * 1000) -SnDisplay *sn_display; +static SnDisplay *sn_display = NULL; typedef struct { @@ -65,54 +65,54 @@ sn_error_trap_pop (SnDisplay * sn_display, Display * dpy) } static void -sn_update_feedback (ScreenData *md) +sn_update_feedback (ScreenInfo *screen_info) { - g_return_if_fail (md != NULL); + g_return_if_fail (screen_info != NULL); - if (md->startup_sequences != NULL) + if (screen_info->startup_sequences != NULL) { - XDefineCursor (md->dpy, md->xroot, md->busy_cursor); + XDefineCursor (myScreenGetXDisplay (screen_info), screen_info->xroot, + myDisplayGetCursorBusy(screen_info->display_info)); } else { - XDefineCursor (md->dpy, md->xroot, md->root_cursor); + XDefineCursor (myScreenGetXDisplay (screen_info), screen_info->xroot, + myDisplayGetCursorRoot(screen_info->display_info)); } } static void -sn_add_sequence (ScreenData *md, SnStartupSequence * sequence) +sn_add_sequence (ScreenInfo *screen_info, SnStartupSequence * sequence) { - g_return_if_fail (sn_display != NULL); + g_return_if_fail (screen_info != NULL); g_return_if_fail (sequence != NULL); - g_return_if_fail (md != NULL); sn_startup_sequence_ref (sequence); - md->startup_sequences = g_slist_prepend (md->startup_sequences, sequence); + screen_info->startup_sequences = g_slist_prepend (screen_info->startup_sequences, sequence); - if (md->startup_sequence_timeout == 0) + if (screen_info->startup_sequence_timeout == 0) { - md->startup_sequence_timeout = - g_timeout_add (1000, sn_startup_sequence_timeout, md); + screen_info->startup_sequence_timeout = + g_timeout_add (1000, sn_startup_sequence_timeout, screen_info); } - sn_update_feedback (md); + sn_update_feedback (screen_info); } static void -sn_remove_sequence (ScreenData *md, SnStartupSequence * sequence) +sn_remove_sequence (ScreenInfo *screen_info, SnStartupSequence * sequence) { - g_return_if_fail (sn_display != NULL); + g_return_if_fail (screen_info != NULL); g_return_if_fail (sequence != NULL); - g_return_if_fail (md != NULL); - md->startup_sequences = g_slist_remove (md->startup_sequences, sequence); + screen_info->startup_sequences = g_slist_remove (screen_info->startup_sequences, sequence); sn_startup_sequence_unref (sequence); - if ((md->startup_sequences == NULL) && (md->startup_sequence_timeout != 0)) + if ((screen_info->startup_sequences == NULL) && (screen_info->startup_sequence_timeout != 0)) { - g_source_remove (md->startup_sequence_timeout); - md->startup_sequence_timeout = 0; + g_source_remove (screen_info->startup_sequence_timeout); + screen_info->startup_sequence_timeout = 0; } - sn_update_feedback (md); + sn_update_feedback (screen_info); } static void @@ -123,7 +123,8 @@ sn_collect_timed_out_foreach (void *element, void *data) long tv_sec, tv_usec; double elapsed; - g_return_if_fail (sn_display != NULL); + g_return_if_fail (data != NULL); + g_return_if_fail (element != NULL); sn_startup_sequence_get_last_active_time (sequence, &tv_sec, &tv_usec); @@ -140,16 +141,15 @@ sn_collect_timed_out_foreach (void *element, void *data) static gboolean sn_startup_sequence_timeout (void *data) { - ScreenData * md = (ScreenData *) data; + ScreenInfo * screen_info = (ScreenInfo *) data; CollectTimedOutData ctod; GSList *tmp; - g_return_val_if_fail (sn_display != NULL, FALSE); - g_return_val_if_fail (md != NULL, FALSE); + g_return_val_if_fail (screen_info != NULL, FALSE); ctod.list = NULL; g_get_current_time (&ctod.now); - g_slist_foreach (md->startup_sequences, sn_collect_timed_out_foreach, &ctod); + g_slist_foreach (screen_info->startup_sequences, sn_collect_timed_out_foreach, &ctod); tmp = ctod.list; while (tmp != NULL) @@ -163,14 +163,14 @@ sn_startup_sequence_timeout (void *data) g_slist_free (ctod.list); - if (md->startup_sequences != NULL) + if (screen_info->startup_sequences != NULL) { return TRUE; } else { /* remove */ - md->startup_sequence_timeout = 0; + screen_info->startup_sequence_timeout = 0; return FALSE; } } @@ -180,11 +180,10 @@ sn_screen_event (SnMonitorEvent * event, void *user_data) { const char *wmclass; SnStartupSequence *sequence; - ScreenData *md = (ScreenData *) user_data; + ScreenInfo *screen_info = (ScreenInfo *) user_data; - g_return_if_fail (sn_display != NULL); g_return_if_fail (event != NULL); - g_return_if_fail (md != NULL); + g_return_if_fail (screen_info != NULL); sequence = sn_monitor_event_get_startup_sequence (event); @@ -192,11 +191,11 @@ sn_screen_event (SnMonitorEvent * event, void *user_data) { case SN_MONITOR_EVENT_INITIATED: wmclass = sn_startup_sequence_get_wmclass (sequence); - sn_add_sequence (md, sequence); + sn_add_sequence (screen_info, sequence); break; case SN_MONITOR_EVENT_COMPLETED: - sn_remove_sequence (md, sn_monitor_event_get_startup_sequence (event)); + sn_remove_sequence (screen_info, sn_monitor_event_get_startup_sequence (event)); break; case SN_MONITOR_EVENT_CHANGED: @@ -214,17 +213,16 @@ sn_client_startup_properties (Client * c) char *startup_id = NULL; GSList *tmp = NULL; SnStartupSequence *sequence; - ScreenData *md; + ScreenInfo *screen_info; g_return_if_fail (c != NULL); - g_return_if_fail (sn_display != NULL); startup_id = clientGetStartupId (c); - md = c->md; + screen_info = c->screen_info; sequence = NULL; if (startup_id == NULL) { - tmp = md->startup_sequences; + tmp = screen_info->startup_sequences; while (tmp != NULL) { const char *wmclass; @@ -258,7 +256,7 @@ sn_client_startup_properties (Client * c) if (sequence == NULL) { - tmp = md->startup_sequences; + tmp = screen_info->startup_sequences; while (tmp != NULL) { const char *id; @@ -294,22 +292,23 @@ sn_client_startup_properties (Client * c) } void -sn_init_display (ScreenData *md) +sn_init_display (ScreenInfo *screen_info) { - sn_display = NULL; - - g_return_if_fail (md != NULL); - g_return_if_fail (md->dpy != NULL); + g_return_if_fail (screen_info != NULL); + g_return_if_fail (myScreenGetXDisplay (screen_info) != NULL); - sn_display = sn_display_new (md->dpy, sn_error_trap_push, sn_error_trap_pop); - md->sn_context = NULL; + if (!sn_display) + { + sn_display = sn_display_new (myScreenGetXDisplay (screen_info), sn_error_trap_push, sn_error_trap_pop); + } + screen_info->sn_context = NULL; if (sn_display != NULL) { - md->sn_context = - sn_monitor_context_new (sn_display, md->screen, sn_screen_event, md, NULL); + screen_info->sn_context = + sn_monitor_context_new (sn_display, screen_info->screen, sn_screen_event, screen_info, NULL); } - md->startup_sequences = NULL; - md->startup_sequence_timeout = 0; + screen_info->startup_sequences = NULL; + screen_info->startup_sequence_timeout = 0; } void diff --git a/src/startup_notification.h b/src/startup_notification.h index 42dff6442..54b392ee2 100644 --- a/src/startup_notification.h +++ b/src/startup_notification.h @@ -34,9 +34,9 @@ #include "client.h" void sn_client_startup_properties (Client *); -void sn_init_display (ScreenData *md); -void sn_close_display (void); -void sn_process_event (XEvent * event); +void sn_init_display (ScreenInfo *); +void sn_close_display (void); +void sn_process_event (XEvent *); #else /* HAVE_LIBSTARTUP_NOTIFICATION */ diff --git a/src/tabwin.c b/src/tabwin.c index 7fb4b6694..c1dd31d2f 100644 --- a/src/tabwin.c +++ b/src/tabwin.c @@ -128,7 +128,7 @@ pretty_string (const gchar *s) canonical = g_strdup(_("Unknown application!")); } markup = g_strdup_printf ("<b>%s</b>", canonical); - free (canonical); + g_free (canonical); return markup; } diff --git a/src/transients.c b/src/transients.c index c3a70f880..f07397284 100644 --- a/src/transients.c +++ b/src/transients.c @@ -37,9 +37,9 @@ clientGetTransient (Client * c) TRACE ("entering clientGetTransient"); - if ((c->transient_for) && (c->transient_for != c->md->xroot)) + if ((c->transient_for) && (c->transient_for != c->screen_info->xroot)) { - c2 = clientGetFromWindow (c->transient_for, WINDOW); + c2 = clientGetFromWindow (c->screen_info, c->transient_for, WINDOW); return c2; } return NULL; @@ -52,8 +52,8 @@ clientIsTransient (Client * c) TRACE ("entering clientIsTransient"); - return (((c->transient_for != c->md->xroot) && (c->transient_for != None)) || - ((c->transient_for == c->md->xroot) && (c->group_leader != None))); + return (((c->transient_for != c->screen_info->xroot) && (c->transient_for != None)) || + ((c->transient_for == c->screen_info->xroot) && (c->group_leader != None))); } gboolean @@ -64,7 +64,7 @@ clientIsModal (Client * c) TRACE ("entering clientIsModal"); return (FLAG_TEST (c->flags, CLIENT_FLAG_STATE_MODAL) && - (((c->transient_for != c->md->xroot) && (c->transient_for != None)) || + (((c->transient_for != c->screen_info->xroot) && (c->transient_for != None)) || (c->group_leader != None))); } @@ -103,7 +103,7 @@ clientIsTransientFor (Client * c1, Client * c2) if ((c1->transient_for) && (c1->serial >= c2->serial)) { - if (c1->transient_for != c1->md->xroot) + if (c1->transient_for != c1->screen_info->xroot) { return (c1->transient_for == c2->window); } @@ -148,7 +148,7 @@ clientIsTransientForGroup (Client * c) TRACE ("entering clientIsTransientForGroup"); - return ((c->transient_for == c->md->xroot) && (c->group_leader != None)); + return ((c->transient_for == c->screen_info->xroot) && (c->group_leader != None)); } gboolean @@ -177,13 +177,15 @@ clientGetModalFor (Client * c) { Client *latest_modal = NULL; Client *c2, *c3; + ScreenInfo *screen_info; GList *modals = NULL; GList *index1, *index2; g_return_val_if_fail (c != NULL, NULL); TRACE ("entering clientGetModalFor"); - - for (index1 = windows_stack; index1; index1 = g_list_next (index1)) + + screen_info = c->screen_info; + for (index1 = screen_info->windows_stack; index1; index1 = g_list_next (index1)) { c2 = (Client *) index1->data; if (c2) @@ -221,14 +223,16 @@ clientGetModalFor (Client * c) GList * clientListTransient (Client * c) { + ScreenInfo *screen_info; GList *transients = NULL; GList *index1, *index2; Client *c2, *c3; g_return_val_if_fail (c != NULL, NULL); + screen_info = c->screen_info; transients = g_list_append (transients, c); - for (index1 = windows_stack; index1; index1 = g_list_next (index1)) + for (index1 = screen_info->windows_stack; index1; index1 = g_list_next (index1)) { c2 = (Client *) index1->data; if (c2 != c) @@ -259,14 +263,16 @@ clientListTransient (Client * c) GList * clientListTransientOrModal (Client * c) { + ScreenInfo *screen_info; GList *transients = NULL; GList *index1, *index2; Client *c2, *c3; g_return_val_if_fail (c != NULL, NULL); + screen_info = c->screen_info; transients = g_list_append (transients, c); - for (index1 = windows_stack; index1; index1 = g_list_next (index1)) + for (index1 = screen_info->windows_stack; index1; index1 = g_list_next (index1)) { c2 = (Client *) index1->data; if (c2 != c) diff --git a/src/workspaces.c b/src/workspaces.c index 602bdb9b2..d73447041 100644 --- a/src/workspaces.c +++ b/src/workspaces.c @@ -41,7 +41,7 @@ #include "hints.h" void -workspaceSwitch (ScreenData *md, int new_ws, Client * c2) +workspaceSwitch (ScreenInfo *screen_info, int new_ws, Client * c2) { Client *c, *new_focus = NULL; Client *previous; @@ -54,25 +54,25 @@ workspaceSwitch (ScreenData *md, int new_ws, Client * c2) TRACE ("entering workspaceSwitch"); - if (new_ws > params.workspace_count - 1) + if (new_ws > screen_info->workspace_count - 1) { new_ws = 0; } else if (new_ws < 0) { - new_ws = params.workspace_count - 1; + new_ws = screen_info->workspace_count - 1; } - if (new_ws == md->current_ws) + if (new_ws == screen_info->current_ws) { return; } /* Grab the pointer to avoid side effects with EnterNotify events */ - XGrabPointer (md->dpy, md->gnome_win, FALSE, EnterWindowMask, GrabModeAsync, + XGrabPointer (myScreenGetXDisplay (screen_info), screen_info->gnome_win, FALSE, EnterWindowMask, GrabModeAsync, GrabModeAsync, None, None, GDK_CURRENT_TIME); - md->current_ws = new_ws; + screen_info->current_ws = new_ws; if (c2) { clientSetWorkspace (c2, new_ws, FALSE); @@ -82,7 +82,7 @@ workspaceSwitch (ScreenData *md, int new_ws, Client * c2) previous = clientGetFocus (); /* First pass */ - for (index = windows_stack; index; index = g_list_next (index)) + for (index = screen_info->windows_stack; index; index = g_list_next (index)) { c = (Client *) index->data; if (FLAG_TEST_AND_NOT (c->flags, CLIENT_FLAG_VISIBLE, @@ -91,7 +91,7 @@ workspaceSwitch (ScreenData *md, int new_ws, Client * c2) if (c == previous) { FLAG_SET (previous->flags, CLIENT_FLAG_FOCUS); - clientSetFocus (md, NULL, GDK_CURRENT_TIME, FOCUS_IGNORE_MODAL); + clientSetFocus (screen_info, NULL, GDK_CURRENT_TIME, FOCUS_IGNORE_MODAL); } if (!clientIsTransientOrModal (c)) { @@ -117,7 +117,7 @@ workspaceSwitch (ScreenData *md, int new_ws, Client * c2) } /* Second pass */ - for (index = g_list_last(windows_stack); index; index = g_list_previous (index)) + for (index = g_list_last(screen_info->windows_stack); index; index = g_list_previous (index)) { c = (Client *) index->data; if (FLAG_TEST (c->flags, CLIENT_FLAG_STICKY | CLIENT_FLAG_VISIBLE)) @@ -144,20 +144,20 @@ workspaceSwitch (ScreenData *md, int new_ws, Client * c2) } } - setHint (md->dpy, md->xroot, win_workspace, new_ws); + setHint (myScreenGetXDisplay (screen_info), screen_info->xroot, win_workspace, new_ws); data[0] = new_ws; - XChangeProperty (md->dpy, md->xroot, net_current_desktop, XA_CARDINAL, 32, + XChangeProperty (myScreenGetXDisplay (screen_info), screen_info->xroot, net_current_desktop, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) data, 1); - workspaceUpdateArea (md); + workspaceUpdateArea (screen_info); /* Ungrab the pointer we grabbed before mapping/unmapping all windows */ - XUngrabPointer (md->dpy, GDK_CURRENT_TIME); + XUngrabPointer (myScreenGetXDisplay (screen_info), GDK_CURRENT_TIME); - if (!(params.click_to_focus)) + if (!(screen_info->params->click_to_focus)) { - if (!(c2) && (XQueryPointer (md->dpy, md->xroot, &dr, &window, &rx, &ry, &wx, &wy, &mask))) + if (!(c2) && (XQueryPointer (myScreenGetXDisplay (screen_info), screen_info->xroot, &dr, &window, &rx, &ry, &wx, &wy, &mask))) { - c = clientAtPosition (rx, ry, NULL); + c = clientAtPosition (screen_info, rx, ry, NULL); if (c) { new_focus = c; @@ -166,24 +166,24 @@ workspaceSwitch (ScreenData *md, int new_ws, Client * c2) } if (new_focus) { - clientSetFocus (new_focus->md, new_focus, GDK_CURRENT_TIME, NO_FOCUS_FLAG); + clientSetFocus (new_focus->screen_info, new_focus, GDK_CURRENT_TIME, NO_FOCUS_FLAG); } } void -workspaceSetNames (char *names, int length) +workspaceSetNames (ScreenInfo * screen_info, char *names, int length) { - if (params.workspace_names) + if (screen_info->workspace_names) { - g_free (params.workspace_names); + g_free (screen_info->workspace_names); } - params.workspace_names = names; - params.workspace_names_length = length; + screen_info->workspace_names = names; + screen_info->workspace_names_length = length; } void -workspaceSetCount (ScreenData * md, int count) +workspaceSetCount (ScreenInfo * screen_info, int count) { Client *c; int i; @@ -194,34 +194,34 @@ workspaceSetCount (ScreenData * md, int count) { count = 1; } - if (count == params.workspace_count) + if (count == screen_info->workspace_count) { return; } - setHint (md->dpy, md->xroot, win_workspace_count, count); - setHint (md->dpy, md->xroot, net_number_of_desktops, count); - params.workspace_count = count; + setHint (myScreenGetXDisplay (screen_info), screen_info->xroot, win_workspace_count, count); + setHint (myScreenGetXDisplay (screen_info), screen_info->xroot, net_number_of_desktops, count); + screen_info->workspace_count = count; - for (c = clients, i = 0; i < client_count; c = c->next, i++) + for (c = screen_info->clients, i = 0; i < screen_info->client_count; c = c->next, i++) { if (c->win_workspace > count - 1) { clientSetWorkspace (c, count - 1, TRUE); } } - if (md->current_ws > count - 1) + if (screen_info->current_ws > count - 1) { - workspaceSwitch (md, count - 1, NULL); + workspaceSwitch (screen_info, count - 1, NULL); } - setNetWorkarea (md->dpy, md->screen, params.workspace_count, - gdk_screen_get_width (md->gscr), - gdk_screen_get_height (md->gscr), - md->margins); + setNetWorkarea (myScreenGetXDisplay (screen_info), screen_info->screen, screen_info->workspace_count, + gdk_screen_get_width (screen_info->gscr), + gdk_screen_get_height (screen_info->gscr), + screen_info->margins); } void -workspaceUpdateArea (ScreenData *md) +workspaceUpdateArea (ScreenInfo *screen_info) { Client *c; int prev_top; @@ -230,41 +230,41 @@ workspaceUpdateArea (ScreenData *md) int prev_bottom; int i; - g_return_if_fail (md != NULL); - g_return_if_fail (md->margins != NULL); - g_return_if_fail (md->gnome_margins != NULL); + g_return_if_fail (screen_info != NULL); + g_return_if_fail (screen_info->margins != NULL); + g_return_if_fail (screen_info->gnome_margins != NULL); TRACE ("entering workspaceUpdateArea"); - prev_top = md->margins[TOP]; - prev_left = md->margins[LEFT]; - prev_right = md->margins[RIGHT]; - prev_bottom = md->margins[BOTTOM]; + prev_top = screen_info->margins[TOP]; + prev_left = screen_info->margins[LEFT]; + prev_right = screen_info->margins[RIGHT]; + prev_bottom = screen_info->margins[BOTTOM]; for (i = 0; i < 4; i++) { - md->margins[i] = md->gnome_margins[i]; + screen_info->margins[i] = screen_info->gnome_margins[i]; } - for (c = clients, i = 0; i < client_count; c = c->next, i++) + for (c = screen_info->clients, i = 0; i < screen_info->client_count; c = c->next, i++) { if (FLAG_TEST_ALL (c->flags, CLIENT_FLAG_HAS_STRUT | CLIENT_FLAG_VISIBLE)) { - md->margins[TOP] = MAX (md->margins[TOP], c->struts[TOP]); - md->margins[LEFT] = MAX (md->margins[LEFT], c->struts[LEFT]); - md->margins[RIGHT] = MAX (md->margins[RIGHT], c->struts[RIGHT]); - md->margins[BOTTOM] = MAX (md->margins[BOTTOM], c->struts[BOTTOM]); + screen_info->margins[TOP] = MAX (screen_info->margins[TOP], c->struts[TOP]); + screen_info->margins[LEFT] = MAX (screen_info->margins[LEFT], c->struts[LEFT]); + screen_info->margins[RIGHT] = MAX (screen_info->margins[RIGHT], c->struts[RIGHT]); + screen_info->margins[BOTTOM] = MAX (screen_info->margins[BOTTOM], c->struts[BOTTOM]); } } - if ((prev_top != md->margins[TOP]) || (prev_left != md->margins[LEFT]) - || (prev_right != md->margins[RIGHT]) - || (prev_bottom != md->margins[BOTTOM])) + if ((prev_top != screen_info->margins[TOP]) || (prev_left != screen_info->margins[LEFT]) + || (prev_right != screen_info->margins[RIGHT]) + || (prev_bottom != screen_info->margins[BOTTOM])) { TRACE ("Margins have changed, updating net_workarea"); - setNetWorkarea (md->dpy, md->screen, params.workspace_count, - gdk_screen_get_width (md->gscr), - gdk_screen_get_height (md->gscr), - md->margins); + setNetWorkarea (myScreenGetXDisplay (screen_info), screen_info->screen, screen_info->workspace_count, + gdk_screen_get_width (screen_info->gscr), + gdk_screen_get_height (screen_info->gscr), + screen_info->margins); } } diff --git a/src/workspaces.h b/src/workspaces.h index 78ddaae42..1651869ea 100644 --- a/src/workspaces.h +++ b/src/workspaces.h @@ -31,9 +31,9 @@ #include "screen.h" #include "client.h" -void workspaceSwitch (ScreenData *, int, Client *); -void workspaceSetNames (char *, int); -void workspaceSetCount (ScreenData *, int); -void workspaceUpdateArea (ScreenData *); +void workspaceSwitch (ScreenInfo *, int, Client *); +void workspaceSetNames (ScreenInfo *, char *, int); +void workspaceSetCount (ScreenInfo *, int); +void workspaceUpdateArea (ScreenInfo *); #endif /* INC_WORKSPACES_H */ |