|
Adam Tkac |
5009736 |
diff -up tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.cxx.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.cxx
|
|
Adam Tkac |
5009736 |
--- tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.cxx.viewer-reparent 2008-03-14 14:37:09.000000000 +0100
|
|
Adam Tkac |
5009736 |
+++ tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.cxx 2008-10-23 13:11:39.000000000 +0200
|
|
Adam Tkac |
5009736 |
@@ -44,6 +44,21 @@ TXViewport::~TXViewport()
|
|
Adam Tkac |
5009736 |
delete vScrollbar;
|
|
Adam Tkac |
5009736 |
}
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
+void TXViewport::reparent(long embed_window)
|
|
Adam Tkac |
5009736 |
+{
|
|
Adam Tkac |
5009736 |
+ XReparentWindow(dpy, win(), (Window)embed_window, 0, 0);
|
|
Adam Tkac |
5009736 |
+ XSelectInput(dpy, embed_window, child->eventMask);
|
|
Adam Tkac |
5009736 |
+ if (!eventHandler)
|
|
Adam Tkac |
5009736 |
+ this->setEventHandler(this);
|
|
Adam Tkac |
5009736 |
+}
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
+void TXViewport::handleEvent(TXWindow* w, XEvent* ev)
|
|
Adam Tkac |
5009736 |
+{
|
|
Adam Tkac |
5009736 |
+ if (child && child->eventHandler)
|
|
Adam Tkac |
5009736 |
+ ((TXEventHandler *)child->eventHandler)->handleEvent(child, ev);
|
|
Adam Tkac |
5009736 |
+}
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
void TXViewport::setChild(TXWindow* child_)
|
|
Adam Tkac |
5009736 |
{
|
|
Adam Tkac |
5009736 |
child = child_;
|
|
Adam Tkac |
5009736 |
diff -up tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.h.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.h
|
|
Adam Tkac |
5009736 |
--- tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.h.viewer-reparent 2008-03-14 14:37:09.000000000 +0100
|
|
Adam Tkac |
5009736 |
+++ tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.h 2008-10-23 13:11:39.000000000 +0200
|
|
Adam Tkac |
5009736 |
@@ -32,8 +32,8 @@
|
|
Adam Tkac |
5009736 |
#include "TXWindow.h"
|
|
Adam Tkac |
5009736 |
#include "TXScrollbar.h"
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
-class TXViewport : public TXWindow, public TXScrollbarCallback,
|
|
Adam Tkac |
5009736 |
- public rfb::Timer::Callback {
|
|
Adam Tkac |
5009736 |
+class TXViewport : public TXWindow, public TXScrollbarCallback,
|
|
Adam Tkac |
5009736 |
+ public TXEventHandler, public rfb::Timer::Callback {
|
|
Adam Tkac |
5009736 |
public:
|
|
Adam Tkac |
5009736 |
TXViewport(Display* dpy_, int width, int height, TXWindow* parent_=0);
|
|
Adam Tkac |
5009736 |
virtual ~TXViewport();
|
|
Adam Tkac |
5009736 |
@@ -59,6 +59,12 @@ public:
|
|
Adam Tkac |
5009736 |
// normally.
|
|
Adam Tkac |
5009736 |
bool bumpScrollEvent(XMotionEvent* ev);
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
+ // reparent the viewport into a new window
|
|
Adam Tkac |
5009736 |
+ void reparent(long embed_window);
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
+ // event handler
|
|
Adam Tkac |
5009736 |
+ void handleEvent(TXWindow* w, XEvent* ev);
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
private:
|
|
Adam Tkac |
5009736 |
virtual void resizeNotify();
|
|
Adam Tkac |
5009736 |
virtual void scrollbarPos(int x, int y, TXScrollbar* sb);
|
|
Adam Tkac |
5009736 |
diff -up tightvnc-1.5.0-20081015svn3022/unix/tx/TXWindow.h.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/tx/TXWindow.h
|
|
Adam Tkac |
5009736 |
--- tightvnc-1.5.0-20081015svn3022/unix/tx/TXWindow.h.viewer-reparent 2006-05-18 13:08:21.000000000 +0200
|
|
Adam Tkac |
5009736 |
+++ tightvnc-1.5.0-20081015svn3022/unix/tx/TXWindow.h 2008-10-23 13:11:39.000000000 +0200
|
|
Adam Tkac |
5009736 |
@@ -183,6 +183,9 @@ public:
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
Display* const dpy;
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
+ TXEventHandler* eventHandler;
|
|
Adam Tkac |
5009736 |
+ long eventMask;
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
int xPad, yPad, bevel;
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
private:
|
|
Adam Tkac |
5009736 |
@@ -195,9 +198,7 @@ private:
|
|
Adam Tkac |
5009736 |
TXWindow* parent;
|
|
Adam Tkac |
5009736 |
Window win_;
|
|
Adam Tkac |
5009736 |
int width_, height_;
|
|
Adam Tkac |
5009736 |
- TXEventHandler* eventHandler;
|
|
Adam Tkac |
5009736 |
TXDeleteWindowCallback* dwc;
|
|
Adam Tkac |
5009736 |
- long eventMask;
|
|
Adam Tkac |
5009736 |
XSizeHints sizeHints;
|
|
Adam Tkac |
5009736 |
std::map<Atom,Time> selectionOwnTime;
|
|
Adam Tkac |
5009736 |
std::map<Atom,bool> selectionOwner_;
|
|
Adam Tkac |
5009736 |
diff -up tightvnc-1.5.0-20081015svn3022/unix/vncviewer/CConn.cxx.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/vncviewer/CConn.cxx
|
|
Adam Tkac |
5009736 |
--- tightvnc-1.5.0-20081015svn3022/unix/vncviewer/CConn.cxx.viewer-reparent 2008-10-23 13:11:39.000000000 +0200
|
|
Adam Tkac |
5009736 |
+++ tightvnc-1.5.0-20081015svn3022/unix/vncviewer/CConn.cxx 2008-10-23 13:11:39.000000000 +0200
|
|
Adam Tkac |
5009736 |
@@ -647,10 +647,18 @@ void CConn::recreateViewport()
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
void CConn::reconfigureViewport()
|
|
Adam Tkac |
5009736 |
{
|
|
Adam Tkac |
5009736 |
+ const char * par = embedParent.getValueStr();
|
|
Adam Tkac |
5009736 |
viewport->setMaxSize(cp.width, cp.height);
|
|
Adam Tkac |
5009736 |
if (fullScreen) {
|
|
Adam Tkac |
5009736 |
viewport->resize(DisplayWidth(dpy,DefaultScreen(dpy)),
|
|
Adam Tkac |
5009736 |
DisplayHeight(dpy,DefaultScreen(dpy)));
|
|
Adam Tkac |
5009736 |
+ } else if (strlen(par) != 0) {
|
|
Adam Tkac |
5009736 |
+ XWindowAttributes win_attr;
|
|
Adam Tkac |
5009736 |
+ Window w = strtol(par, (char **)NULL, 0);
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
+ XGetWindowAttributes(dpy, w, &win_attr);
|
|
Adam Tkac |
5009736 |
+ viewport->reparent(w);
|
|
Adam Tkac |
5009736 |
+ viewport->resize(win_attr.width, win_attr.height);
|
|
Adam Tkac |
5009736 |
} else {
|
|
Adam Tkac |
5009736 |
int w = cp.width;
|
|
Adam Tkac |
5009736 |
int h = cp.height;
|
|
Adam Tkac |
5009736 |
diff -up tightvnc-1.5.0-20081015svn3022/unix/vncviewer/parameters.h.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/vncviewer/parameters.h
|
|
Adam Tkac |
5009736 |
--- tightvnc-1.5.0-20081015svn3022/unix/vncviewer/parameters.h.viewer-reparent 2008-10-23 13:11:39.000000000 +0200
|
|
Adam Tkac |
5009736 |
+++ tightvnc-1.5.0-20081015svn3022/unix/vncviewer/parameters.h 2008-10-23 13:12:41.000000000 +0200
|
|
Adam Tkac |
5009736 |
@@ -42,6 +42,7 @@ extern rfb::IntParameter compressLevel;
|
|
Adam Tkac |
5009736 |
extern rfb::BoolParameter noJpeg;
|
|
Adam Tkac |
5009736 |
extern rfb::IntParameter qualityLevel;
|
|
Adam Tkac |
5009736 |
extern rfb::BoolParameter passwdInput;
|
|
Adam Tkac |
5009736 |
+extern rfb::StringParameter embedParent;
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
extern char aboutText[];
|
|
Adam Tkac |
5009736 |
extern char* programName;
|
|
Adam Tkac |
5009736 |
diff -up tightvnc-1.5.0-20081015svn3022/unix/vncviewer/vncviewer.cxx.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/vncviewer/vncviewer.cxx
|
|
Adam Tkac |
5009736 |
--- tightvnc-1.5.0-20081015svn3022/unix/vncviewer/vncviewer.cxx.viewer-reparent 2008-10-23 13:11:39.000000000 +0200
|
|
Adam Tkac |
5009736 |
+++ tightvnc-1.5.0-20081015svn3022/unix/vncviewer/vncviewer.cxx 2008-10-23 13:12:59.000000000 +0200
|
|
Adam Tkac |
5009736 |
@@ -106,6 +106,9 @@ StringParameter displayname("display", "
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
StringParameter via("via", "Gateway to tunnel via", "");
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
+/* Support for reparenting */
|
|
Adam Tkac |
5009736 |
+StringParameter embedParent("Parent", "X Window to use as a parent", "");
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
BoolParameter customCompressLevel("CustomCompressLevel",
|
|
Adam Tkac |
5009736 |
"Use custom compression level. "
|
|
Adam Tkac |
5009736 |
"Default if CompressLevel is specified.", false);
|