Annotation of /trunk/tigervnc/patches/tigervnc-1.0.1-viewer-reparent.patch
Parent Directory | Revision Log
Revision 1201 -
(hide annotations)
(download)
Mon Nov 22 23:25:59 2010 UTC (13 years, 10 months ago) by niro
File size: 5086 byte(s)
Mon Nov 22 23:25:59 2010 UTC (13 years, 10 months ago) by niro
File size: 5086 byte(s)
-patches for 1.0.1 against xorg-server-1.7
1 | niro | 1201 | diff -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_; | ||
26 | diff -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); | ||
53 | diff -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_; | ||
76 | diff -up tightvnc-1.5.0-20081015svn3022/unix/vncviewer/CConn.cxx.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/vncviewer/CConn.cxx | ||
77 | --- tightvnc-1.5.0-20081015svn3022/unix/vncviewer/CConn.cxx.viewer-reparent 2008-10-23 13:11:39.000000000 +0200 | ||
78 | +++ tightvnc-1.5.0-20081015svn3022/unix/vncviewer/CConn.cxx 2008-10-23 13:11:39.000000000 +0200 | ||
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; | ||
98 | diff -up tightvnc-1.5.0-20081015svn3022/unix/vncviewer/parameters.h.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/vncviewer/parameters.h | ||
99 | --- tightvnc-1.5.0-20081015svn3022/unix/vncviewer/parameters.h.viewer-reparent 2008-10-23 13:11:39.000000000 +0200 | ||
100 | +++ tightvnc-1.5.0-20081015svn3022/unix/vncviewer/parameters.h 2008-10-23 13:12:41.000000000 +0200 | ||
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; | ||
109 | diff -up tightvnc-1.5.0-20081015svn3022/unix/vncviewer/vncviewer.cxx.viewer-reparent tightvnc-1.5.0-20081015svn3022/unix/vncviewer/vncviewer.cxx | ||
110 | --- tightvnc-1.5.0-20081015svn3022/unix/vncviewer/vncviewer.cxx.viewer-reparent 2008-10-23 13:11:39.000000000 +0200 | ||
111 | +++ tightvnc-1.5.0-20081015svn3022/unix/vncviewer/vncviewer.cxx 2008-10-23 13:12:59.000000000 +0200 | ||
112 | @@ -106,6 +106,9 @@ StringParameter displayname("display", " | ||
113 | |||
114 | StringParameter via("via", "Gateway to tunnel via", ""); | ||
115 | |||
116 | +/* Support for reparenting */ | ||
117 | +StringParameter embedParent("Parent", "X Window to use as a parent", ""); | ||
118 | + | ||
119 | BoolParameter customCompressLevel("CustomCompressLevel", | ||
120 | "Use custom compression level. " | ||
121 | "Default if CompressLevel is specified.", false); |