[rkward-cvs] SF.net SVN: rkward: [939] trunk/rkward/rkward
tfry at users.sourceforge.net
tfry at users.sourceforge.net
Sun Nov 26 17:45:34 UTC 2006
Revision: 939
http://svn.sourceforge.net/rkward/?rev=939&view=rev
Author: tfry
Date: 2006-11-26 09:45:34 -0800 (Sun, 26 Nov 2006)
Log Message:
-----------
Move rkwindowcatcher.* from rbackend to windows
Modified Paths:
--------------
trunk/rkward/rkward/rbackend/Makefile.am
trunk/rkward/rkward/rbackend/rinterface.cpp
trunk/rkward/rkward/windows/Makefile.am
trunk/rkward/rkward/windows/rkworkplace.cpp
Added Paths:
-----------
trunk/rkward/rkward/windows/rkwindowcatcher.cpp
trunk/rkward/rkward/windows/rkwindowcatcher.h
Removed Paths:
-------------
trunk/rkward/rkward/rbackend/rkwindowcatcher.cpp
trunk/rkward/rkward/rbackend/rkwindowcatcher.h
Modified: trunk/rkward/rkward/rbackend/Makefile.am
===================================================================
--- trunk/rkward/rkward/rbackend/Makefile.am 2006-11-26 17:40:56 UTC (rev 938)
+++ trunk/rkward/rkward/rbackend/Makefile.am 2006-11-26 17:45:34 UTC (rev 939)
@@ -5,7 +5,7 @@
noinst_LIBRARIES = librbackend.a
librbackend_a_SOURCES = rembedinternal.cpp rinterface.cpp rthread.cpp rcommand.cpp rcommandreceiver.cpp rcommandstack.cpp \
-rkwindowcatcher.cpp rdata.cpp
+rdata.cpp
noinst_HEADERS = rembedinternal.h rinterface.h rthread.h rcommand.h rcommandreceiver.h rcommandstack.h \
-rkwindowcatcher.h rdata.h
+rdata.h
SUBDIRS = rpackages
Modified: trunk/rkward/rkward/rbackend/rinterface.cpp
===================================================================
--- trunk/rkward/rkward/rbackend/rinterface.cpp 2006-11-26 17:40:56 UTC (rev 938)
+++ trunk/rkward/rkward/rbackend/rinterface.cpp 2006-11-26 17:45:34 UTC (rev 939)
@@ -32,7 +32,7 @@
#include "../windows/rcontrolwindow.h"
#include "../windows/rkworkplace.h"
-#include "rkwindowcatcher.h"
+#include "../windows/rkwindowcatcher.h"
#ifndef DISABLE_RKWINDOWCATCHER
// putting this here instead of the class-header so I'm able to mess with it often without long recompiles. Fix when it works!
RKWindowCatcher *window_catcher;
Deleted: trunk/rkward/rkward/rbackend/rkwindowcatcher.cpp
===================================================================
--- trunk/rkward/rkward/rbackend/rkwindowcatcher.cpp 2006-11-26 17:40:56 UTC (rev 938)
+++ trunk/rkward/rkward/rbackend/rkwindowcatcher.cpp 2006-11-26 17:45:34 UTC (rev 939)
@@ -1,128 +0,0 @@
-/***************************************************************************
- rwindowcatcher.cpp - description
- -------------------
- begin : Wed May 4 2005
- copyright : (C) 2005 by Thomas Friedrichsmeier
- email : tfry at users.sourceforge.net
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-
-#include "rkwindowcatcher.h"
-
-#ifndef DISABLE_RKWINDOWCATCHER
-
-#include <qlayout.h>
-#include <qvbox.h>
-
-#include <kmessagebox.h>
-#include <klocale.h>
-#include <kwin.h>
-
-#include "../rkwardapplication.h"
-#include "../windows/rkworkplace.h"
-#include "../windows/qxembedcopy.h"
-#include "../debug.h"
-
-RKWindowCatcher::RKWindowCatcher (QWidget *parent) : QWidget (parent) {
- RK_TRACE (MISC);
-}
-
-RKWindowCatcher::~RKWindowCatcher () {
- RK_TRACE (MISC);
-}
-
-void RKWindowCatcher::start (int prev_cur_device) {
- RK_TRACE (MISC);
- RK_DO (qDebug ("Window Catcher activated"), RBACKEND, DL_DEBUG);
-
- RKWardApplication::getApp ()->startWindowCreationDetection ();
- last_cur_device = prev_cur_device;
-}
-
-void RKWindowCatcher::stop (int new_cur_device) {
- RK_TRACE (MISC);
- RK_DO (qDebug ("Window Catcher deactivated"), RBACKEND, DL_DEBUG);
-
- if (new_cur_device != last_cur_device) {
- WId w = RKWardApplication::getApp ()->endWindowCreationDetection ();
-
- if (w) {
- RKWorkplace::mainWorkplace ()->newX11Window (w, new_cur_device);
- //new RKCatchedX11Window (w, new_cur_device);
- } else {
- KMessageBox::sorry (0, i18n ("You have created a new X11 device window in R. Usually, RKWard tries to detect such windows, to take control of them, and add a menu-bar to them. This time, however, RKWard failed to detect, which window was created, and so can not embed it.\nIf you created the window on a different screen or X11 display, that is to be expected. You might want to consider changing options(\"display\"), then.\nIf you can see the X11 window on the same screen as this message, then RKWard should do better. In this case, please contact us at rkward-devel at lists.sourceforge.net with details on your setup, so we can try to fix this in future versions of RKWard."), i18n ("Could not embed R X11 window"));
- }
- }
- last_cur_device = new_cur_device;
-}
-
-
-
-
-RKCatchedX11Window::RKCatchedX11Window (WId window_to_embed, int device_number) : RKMDIWindow (0, X11Window) {
- RK_TRACE (MISC);
-
- part = new RKCatchedX11WindowPart (this);
- setFocusPolicy (QWidget::ClickFocus);
-
- embedded = window_to_embed;
- RKCatchedX11Window::device_number = device_number;
-
- QVBoxLayout *layout = new QVBoxLayout (this);
- QXEmbedCopy *capture = new QXEmbedCopy (this);
- capture->setProtocol (QXEmbedCopy::XPLAIN);
- connect (capture, SIGNAL (embeddedWindowDestroyed ()), this, SLOT (deleteLater ()));
- layout->addWidget (capture);
-
- KWin::WindowInfo wininfo = KWin::windowInfo (window_to_embed);
- setGeometry (wininfo.frameGeometry ());
- setCaption (wininfo.name ());
- capture->embed (window_to_embed);
-
- RKWardApplication::getApp ()->registerNameWatcher (window_to_embed, this);
-
- show ();
-}
-
-RKCatchedX11Window::~RKCatchedX11Window () {
- RK_TRACE (MISC);
-
- RKWardApplication::getApp ()->unregisterNameWatcher (embedded);
-}
-
-KParts::Part *RKCatchedX11Window::getPart () {
- RK_TRACE (MISC);
-
- return part;
-}
-
-
-
-
-RKCatchedX11WindowPart::RKCatchedX11WindowPart (RKCatchedX11Window *window) : KParts::Part (0) {
- RK_TRACE (MISC);
-
- KInstance* instance = new KInstance ("rkward");
- setInstance (instance);
-
- setWidget (window);
- RKCatchedX11WindowPart::window = window;
-
- setXMLFile ("rkcatchedx11windowpart.rc");
-}
-
-RKCatchedX11WindowPart::~RKCatchedX11WindowPart () {
- RK_TRACE (MISC);
-}
-
-#include "rkwindowcatcher.moc"
-
-#endif // DISABLE_RKWINDOWCATCHER
Deleted: trunk/rkward/rkward/rbackend/rkwindowcatcher.h
===================================================================
--- trunk/rkward/rkward/rbackend/rkwindowcatcher.h 2006-11-26 17:40:56 UTC (rev 938)
+++ trunk/rkward/rkward/rbackend/rkwindowcatcher.h 2006-11-26 17:45:34 UTC (rev 939)
@@ -1,113 +0,0 @@
-/***************************************************************************
- rwindowcatcher.h - description
- -------------------
- begin : Wed May 4 2005
- copyright : (C) 2005 by Thomas Friedrichsmeier
- email : tfry at users.sourceforge.net
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-
-#ifndef RKWINDOWCATCHER_H
-#define RKWINDOWCATCHER_H
-
-//#define DISABLE_RKWINDOWCATCHER
-#ifndef DISABLE_RKWINDOWCATCHER
-
-#include <qwidget.h>
-
-/** This class will be used to find out, when R opens a new X11-device, find out the id of that device and embed it into a QWidget.
-
-Unfortunately this does not work, yet. Right when trying to embed the window, there is a crash (R segfaults; this also happens when trying to catch a window from another separate R process, so it really seems to be R's fault!). Therefore this class is currently deactivated.
-To reactivate it, modify the corresponding Makefile.am, uncomment the x11-override in rpackages/rkward/R/internal.R, and uncomment the
-window_catcher/RKWindowCatcher lines in rinterface.h and rinterface.cpp. Maybe I'll add some #ifdefs instead...
-
-Given the problems with fetching the window Id (currently only possible by searching for the window title), it's probably a lot easier to instead create a single R call: .rk.catch.window (title="R Graphics: Device...", graph_device_number) that will directly trigger catching.
-
-
-Here are some more notes I have taken on the subject of catching R's x11 windows. Current approach is Plan C for simplicity.
-- Plan A:
- - initialization function seems to be in_do_X11
- - it might be possible to put a wrapper around this using R_setX11Routines
- - this wrapper could watch the list of devices (curDevice, numDevices), see also addDevice to find out how the list is kept internally
- - if a new device gets added grab its winId and capture (using QXEmbed?)!
-- Plan B:
- - it looks like there's no way to get acces to R_setX11Routines or at least the needed struct R_X11Routines. (?)
- - the level above that seems to be do_X11
- - maybe we can modify the mapping from .Internal (X11) to do_X11 and insert wrapper from Plan A -> R_FunTab
- - proceed like in Plan A
- - less preferable as C-plugins might be able to call do_X11 directly (can they?)
-- Plan C:
- - modify at R level (override X11 ())
- - notify app right before device is created
- - notify app right after device is created
- - least preferable solution as we can not be sure we catch every use.
- - but definitely most. This is dispatched via CurrentDevice ()->options("device"), and then evalued in R_GlobalEnv
-- remaining problem: how to get the window id given the device id?
- - http://tronche.com/gui/x/xlib/events/window-state-change/create.html#XCreateWindowEvent
- - for active / inactive: XPropertyEvent WM_NAME
- - we may catch this using KApplication::installX11EventFilter
- - XSelectInput -> QWidget::x11Event()?
- - event filter should only be active during the wrapper (Plan A-C)
- - event filter should probably do some sanity checking
- - this should give us the window id corresponding to the x11-call
-
- at author Thomas Friedrichsmeier
-*/
-class RKWindowCatcher : public QWidget {
- Q_OBJECT
-public:
- RKWindowCatcher (QWidget *parent);
-
- ~RKWindowCatcher ();
-
- void start (int prev_cur_device);
- void stop (int new_cur_device);
-private:
- int last_cur_device;
-};
-
-#include "../windows/rkmdiwindow.h"
-
-class RKCatchedX11WindowPart;
-
-/** An R X11 device window managed by rkward */
-class RKCatchedX11Window : public RKMDIWindow {
- Q_OBJECT
-public:
- RKCatchedX11Window (WId window_to_embed, int device_number);
-
- ~RKCatchedX11Window ();
-
- KParts::Part *getPart ();
- QString getRDescription () { return "unimplemtend"; };
- bool isModified () { return false; };
-private:
- int device_number;
- WId embedded;
- RKCatchedX11WindowPart *part;
-};
-
-class RKCatchedX11WindowPart : public KParts::Part {
- Q_OBJECT
-public:
-/** constructor.
- at param console The console for this part */
- RKCatchedX11WindowPart (RKCatchedX11Window *window);
-/** destructor */
- ~RKCatchedX11WindowPart ();
-public slots:
-// TODO
-private:
- RKCatchedX11Window *window;
-};
-
-#endif //DISABLE_RKWINDOWCATCHER
-#endif
Modified: trunk/rkward/rkward/windows/Makefile.am
===================================================================
--- trunk/rkward/rkward/windows/Makefile.am 2006-11-26 17:40:56 UTC (rev 938)
+++ trunk/rkward/rkward/windows/Makefile.am 2006-11-26 17:45:34 UTC (rev 939)
@@ -3,10 +3,10 @@
noinst_LIBRARIES = libwindows.a
noinst_HEADERS = rkcommandeditorwindow.h rkcommandeditorwindowpart.h \
rkhtmlwindow.h rcontrolwindow.h detachedwindowcontainer.h rkmdiwindow.h \
- rkworkplaceview.h rkworkplace.h qxembedcopy.h
+ rkworkplaceview.h rkworkplace.h qxembedcopy.h rkwindowcatcher.h
libwindows_a_SOURCES = rkcommandeditorwindow.cpp rkcommandeditorwindowpart.cpp \
rkhtmlwindow.cpp rcontrolwindow.cpp detachedwindowcontainer.cpp rkmdiwindow.cpp \
- rkworkplaceview.cpp rkworkplace.cpp qxembedcopy.cpp
+ rkworkplaceview.cpp rkworkplace.cpp qxembedcopy.cpp rkwindowcatcher.cpp
rcdir = $(kde_datadir)/rkward
rc_DATA = rkcommandeditorwindowpart.rc rkoutputwindow.rc rkhelpwindow.rc detachedwindowcontainer.rc \
rkcatchedx11windowpart.rc
Copied: trunk/rkward/rkward/windows/rkwindowcatcher.cpp (from rev 938, trunk/rkward/rkward/rbackend/rkwindowcatcher.cpp)
===================================================================
--- trunk/rkward/rkward/windows/rkwindowcatcher.cpp (rev 0)
+++ trunk/rkward/rkward/windows/rkwindowcatcher.cpp 2006-11-26 17:45:34 UTC (rev 939)
@@ -0,0 +1,128 @@
+/***************************************************************************
+ rwindowcatcher.cpp - description
+ -------------------
+ begin : Wed May 4 2005
+ copyright : (C) 2005, 2006 by Thomas Friedrichsmeier
+ email : tfry at users.sourceforge.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "rkwindowcatcher.h"
+
+#ifndef DISABLE_RKWINDOWCATCHER
+
+#include <qlayout.h>
+#include <qvbox.h>
+
+#include <kmessagebox.h>
+#include <klocale.h>
+#include <kwin.h>
+
+#include "../rkwardapplication.h"
+#include "rkworkplace.h"
+#include "qxembedcopy.h"
+#include "../debug.h"
+
+RKWindowCatcher::RKWindowCatcher (QWidget *parent) : QWidget (parent) {
+ RK_TRACE (MISC);
+}
+
+RKWindowCatcher::~RKWindowCatcher () {
+ RK_TRACE (MISC);
+}
+
+void RKWindowCatcher::start (int prev_cur_device) {
+ RK_TRACE (MISC);
+ RK_DO (qDebug ("Window Catcher activated"), RBACKEND, DL_DEBUG);
+
+ RKWardApplication::getApp ()->startWindowCreationDetection ();
+ last_cur_device = prev_cur_device;
+}
+
+void RKWindowCatcher::stop (int new_cur_device) {
+ RK_TRACE (MISC);
+ RK_DO (qDebug ("Window Catcher deactivated"), RBACKEND, DL_DEBUG);
+
+ if (new_cur_device != last_cur_device) {
+ WId w = RKWardApplication::getApp ()->endWindowCreationDetection ();
+
+ if (w) {
+ RKWorkplace::mainWorkplace ()->newX11Window (w, new_cur_device);
+ //new RKCatchedX11Window (w, new_cur_device);
+ } else {
+ KMessageBox::sorry (0, i18n ("You have created a new X11 device window in R. Usually, RKWard tries to detect such windows, to take control of them, and add a menu-bar to them. This time, however, RKWard failed to detect, which window was created, and so can not embed it.\nIf you created the window on a different screen or X11 display, that is to be expected. You might want to consider changing options(\"display\"), then.\nIf you can see the X11 window on the same screen as this message, then RKWard should do better. In this case, please contact us at rkward-devel at lists.sourceforge.net with details on your setup, so we can try to fix this in future versions of RKWard."), i18n ("Could not embed R X11 window"));
+ }
+ }
+ last_cur_device = new_cur_device;
+}
+
+
+
+
+RKCatchedX11Window::RKCatchedX11Window (WId window_to_embed, int device_number) : RKMDIWindow (0, X11Window) {
+ RK_TRACE (MISC);
+
+ part = new RKCatchedX11WindowPart (this);
+ setFocusPolicy (QWidget::ClickFocus);
+
+ embedded = window_to_embed;
+ RKCatchedX11Window::device_number = device_number;
+
+ QVBoxLayout *layout = new QVBoxLayout (this);
+ QXEmbedCopy *capture = new QXEmbedCopy (this);
+ capture->setProtocol (QXEmbedCopy::XPLAIN);
+ connect (capture, SIGNAL (embeddedWindowDestroyed ()), this, SLOT (deleteLater ()));
+ layout->addWidget (capture);
+
+ KWin::WindowInfo wininfo = KWin::windowInfo (window_to_embed);
+ setGeometry (wininfo.frameGeometry ());
+ setCaption (wininfo.name ());
+ capture->embed (window_to_embed);
+
+ RKWardApplication::getApp ()->registerNameWatcher (window_to_embed, this);
+
+ show ();
+}
+
+RKCatchedX11Window::~RKCatchedX11Window () {
+ RK_TRACE (MISC);
+
+ RKWardApplication::getApp ()->unregisterNameWatcher (embedded);
+}
+
+KParts::Part *RKCatchedX11Window::getPart () {
+ RK_TRACE (MISC);
+
+ return part;
+}
+
+
+
+
+RKCatchedX11WindowPart::RKCatchedX11WindowPart (RKCatchedX11Window *window) : KParts::Part (0) {
+ RK_TRACE (MISC);
+
+ KInstance* instance = new KInstance ("rkward");
+ setInstance (instance);
+
+ setWidget (window);
+ RKCatchedX11WindowPart::window = window;
+
+ setXMLFile ("rkcatchedx11windowpart.rc");
+}
+
+RKCatchedX11WindowPart::~RKCatchedX11WindowPart () {
+ RK_TRACE (MISC);
+}
+
+#include "rkwindowcatcher.moc"
+
+#endif // DISABLE_RKWINDOWCATCHER
Copied: trunk/rkward/rkward/windows/rkwindowcatcher.h (from rev 938, trunk/rkward/rkward/rbackend/rkwindowcatcher.h)
===================================================================
--- trunk/rkward/rkward/windows/rkwindowcatcher.h (rev 0)
+++ trunk/rkward/rkward/windows/rkwindowcatcher.h 2006-11-26 17:45:34 UTC (rev 939)
@@ -0,0 +1,113 @@
+/***************************************************************************
+ rwindowcatcher.h - description
+ -------------------
+ begin : Wed May 4 2005
+ copyright : (C) 2005, 2006 by Thomas Friedrichsmeier
+ email : tfry at users.sourceforge.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef RKWINDOWCATCHER_H
+#define RKWINDOWCATCHER_H
+
+//#define DISABLE_RKWINDOWCATCHER
+#ifndef DISABLE_RKWINDOWCATCHER
+
+#include <qwidget.h>
+
+/** This class will be used to find out, when R opens a new X11-device, find out the id of that device and embed it into a QWidget.
+
+Unfortunately this does not work, yet. Right when trying to embed the window, there is a crash (R segfaults; this also happens when trying to catch a window from another separate R process, so it really seems to be R's fault!). Therefore this class is currently deactivated.
+To reactivate it, modify the corresponding Makefile.am, uncomment the x11-override in rpackages/rkward/R/internal.R, and uncomment the
+window_catcher/RKWindowCatcher lines in rinterface.h and rinterface.cpp. Maybe I'll add some #ifdefs instead...
+
+Given the problems with fetching the window Id (currently only possible by searching for the window title), it's probably a lot easier to instead create a single R call: .rk.catch.window (title="R Graphics: Device...", graph_device_number) that will directly trigger catching.
+
+
+Here are some more notes I have taken on the subject of catching R's x11 windows. Current approach is Plan C for simplicity.
+- Plan A:
+ - initialization function seems to be in_do_X11
+ - it might be possible to put a wrapper around this using R_setX11Routines
+ - this wrapper could watch the list of devices (curDevice, numDevices), see also addDevice to find out how the list is kept internally
+ - if a new device gets added grab its winId and capture (using QXEmbed?)!
+- Plan B:
+ - it looks like there's no way to get acces to R_setX11Routines or at least the needed struct R_X11Routines. (?)
+ - the level above that seems to be do_X11
+ - maybe we can modify the mapping from .Internal (X11) to do_X11 and insert wrapper from Plan A -> R_FunTab
+ - proceed like in Plan A
+ - less preferable as C-plugins might be able to call do_X11 directly (can they?)
+- Plan C:
+ - modify at R level (override X11 ())
+ - notify app right before device is created
+ - notify app right after device is created
+ - least preferable solution as we can not be sure we catch every use.
+ - but definitely most. This is dispatched via CurrentDevice ()->options("device"), and then evalued in R_GlobalEnv
+- remaining problem: how to get the window id given the device id?
+ - http://tronche.com/gui/x/xlib/events/window-state-change/create.html#XCreateWindowEvent
+ - for active / inactive: XPropertyEvent WM_NAME
+ - we may catch this using KApplication::installX11EventFilter
+ - XSelectInput -> QWidget::x11Event()?
+ - event filter should only be active during the wrapper (Plan A-C)
+ - event filter should probably do some sanity checking
+ - this should give us the window id corresponding to the x11-call
+
+ at author Thomas Friedrichsmeier
+*/
+class RKWindowCatcher : public QWidget {
+ Q_OBJECT
+public:
+ RKWindowCatcher (QWidget *parent);
+
+ ~RKWindowCatcher ();
+
+ void start (int prev_cur_device);
+ void stop (int new_cur_device);
+private:
+ int last_cur_device;
+};
+
+#include "rkmdiwindow.h"
+
+class RKCatchedX11WindowPart;
+
+/** An R X11 device window managed by rkward */
+class RKCatchedX11Window : public RKMDIWindow {
+ Q_OBJECT
+public:
+ RKCatchedX11Window (WId window_to_embed, int device_number);
+
+ ~RKCatchedX11Window ();
+
+ KParts::Part *getPart ();
+ QString getRDescription () { return "unimplemtend"; };
+ bool isModified () { return false; };
+private:
+ int device_number;
+ WId embedded;
+ RKCatchedX11WindowPart *part;
+};
+
+class RKCatchedX11WindowPart : public KParts::Part {
+ Q_OBJECT
+public:
+/** constructor.
+ at param console The console for this part */
+ RKCatchedX11WindowPart (RKCatchedX11Window *window);
+/** destructor */
+ ~RKCatchedX11WindowPart ();
+public slots:
+// TODO
+private:
+ RKCatchedX11Window *window;
+};
+
+#endif //DISABLE_RKWINDOWCATCHER
+#endif
Modified: trunk/rkward/rkward/windows/rkworkplace.cpp
===================================================================
--- trunk/rkward/rkward/windows/rkworkplace.cpp 2006-11-26 17:40:56 UTC (rev 938)
+++ trunk/rkward/rkward/windows/rkworkplace.cpp 2006-11-26 17:45:34 UTC (rev 939)
@@ -34,7 +34,7 @@
#include "../dataeditor/rkeditordataframepart.h"
#include "../settings/rksettingsmoduleoutput.h"
#include "../rbackend/rinterface.h"
-#include "../rbackend/rkwindowcatcher.h"
+#include "../windows/rkwindowcatcher.h"
#include "../rbackend/rcommand.h"
#include "../rkglobals.h"
#include "../rkward.h"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the rkward-tracker
mailing list