summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure20
-rw-r--r--configure.ac4
-rw-r--r--po/POTFILES.in5
-rw-r--r--po/ar.gmobin7488 -> 7488 bytes
-rw-r--r--po/ar.po74
-rw-r--r--po/az.gmobin6590 -> 6590 bytes
-rw-r--r--po/az.po74
-rw-r--r--po/bg.gmobin6370 -> 6370 bytes
-rw-r--r--po/bg.po74
-rw-r--r--po/ca.gmobin7616 -> 7616 bytes
-rw-r--r--po/ca.po74
-rw-r--r--po/cs.gmobin6232 -> 6232 bytes
-rw-r--r--po/cs.po74
-rw-r--r--po/de.gmobin7292 -> 7292 bytes
-rw-r--r--po/de.po74
-rw-r--r--po/es.gmobin6409 -> 6409 bytes
-rw-r--r--po/es.po74
-rw-r--r--po/es_MX.gmobin6146 -> 6146 bytes
-rw-r--r--po/es_MX.po74
-rw-r--r--po/eu.gmobin6363 -> 6363 bytes
-rw-r--r--po/eu.po74
-rw-r--r--po/fa_IR.gmobin8666 -> 8666 bytes
-rw-r--r--po/fa_IR.po74
-rw-r--r--po/fi.gmobin6208 -> 6208 bytes
-rw-r--r--po/fi.po74
-rw-r--r--po/fr.gmobin7593 -> 7509 bytes
-rw-r--r--po/fr.po77
-rw-r--r--po/hi.gmobin9203 -> 9203 bytes
-rw-r--r--po/hi.po74
-rw-r--r--po/hu.gmobin6622 -> 6622 bytes
-rw-r--r--po/hu.po74
-rw-r--r--po/it.gmobin6622 -> 6622 bytes
-rw-r--r--po/it.po74
-rw-r--r--po/ja.gmobin7017 -> 7017 bytes
-rw-r--r--po/ja.po74
-rw-r--r--po/ko.gmobin5333 -> 5333 bytes
-rw-r--r--po/ko.po74
-rw-r--r--po/lt.gmobin7537 -> 7460 bytes
-rw-r--r--po/lt.po80
-rw-r--r--po/ms.gmobin6982 -> 6982 bytes
-rw-r--r--po/ms.po74
-rw-r--r--po/nl.gmobin6189 -> 6189 bytes
-rw-r--r--po/nl.po74
-rw-r--r--po/pl.gmobin6022 -> 6022 bytes
-rw-r--r--po/pl.po74
-rw-r--r--po/pt_BR.gmobin5758 -> 5758 bytes
-rw-r--r--po/pt_BR.po74
-rw-r--r--po/pt_PT.gmobin5945 -> 5945 bytes
-rw-r--r--po/pt_PT.po74
-rw-r--r--po/ru.gmobin8014 -> 8014 bytes
-rw-r--r--po/ru.po74
-rw-r--r--po/sv.gmobin6135 -> 6135 bytes
-rw-r--r--po/sv.po74
-rw-r--r--po/ta.gmobin9991 -> 9991 bytes
-rw-r--r--po/ta.po74
-rw-r--r--po/tr.gmobin6440 -> 6440 bytes
-rw-r--r--po/tr.po74
-rw-r--r--po/uk.gmobin8300 -> 8300 bytes
-rw-r--r--po/uk.po74
-rw-r--r--po/vi.gmobin6807 -> 6807 bytes
-rw-r--r--po/vi.po74
-rw-r--r--po/xfwm4.pot74
-rw-r--r--po/zh_CN.gmobin6941 -> 6874 bytes
-rw-r--r--po/zh_CN.po77
-rw-r--r--po/zh_TW.gmobin6813 -> 6813 bytes
-rwxr-xr-xpo/zh_TW.po74
-rw-r--r--src/Makefile.am3
-rw-r--r--src/Makefile.in74
-rw-r--r--src/client.c864
-rw-r--r--src/client.h58
-rw-r--r--src/events.c712
-rw-r--r--src/events.h2
-rw-r--r--src/focus.c79
-rw-r--r--src/focus.h8
-rw-r--r--src/frame.c431
-rw-r--r--src/hints.c54
-rw-r--r--src/hints.h19
-rw-r--r--src/keyboard.h6
-rw-r--r--src/main.c249
-rw-r--r--src/menu.c10
-rw-r--r--src/menu.h4
-rw-r--r--src/misc.c64
-rw-r--r--src/misc.h22
-rw-r--r--src/mypixmap.c47
-rw-r--r--src/mypixmap.h31
-rw-r--r--src/mywindow.c33
-rw-r--r--src/mywindow.h51
-rw-r--r--src/netwm.c68
-rw-r--r--src/netwm.h2
-rw-r--r--src/parserc.c2
-rw-r--r--src/placement.c90
-rw-r--r--src/placement.h2
-rw-r--r--src/poswin.c1
-rw-r--r--src/screen.h89
-rw-r--r--src/session.c171
-rw-r--r--src/session.h4
-rw-r--r--src/settings.c904
-rw-r--r--src/settings.h43
-rw-r--r--src/spinning_cursor.c14
-rw-r--r--src/spinning_cursor.h4
-rw-r--r--src/stacking.c226
-rw-r--r--src/stacking.h16
-rw-r--r--src/startup_notification.c99
-rw-r--r--src/startup_notification.h6
-rw-r--r--src/tabwin.c2
-rw-r--r--src/transients.c28
-rw-r--r--src/workspaces.c110
-rw-r--r--src/workspaces.h8
108 files changed, 3606 insertions, 3513 deletions
diff --git a/configure b/configure
index 273e7269d..63d5b702a 100755
--- a/configure
+++ b/configure
@@ -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
diff --git a/po/ar.gmo b/po/ar.gmo
index 1ba46cfec..0d270cd68 100644
--- a/po/ar.gmo
+++ b/po/ar.gmo
Binary files differ
diff --git a/po/ar.po b/po/ar.po
index 4d5eeac3d..9a24d1521 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -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 ""
diff --git a/po/az.gmo b/po/az.gmo
index 47f923519..77c09298b 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index c8ba7410d..2d622399a 100644
--- a/po/az.po
+++ b/po/az.po
@@ -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 ""
diff --git a/po/bg.gmo b/po/bg.gmo
index 8c28349ac..ef32ba529 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 73b2f8871..9eb8c1f5f 100644
--- a/po/bg.po
+++ b/po/bg.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: 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 ""
diff --git a/po/ca.gmo b/po/ca.gmo
index f3f0b3ca8..28c565d6f 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 00b278845..4fcfa4413 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -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 ""
diff --git a/po/cs.gmo b/po/cs.gmo
index 1ab30f45f..9b99723ef 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index e87cd4971..f3d154363 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -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 ""
diff --git a/po/de.gmo b/po/de.gmo
index 8589818cb..a8fab2fbc 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 6fa243ded..2e01067e6 100644
--- a/po/de.po
+++ b/po/de.po
@@ -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 ""
diff --git a/po/es.gmo b/po/es.gmo
index 4f1b98664..0d9eec0fd 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 33759b86c..92c40df42 100644
--- a/po/es.po
+++ b/po/es.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: 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
index a466ac477..56a5b0eb1 100644
--- a/po/es_MX.gmo
+++ b/po/es_MX.gmo
Binary files differ
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 ""
diff --git a/po/eu.gmo b/po/eu.gmo
index 2193d2948..caf0420ad 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 5fa861afb..6148d4cfd 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -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
index 5a033ce4a..be9d00704 100644
--- a/po/fa_IR.gmo
+++ b/po/fa_IR.gmo
Binary files differ
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 ""
diff --git a/po/fi.gmo b/po/fi.gmo
index b0e1b4693..a1a88966e 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 9f25ade60..5d4e53591 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -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 ""
diff --git a/po/fr.gmo b/po/fr.gmo
index 3f4ef1ddb..9832a2864 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 199185c03..bf5983db9 100644
--- a/po/fr.po
+++ b/po/fr.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: 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"
diff --git a/po/hi.gmo b/po/hi.gmo
index d824cd430..8d609c93e 100644
--- a/po/hi.gmo
+++ b/po/hi.gmo
Binary files differ
diff --git a/po/hi.po b/po/hi.po
index efdf722c7..99767d864 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -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 ""
diff --git a/po/hu.gmo b/po/hu.gmo
index 28e2c7bc8..dfa1c1692 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index cae4df77e..936b62268 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -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 ""
diff --git a/po/it.gmo b/po/it.gmo
index 421c8d479..e1a2359bd 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 75d7cfd78..58b54deb7 100644
--- a/po/it.po
+++ b/po/it.po
@@ -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 ""
diff --git a/po/ja.gmo b/po/ja.gmo
index 187ea54d8..b7f32ea88 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index d902dabf2..d75ae91e5 100644
--- a/po/ja.po
+++ b/po/ja.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: 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 ""
diff --git a/po/ko.gmo b/po/ko.gmo
index 1bf8e33d0..a43c50d82 100644
--- a/po/ko.gmo
+++ b/po/ko.gmo
Binary files differ
diff --git a/po/ko.po b/po/ko.po
index fdf73feb9..717e7a55d 100644
--- a/po/ko.po
+++ b/po/ko.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: 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 ""
diff --git a/po/lt.gmo b/po/lt.gmo
index c216b4ca1..93cdbff94 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index 9b269fefb..525cf0e85 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -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"
diff --git a/po/ms.gmo b/po/ms.gmo
index 4c1add48f..53335f298 100644
--- a/po/ms.gmo
+++ b/po/ms.gmo
Binary files differ
diff --git a/po/ms.po b/po/ms.po
index 14da09881..aa550effb 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -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 ""
diff --git a/po/nl.gmo b/po/nl.gmo
index dc98211a0..cc8be6856 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index c060daec2..caf73fc4c 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -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 ""
diff --git a/po/pl.gmo b/po/pl.gmo
index cde306055..61940f700 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 6130f0538..a46284fbc 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -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
index c0c9b6ae0..d815f2344 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
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
index 33ae016b6..5ff75e8ea 100644
--- a/po/pt_PT.gmo
+++ b/po/pt_PT.gmo
Binary files differ
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 ""
diff --git a/po/ru.gmo b/po/ru.gmo
index 7ab681b94..fb23b2409 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 3f6dedc6c..4bf8ed799 100644
--- a/po/ru.po
+++ b/po/ru.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: 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 ""
diff --git a/po/sv.gmo b/po/sv.gmo
index baf5a7a94..0271f9c5f 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 588951348..01c11657c 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -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 ""
diff --git a/po/ta.gmo b/po/ta.gmo
index 279c8d4a8..08b61f199 100644
--- a/po/ta.gmo
+++ b/po/ta.gmo
Binary files differ
diff --git a/po/ta.po b/po/ta.po
index f61da3c6b..007431ef6 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -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 ""
diff --git a/po/tr.gmo b/po/tr.gmo
index a6d13ba00..df2fec670 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 0b95bcef7..1252fe965 100644
--- a/po/tr.po
+++ b/po/tr.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: 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 ""
diff --git a/po/uk.gmo b/po/uk.gmo
index bd861b264..0472a3571 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 3b8937259..454360765 100644
--- a/po/uk.po
+++ b/po/uk.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: 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 ""
diff --git a/po/vi.gmo b/po/vi.gmo
index e41909287..f3efeedca 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index ea0bb389d..b2983ffb1 100644
--- a/po/vi.po
+++ b/po/vi.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: 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
index 8eb59c88e..15adcbdfc 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
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
index 3ce809aa0..395f0b6f8 100644
--- a/po/zh_TW.gmo
+++ b/po/zh_TW.gmo
Binary files differ
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, &params.keys[KEY_MOVE_UP], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_DOWN], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_LEFT], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_RIGHT], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_RESIZE_UP], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_RESIZE_DOWN], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_RESIZE_LEFT], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_RESIZE_RIGHT], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_CLOSE_WINDOW], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_HIDE_WINDOW], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MAXIMIZE_WINDOW], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MAXIMIZE_VERT], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MAXIMIZE_HORIZ], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_SHADE_WINDOW], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_STICK_WINDOW], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_RAISE_WINDOW], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_LOWER_WINDOW], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_CYCLE_WINDOWS], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_NEXT_WORKSPACE], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_PREV_WORKSPACE], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_ADD_WORKSPACE], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_DEL_WORKSPACE], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_WORKSPACE_1], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_WORKSPACE_2], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_WORKSPACE_3], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_WORKSPACE_4], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_WORKSPACE_5], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_WORKSPACE_6], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_WORKSPACE_7], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_WORKSPACE_8], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_WORKSPACE_9], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_NEXT_WORKSPACE], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_PREV_WORKSPACE], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_WORKSPACE_1], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_WORKSPACE_2], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_WORKSPACE_3], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_WORKSPACE_4], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_WORKSPACE_5], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_WORKSPACE_6], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_WORKSPACE_7], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_WORKSPACE_8], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_MOVE_WORKSPACE_9], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_SHORTCUT_1], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_SHORTCUT_2], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_SHORTCUT_3], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_SHORTCUT_4], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_SHORTCUT_5], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_SHORTCUT_6], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_SHORTCUT_7], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_SHORTCUT_8], c->window);
- grabKey (c->md->dpy, &params.keys[KEY_SHORTCUT_9], c->window);
- grabKey (c->md->dpy, &params.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(&copy_event, ev, sizeof(XEvent));
- tclick = typeOfClick (c->md, c->frame, &copy_event, TRUE);
+ tclick = typeOfClick (display_info, c->frame, &copy_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(&copy_event, ev, sizeof(XEvent));
- tclick = typeOfClick (c->md, c->frame, &copy_event, FALSE);
+ tclick = typeOfClick (display_info, c->frame, &copy_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(&copy_event, ev, sizeof(XEvent));
- tclick = typeOfClick (c->md, c->frame, &copy_event, TRUE);
+ tclick = typeOfClick (display_info, c->frame, &copy_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 &params.buttons[SHADE_BUTTON][state + 3];
+ return &screen_info->buttons[SHADE_BUTTON][state + 3];
}
- return &params.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 &params.buttons[STICK_BUTTON][state + 3];
+ return &screen_info->buttons[STICK_BUTTON][state + 3];
}
- return &params.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 &params.buttons[MAXIMIZE_BUTTON][state + 3];
+ return &screen_info->buttons[MAXIMIZE_BUTTON][state + 3];
}
- return &params.buttons[MAXIMIZE_BUTTON][state];
+ return &screen_info->buttons[MAXIMIZE_BUTTON][state];
break;
default:
break;
}
- return &params.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),
- &params.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, &params.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),
- &params.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,
- &params.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),
- &params.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, &params.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),
- &params.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,
- &params.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, &params.sides[SIDE_LEFT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_LEFT][ACTIVE], theme,
"left-active", colsym, 20);
- myPixmapLoad (md, &params.sides[SIDE_LEFT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_LEFT][INACTIVE], theme,
"left-inactive", colsym, 20);
- myPixmapLoad (md, &params.sides[SIDE_RIGHT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_RIGHT][ACTIVE], theme,
"right-active", colsym, 20);
- myPixmapLoad (md, &params.sides[SIDE_RIGHT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_RIGHT][INACTIVE], theme,
"right-inactive", colsym, 20);
- myPixmapLoad (md, &params.sides[SIDE_BOTTOM][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_BOTTOM][ACTIVE], theme,
"bottom-active", colsym, 20);
- myPixmapLoad (md, &params.sides[SIDE_BOTTOM][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_BOTTOM][INACTIVE], theme,
"bottom-inactive", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_TOP_LEFT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_LEFT][ACTIVE], theme,
"top-left-active", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_TOP_LEFT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_LEFT][INACTIVE], theme,
"top-left-inactive", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_TOP_RIGHT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_RIGHT][ACTIVE], theme,
"top-right-active", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_TOP_RIGHT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_RIGHT][INACTIVE], theme,
"top-right-inactive", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_BOTTOM_LEFT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE], theme,
"bottom-left-active", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_BOTTOM_LEFT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_LEFT][INACTIVE], theme,
"bottom-left-inactive", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_BOTTOM_RIGHT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE], theme,
"bottom-right-active", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_BOTTOM_RIGHT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_RIGHT][INACTIVE], theme,
"bottom-right-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[HIDE_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][ACTIVE], theme,
"hide-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[HIDE_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][INACTIVE], theme,
"hide-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[HIDE_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][PRESSED], theme,
"hide-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[CLOSE_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][ACTIVE], theme,
"close-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[CLOSE_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][INACTIVE], theme,
"close-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[CLOSE_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][PRESSED], theme,
"close-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][ACTIVE], theme,
"maximize-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][INACTIVE], theme,
"maximize-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][PRESSED], theme,
"maximize-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][ACTIVE], theme,
"shade-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][INACTIVE], theme,
"shade-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][PRESSED], theme,
"shade-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][ACTIVE], theme,
"stick-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][INACTIVE], theme,
"stick-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][PRESSED], theme,
"stick-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[MENU_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][ACTIVE], theme,
"menu-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[MENU_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][INACTIVE], theme,
"menu-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[MENU_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][PRESSED], theme,
"menu-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][T_ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_ACTIVE], theme,
"shade-toggled-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][T_INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_INACTIVE], theme,
"shade-toggled-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][T_PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_PRESSED], theme,
"shade-toggled-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][T_ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_ACTIVE], theme,
"stick-toggled-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][T_INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_INACTIVE], theme,
"stick-toggled-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][T_PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_PRESSED], theme,
"stick-toggled-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][T_ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_ACTIVE], theme,
"maximize-toggled-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][T_INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_INACTIVE], theme,
"maximize-toggled-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][T_PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_PRESSED], theme,
"maximize-toggled-pressed", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_1][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_1][ACTIVE], theme,
"title-1-active", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_1][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_1][INACTIVE], theme,
"title-1-inactive", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_2][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_2][ACTIVE], theme,
"title-2-active", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_2][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_2][INACTIVE], theme,
"title-2-inactive", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_3][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_3][ACTIVE], theme,
"title-3-active", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_3][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_3][INACTIVE], theme,
"title-3-inactive", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_4][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_4][ACTIVE], theme,
"title-4-active", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_4][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_4][INACTIVE], theme,
"title-4-inactive", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_5][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_5][ACTIVE], theme,
"title-5-active", colsym, 20);
- myPixmapLoad (md, &params.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, &params.keys[KEY_MOVE_UP],
- getValue ("move_window_up_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_DOWN],
- getValue ("move_window_down_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_LEFT],
- getValue ("move_window_left_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_RIGHT],
- getValue ("move_window_right_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_RESIZE_UP],
- getValue ("resize_window_up_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_RESIZE_DOWN],
- getValue ("resize_window_down_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_RESIZE_LEFT],
- getValue ("resize_window_left_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_RESIZE_RIGHT],
- getValue ("resize_window_right_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_CYCLE_WINDOWS],
- getValue ("cycle_windows_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_CLOSE_WINDOW],
- getValue ("close_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_HIDE_WINDOW],
- getValue ("hide_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MAXIMIZE_WINDOW],
- getValue ("maximize_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MAXIMIZE_VERT],
- getValue ("maximize_vert_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MAXIMIZE_HORIZ],
- getValue ("maximize_horiz_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHADE_WINDOW],
- getValue ("shade_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_NEXT_WORKSPACE],
- getValue ("next_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_PREV_WORKSPACE],
- getValue ("prev_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_ADD_WORKSPACE],
- getValue ("add_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_DEL_WORKSPACE],
- getValue ("del_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_STICK_WINDOW],
- getValue ("stick_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_1],
- getValue ("workspace_1_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_2],
- getValue ("workspace_2_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_3],
- getValue ("workspace_3_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_4],
- getValue ("workspace_4_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_5],
- getValue ("workspace_5_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_6],
- getValue ("workspace_6_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_7],
- getValue ("workspace_7_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_8],
- getValue ("workspace_8_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_9],
- getValue ("workspace_9_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_NEXT_WORKSPACE],
- getValue ("move_window_next_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_PREV_WORKSPACE],
- getValue ("move_window_prev_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_1],
- getValue ("move_window_workspace_1_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_2],
- getValue ("move_window_workspace_2_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_3],
- getValue ("move_window_workspace_3_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_4],
- getValue ("move_window_workspace_4_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_5],
- getValue ("move_window_workspace_5_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_6],
- getValue ("move_window_workspace_6_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_7],
- getValue ("move_window_workspace_7_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_8],
- getValue ("move_window_workspace_8_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_9],
- getValue ("move_window_workspace_9_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_1],
- getValue ("shortcut_1_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_2],
- getValue ("shortcut_2_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_3],
- getValue ("shortcut_3_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_4],
- getValue ("shortcut_4_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_5],
- getValue ("shortcut_5_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_6],
- getValue ("shortcut_6_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_7],
- getValue ("shortcut_7_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_8],
- getValue ("shortcut_8_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_9],
- getValue ("shortcut_9_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_10],
- getValue ("shortcut_10_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_RAISE_WINDOW],
- getValue ("raise_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_LOWER_WINDOW],
- getValue ("lower_window_key", rc));
- ungrabKeys (md->dpy, md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_CYCLE_WINDOWS], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_NEXT_WORKSPACE], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_PREV_WORKSPACE], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_ADD_WORKSPACE], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_NEXT_WORKSPACE], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_1], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_2], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_3], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_4], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_5], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_6], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_7], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_8], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_9], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_1], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_2], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_3], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_4], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_5], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_6], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_7], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_8], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_9], md->gnome_win);
- grabKey (md->dpy, &params.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 (&params.sides[i][ACTIVE]);
- myPixmapFree (&params.sides[i][INACTIVE]);
+ xfwmPixmapFree (&screen_info->sides[i][ACTIVE]);
+ xfwmPixmapFree (&screen_info->sides[i][INACTIVE]);
}
for (i = 0; i < 4; i++)
{
- myPixmapFree (&params.corners[i][ACTIVE]);
- myPixmapFree (&params.corners[i][INACTIVE]);
+ xfwmPixmapFree (&screen_info->corners[i][ACTIVE]);
+ xfwmPixmapFree (&screen_info->corners[i][INACTIVE]);
}
for (i = 0; i < BUTTON_COUNT; i++)
{
- myPixmapFree (&params.buttons[i][ACTIVE]);
- myPixmapFree (&params.buttons[i][INACTIVE]);
- myPixmapFree (&params.buttons[i][PRESSED]);
- myPixmapFree (&params.buttons[i][T_ACTIVE]);
- myPixmapFree (&params.buttons[i][T_INACTIVE]);
- myPixmapFree (&params.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 (&params.title[i][ACTIVE]);
- myPixmapFree (&params.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 (&params.sides[i][ACTIVE]);
- myPixmapInit (&params.sides[i][INACTIVE]);
- }
- for (i = 0; i < 4; i++)
- {
- myPixmapInit (&params.corners[i][ACTIVE]);
- myPixmapInit (&params.corners[i][INACTIVE]);
+ screen_info->params->shortcut_exec[i] = NULL;
}
- for (i = 0; i < BUTTON_COUNT; i++)
- {
- myPixmapInit (&params.buttons[i][ACTIVE]);
- myPixmapInit (&params.buttons[i][INACTIVE]);
- myPixmapInit (&params.buttons[i][PRESSED]);
- myPixmapInit (&params.buttons[i][T_ACTIVE]);
- myPixmapInit (&params.buttons[i][T_INACTIVE]);
- myPixmapInit (&params.buttons[i][T_PRESSED]);
- }
- for (i = 0; i < 5; i++)
- {
- myPixmapInit (&params.title[i][ACTIVE]);
- myPixmapInit (&params.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 */