LOGIN / SIGN UP

configure.ac
 
18 @@ -18,6 +18,14 @@
18 dnl scripts it seems.
19 AC_CHECK_PROG([SH], [sh], [/usr/xpg4/bin/sh], [/bin/sh], [/usr/xpg4/bin])
20
21 dnl Check for sun studio compiler and add -library=stlport4 compiler flag
22 dnl to make slist etc available.
23 AC_CHECK_DECL([__SUNPRO_CC], [SUNCC=yes], [SUNCC=no])
24 if test "x$SUNCC" = "xyes"; then
25 CPPFLAGS="$CPPFLAGS -library=stlport4"
26 CXXFLAGS="$CXXFLAGS -library=stlport4"
27 fi
28
29 dnl Check for iconv
30 AM_ICONV
31 if test "x$am_cv_func_iconv" != "xyes"; then
...
224 @@ -216,7 +224,34 @@
224
225 dnl Check for header files
226 AC_STDC_HEADERS
219 AC_CHECK_HEADERS([limits])
228 AC_CHECK_HEADERS([limits slist ext/slist])
229
230 dnl Check that at least one of slist or ext/slist exists
231 if test "x$av_cv_header_slist" = "xno" \
232 && test "x$av_cv_header_ext_slist" = "xno"; then
233 AC_MSG_ERROR([Could not find slist or ext/slist include.])
234 fi
235
236 dnl Detect namespace slist is available in
237 AC_TRY_COMPILE([
238 #ifdef HAVE_SLIST
239 #include <slist>
240 #else // HAVE_EXT_SLIST
241 #include <ext/slist>
242 #endif // HAVE_SLIST
243 ],[std::slist<int> test;],
244 AC_DEFINE(SLIST_NAMESPACE, [std], [Name of namespace slist is in])
245 slist_std_namespace=yes, [])
246 if test "x$slist_std_namespace" != "xyes"; then
247 AC_TRY_COMPILE([
248 #ifdef HAVE_SLIST
249 #include <slist>
250 #else // HAVE_EXT_SLIST
251 #include <ext/slist>
252 #endif // HAVE_SLIST
253 ],[__gnu_cxx::slist<int> test;],
254 AC_DEFINE(SLIST_NAMESPACE, [__gnu_cxx], [Name of namespace slist is in]), [])
255 fi
256
257 dnl Check for library functions
258 AC_CHECK_FUNC(setenv, [AC_DEFINE(HAVE_SETENV, [1], [Define to 1 if you the setenv systam call])], )
...

src/Compat.cc
 
36 @@ -36,35 +36,37 @@
36 * @param ... Formatting arguments.
37 * @return Number of characters written or -1 on error.
38 */
39 int
40 swprintf(wchar_t *wcs, size_t maxlen, const wchar_t *format, ...)
41 {
42 size_t len;
43 string mb_format(Util::to_mb_str(format));
44 namespace std {
45 int
46 swprintf(wchar_t *wcs, size_t maxlen, const wchar_t *format, ...)
47 {
48 size_t len;
49 string mb_format(Util::to_mb_str(format));
50
51 // Look for wide string formatting, not yet implemented.
52 if (mb_format.find("%ls") != string::npos) {
53 len = std::min(wcslen(SWPRINTF_LS_NOT_SUPPORTED), maxlen - 1);
54 wmemcpy(wcs, SWPRINTF_LS_NOT_SUPPORTED, len);
55 } else {
56 char *res = new char[maxlen];
57 // Look for wide string formatting, not yet implemented.
58 if (mb_format.find("%ls") != string::npos) {
59 len = std::min(wcslen(SWPRINTF_LS_NOT_SUPPORTED), maxlen - 1);
60 wmemcpy(wcs, SWPRINTF_LS_NOT_SUPPORTED, len);
61 } else {
62 char *res = new char[maxlen];
63
64 va_list ap;
65 va_start(ap, format);
66 vsnprintf(res, maxlen, mb_format.c_str(), ap);
67 va_end(ap);
68 va_list ap;
69 va_start(ap, format);
70 vsnprintf(res, maxlen, mb_format.c_str(), ap);
71 va_end(ap);
72
73 wstring w_res(Util::to_wide_str(res));
74 len = std::min(maxlen - 1, w_res.size());
75 wmemcpy(wcs, w_res.c_str(), len);
76 wstring w_res(Util::to_wide_str(res));
77 len = std::min(maxlen - 1, w_res.size());
78 wmemcpy(wcs, w_res.c_str(), len);
79
80 delete [] res;
81 }
82 delete [] res;
83 }
84
85 // Null terminate and return result.
86 wcs[len] = L'\0';
87 // Null terminate and return result.
88 wcs[len] = L'\0';
89
90 return wcslen(wcs);
91 return wcslen(wcs);
92 }
93 }
94 #endif // HAVE_SWPRINTF
95
...

src/FrameListMenu.cc
 
14 @@ -14,6 +14,7 @@
14
15 #include <algorithm>
16 #include <cstdio>
17 #include <cwchar>
18 #include <iostream>
19
20 #include "Compat.hh"
...
36 @@ -35,6 +36,7 @@
36 using std::string;
37 using std::vector;
38 using std::wstring;
39 using std::swprintf;
40
41 //! @brief FrameListMenu constructor.
42 //! @param scr Pointer to PScreen.
...
73 @@ -71,7 +73,9 @@
73
74 // END - PWinObj interface.
75
74 //! @brief
77 /**
78 * Execute item execution.
79 */
80 void
81 FrameListMenu::handleItemExec(PMenu::Item *item)
82 {
...
83 @@ -79,29 +83,25 @@
83 return;
84 }
85
82 if (! PWinObj::windowObjectExists(_wo_ref)) {
83 _wo_ref = 0;
84 }
85 if (! PWinObj::windowObjectExists(item->getWORef())) {
86 item->setWORef(0);
87 }
88
93 Client *item_client = dynamic_cast<Client*>(item->getWORef());
94 Client *wo_ref_client = dynamic_cast<Client*>(getWORef());
95
96 switch (_menu_type) {
97 case GOTOMENU_TYPE:
98 case GOTOCLIENTMENU_TYPE:
95 handleGotomenu(dynamic_cast<Client*>(item->getWORef()));
100 handleGotomenu(item_client);
101 break;
102 case ICONMENU_TYPE:
99 handleIconmenu(dynamic_cast<Client*>(item->getWORef()));
104 handleIconmenu(item_client);
105 break;
106 case ATTACH_CLIENT_TYPE:
107 case ATTACH_FRAME_TYPE:
104 handleAttach(dynamic_cast<Client*>(_wo_ref), dynamic_cast<Client*>(item->getWORef()),
109 handleAttach(wo_ref_client, item_client,
110 (_menu_type == ATTACH_FRAME_TYPE));
111 break;
112 case ATTACH_CLIENT_IN_FRAME_TYPE:
113 case ATTACH_FRAME_IN_FRAME_TYPE:
110 handleAttach(dynamic_cast<Client*>(item->getWORef()), dynamic_cast<Client*>(_wo_ref),
115 handleAttach(item_client, wo_ref_client,
116 (_menu_type == ATTACH_FRAME_IN_FRAME_TYPE));
117 break;
118 default:
...
147 @@ -147,7 +147,7 @@
147 if (((*it)->getWorkspace() == i) && // sort by workspace
148 // don't include ourselves if we're not doing a gotoclient menu
149 ((_menu_type != GOTOCLIENTMENU_TYPE)
150 ? ((*it)->getActiveChild() != _wo_ref)
151 ? ((*it)->getActiveChild() != getWORef())
152 : true) &&
153 (show_iconified_only
154 ? (*it)->isIconified()
...