Port getStringProperty to XCB
This commit is contained in:
parent
cefaa756e7
commit
dfec59c60e
4 changed files with 24 additions and 25 deletions
|
@ -11,7 +11,12 @@ set(kwin_rules_dialog_KDEINIT_SRCS main.cpp ${kwinrules_SRCS})
|
||||||
|
|
||||||
kde4_add_kdeinit_executable( kwin_rules_dialog ${kwin_rules_dialog_KDEINIT_SRCS})
|
kde4_add_kdeinit_executable( kwin_rules_dialog ${kwin_rules_dialog_KDEINIT_SRCS})
|
||||||
|
|
||||||
target_link_libraries(kdeinit_kwin_rules_dialog ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} ${X11_LIBRARIES} ${KACTIVITIES_LIBRARY})
|
set(kwin_kcm_rules_XCB_LIBS
|
||||||
|
${XCB_XCB_LIBRARIES}
|
||||||
|
${X11_XCB_LIBRARIES}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(kdeinit_kwin_rules_dialog ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} ${X11_LIBRARIES} ${KACTIVITIES_LIBRARY} ${kwin_kcm_rules_XCB_LIBS})
|
||||||
|
|
||||||
install(TARGETS kdeinit_kwin_rules_dialog ${INSTALL_TARGETS_DEFAULT_ARGS} )
|
install(TARGETS kdeinit_kwin_rules_dialog ${INSTALL_TARGETS_DEFAULT_ARGS} )
|
||||||
install(TARGETS kwin_rules_dialog DESTINATION ${LIBEXEC_INSTALL_DIR} )
|
install(TARGETS kwin_rules_dialog DESTINATION ${LIBEXEC_INSTALL_DIR} )
|
||||||
|
@ -23,7 +28,7 @@ set(kcm_kwinrules_PART_SRCS kcm.cpp ${kwinrules_SRCS})
|
||||||
|
|
||||||
kde4_add_plugin(kcm_kwinrules ${kcm_kwinrules_PART_SRCS})
|
kde4_add_plugin(kcm_kwinrules ${kcm_kwinrules_PART_SRCS})
|
||||||
|
|
||||||
target_link_libraries(kcm_kwinrules ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} ${X11_LIBRARIES} ${KACTIVITIES_LIBRARY})
|
target_link_libraries(kcm_kwinrules ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} ${X11_LIBRARIES} ${KACTIVITIES_LIBRARY} ${kwin_kcm_rules_XCB_LIBS})
|
||||||
|
|
||||||
install(TARGETS kcm_kwinrules DESTINATION ${PLUGIN_INSTALL_DIR} )
|
install(TARGETS kcm_kwinrules DESTINATION ${PLUGIN_INSTALL_DIR} )
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
namespace KWin {
|
namespace KWin {
|
||||||
|
|
||||||
// mock required function from utils
|
// mock required function from utils
|
||||||
QByteArray getStringProperty(WId w, Atom prop, char separator)
|
QByteArray getStringProperty(xcb_window_t w, xcb_atom_t prop, char separator)
|
||||||
{
|
{
|
||||||
Q_UNUSED(separator)
|
Q_UNUSED(separator)
|
||||||
ScopedCPointer<xcb_get_property_reply_t> property(xcb_get_property_reply(connection(),
|
ScopedCPointer<xcb_get_property_reply_t> property(xcb_get_property_reply(connection(),
|
||||||
|
|
30
utils.cpp
30
utils.cpp
|
@ -120,29 +120,23 @@ void Motif::readFlags(WId w, bool& got_noborder, bool& noborder,
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QByteArray getStringProperty(WId w, Atom prop, char separator)
|
QByteArray getStringProperty(xcb_window_t w, xcb_atom_t prop, char separator)
|
||||||
{
|
{
|
||||||
Atom type;
|
const xcb_get_property_cookie_t c = xcb_get_property_unchecked(connection(), false, w, prop,
|
||||||
int format, status;
|
XCB_ATOM_STRING, 0, 10000);
|
||||||
unsigned long nitems = 0;
|
ScopedCPointer<xcb_get_property_reply_t> property(xcb_get_property_reply(connection(), c, NULL));
|
||||||
unsigned long extra = 0;
|
if (property.isNull() || property->type == XCB_ATOM_NONE) {
|
||||||
unsigned char *data = 0;
|
return QByteArray();
|
||||||
QByteArray result = "";
|
}
|
||||||
KXErrorHandler handler; // ignore errors
|
char *data = static_cast<char*>(xcb_get_property_value(property.data()));
|
||||||
status = XGetWindowProperty(display(), w, prop, 0, 10000,
|
|
||||||
false, XA_STRING, &type, &format,
|
|
||||||
&nitems, &extra, &data);
|
|
||||||
if (status == Success) {
|
|
||||||
if (data && separator) {
|
if (data && separator) {
|
||||||
for (int i = 0; i < (int)nitems; i++)
|
for (uint32_t i = 0; i < property->value_len; ++i) {
|
||||||
if (!data[i] && i + 1 < (int)nitems)
|
if (!data[i] && i + 1 < property->value_len) {
|
||||||
data[i] = separator;
|
data[i] = separator;
|
||||||
}
|
}
|
||||||
if (data)
|
|
||||||
result = (const char*) data;
|
|
||||||
XFree(data);
|
|
||||||
}
|
}
|
||||||
return result;
|
}
|
||||||
|
return QByteArray(data, property->value_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef KCMRULES
|
#ifndef KCMRULES
|
||||||
|
|
2
utils.h
2
utils.h
|
@ -216,7 +216,7 @@ public:
|
||||||
ScopedCPointer(T *p = 0) : QScopedPointer<T, QScopedPointerPodDeleter>(p) {}
|
ScopedCPointer(T *p = 0) : QScopedPointer<T, QScopedPointerPodDeleter>(p) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
QByteArray getStringProperty(Window w, Atom prop, char separator = 0);
|
QByteArray getStringProperty(xcb_window_t w, xcb_atom_t prop, char separator = 0);
|
||||||
void updateXTime();
|
void updateXTime();
|
||||||
void grabXServer();
|
void grabXServer();
|
||||||
void ungrabXServer();
|
void ungrabXServer();
|
||||||
|
|
Loading…
Reference in a new issue