]> git.pld-linux.org Git - packages/tigervnc.git/blame - tigervnc-viewer-reparent.patch
- rel 5
[packages/tigervnc.git] / tigervnc-viewer-reparent.patch
CommitLineData
13a33bd9
JR
1diff -up tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.cxx.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.cxx
2--- tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.cxx.viewer-reparent 2008-03-14 14:37:09.000000000 +0100
3+++ tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.cxx 2008-10-23 13:11:39.000000000 +0200
4@@ -44,6 +44,21 @@ TXViewport::~TXViewport()
5 delete vScrollbar;
6 }
7
8+void TXViewport::reparent(long embed_window)
9+{
10+ XReparentWindow(dpy, win(), (Window)embed_window, 0, 0);
11+ XSelectInput(dpy, embed_window, child->eventMask);
12+ if (!eventHandler)
13+ this->setEventHandler(this);
14+}
15+
16+void TXViewport::handleEvent(TXWindow* w, XEvent* ev)
17+{
18+ if (child && child->eventHandler)
19+ ((TXEventHandler *)child->eventHandler)->handleEvent(child, ev);
20+}
21+
22+
23 void TXViewport::setChild(TXWindow* child_)
24 {
25 child = child_;
26diff -up tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.h.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.h
27--- tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.h.viewer-reparent 2008-03-14 14:37:09.000000000 +0100
28+++ tightvnc-1.5.0-20081015svn3022/unix/tx/TXViewport.h 2008-10-23 13:11:39.000000000 +0200
29@@ -32,8 +32,8 @@
30 #include "TXWindow.h"
31 #include "TXScrollbar.h"
32
33-class TXViewport : public TXWindow, public TXScrollbarCallback,
34- public rfb::Timer::Callback {
35+class TXViewport : public TXWindow, public TXScrollbarCallback,
36+ public TXEventHandler, public rfb::Timer::Callback {
37 public:
38 TXViewport(Display* dpy_, int width, int height, TXWindow* parent_=0);
39 virtual ~TXViewport();
40@@ -59,6 +59,12 @@ public:
41 // normally.
42 bool bumpScrollEvent(XMotionEvent* ev);
43
44+ // reparent the viewport into a new window
45+ void reparent(long embed_window);
46+
47+ // event handler
48+ void handleEvent(TXWindow* w, XEvent* ev);
49+
50 private:
51 virtual void resizeNotify();
52 virtual void scrollbarPos(int x, int y, TXScrollbar* sb);
53diff -up tightvnc-1.5.0-20081015svn3022/unix/tx/TXWindow.h.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/tx/TXWindow.h
54--- tightvnc-1.5.0-20081015svn3022/unix/tx/TXWindow.h.viewer-reparent 2006-05-18 13:08:21.000000000 +0200
55+++ tightvnc-1.5.0-20081015svn3022/unix/tx/TXWindow.h 2008-10-23 13:11:39.000000000 +0200
56@@ -183,6 +183,9 @@ public:
57
58 Display* const dpy;
59
60+ TXEventHandler* eventHandler;
61+ long eventMask;
62+
63 int xPad, yPad, bevel;
64
65 private:
66@@ -195,9 +198,7 @@ private:
67 TXWindow* parent;
68 Window win_;
69 int width_, height_;
70- TXEventHandler* eventHandler;
71 TXDeleteWindowCallback* dwc;
72- long eventMask;
73 XSizeHints sizeHints;
74 std::map<Atom,Time> selectionOwnTime;
75 std::map<Atom,bool> selectionOwner_;
7470b97a
JR
76diff -up tightvnc-1.5.0-20081015svn3022/vncviewer/CConn.cxx.viewer-reparent tightvnc-1.5.0-20081015svn3022/vncviewer/CConn.cxx
77--- tightvnc-1.5.0-20081015svn3022/vncviewer/CConn.cxx.viewer-reparent 2008-10-23 13:11:39.000000000 +0200
78+++ tightvnc-1.5.0-20081015svn3022/vncviewer/CConn.cxx 2008-10-23 13:11:39.000000000 +0200
13a33bd9
JR
79@@ -647,10 +647,18 @@ void CConn::recreateViewport()
80
81 void CConn::reconfigureViewport()
82 {
83+ const char * par = embedParent.getValueStr();
84 viewport->setMaxSize(cp.width, cp.height);
85 if (fullScreen) {
86 viewport->resize(DisplayWidth(dpy,DefaultScreen(dpy)),
87 DisplayHeight(dpy,DefaultScreen(dpy)));
88+ } else if (strlen(par) != 0) {
89+ XWindowAttributes win_attr;
90+ Window w = strtol(par, (char **)NULL, 0);
91+
92+ XGetWindowAttributes(dpy, w, &win_attr);
93+ viewport->reparent(w);
94+ viewport->resize(win_attr.width, win_attr.height);
95 } else {
96 int w = cp.width;
97 int h = cp.height;
7470b97a
JR
98diff -up tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.h.viewer-reparent tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.h
99--- tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.h.viewer-reparent 2008-10-23 13:11:39.000000000 +0200
100+++ tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.h 2008-10-23 13:12:41.000000000 +0200
13a33bd9
JR
101@@ -42,6 +42,7 @@ extern rfb::IntParameter compressLevel;
102 extern rfb::BoolParameter noJpeg;
103 extern rfb::IntParameter qualityLevel;
104 extern rfb::BoolParameter passwdInput;
105+extern rfb::StringParameter embedParent;
106
107 extern char aboutText[];
108 extern char* programName;
7470b97a
JR
109diff -up tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.cxx.viewer-reparent tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.cxx
110--- tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.cxx.viewer-reparent 2008-10-23 13:11:39.000000000 +0200
111+++ tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.cxx 2008-10-23 13:12:59.000000000 +0200
13a33bd9 112@@ -106,6 +106,9 @@ StringParameter displayname("display", "
7470b97a
JR
113 StringParameter preferredEncoding("PreferredEncoding",
114 "Preferred encoding to use (Tight, ZRLE, Hextile or"
115 " Raw)", "Tight");
13a33bd9
JR
116+/* Support for reparenting */
117+StringParameter embedParent("Parent", "X Window to use as a parent", "");
118+
119 BoolParameter customCompressLevel("CustomCompressLevel",
7470b97a
JR
120 "Use custom compression level. "
121 "Default if CompressLevel is specified.", false);
This page took 0.077782 seconds and 4 git commands to generate.