Contents of /trunk/tigervnc/patches/tigervnc-1.0.1-viewer-reparent.patch
Parent Directory | Revision Log
Revision 1201 -
(show 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 | 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); |