Magellan Linux

Contents of /trunk/vnc/patches/vnc-viewer-reparent.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 153 - (show annotations) (download)
Tue May 8 20:52:56 2007 UTC (17 years ago) by niro
File size: 3899 byte(s)
-import

1 --- vnc-4_1_1-unixsrc/unix/tx/TXWindow.h.viewer-reparent 2005-03-11 15:08:41.000000000 +0000
2 +++ vnc-4_1_1-unixsrc/unix/tx/TXWindow.h 2005-12-01 17:55:38.000000000 +0000
3 @@ -183,6 +183,9 @@
4
5 Display* const dpy;
6
7 + TXEventHandler* eventHandler;
8 + long eventMask;
9 +
10 int xPad, yPad, bevel;
11
12 private:
13 @@ -195,9 +198,7 @@
14 TXWindow* parent;
15 Window win_;
16 int width_, height_;
17 - TXEventHandler* eventHandler;
18 TXDeleteWindowCallback* dwc;
19 - long eventMask;
20 XSizeHints sizeHints;
21 std::map<Atom,Time> selectionOwnTime;
22 std::map<Atom,bool> selectionOwner_;
23 --- vnc-4_1_1-unixsrc/unix/tx/TXViewport.cxx.viewer-reparent 2005-03-11 15:08:41.000000000 +0000
24 +++ vnc-4_1_1-unixsrc/unix/tx/TXViewport.cxx 2005-12-01 17:55:38.000000000 +0000
25 @@ -43,6 +43,21 @@
26 delete vScrollbar;
27 }
28
29 +void TXViewport::reparent(long embed_window)
30 +{
31 + XReparentWindow(dpy, win(), (Window)embed_window, 0, 0);
32 + XSelectInput(dpy, embed_window, child->eventMask);
33 + if (!eventHandler)
34 + this->setEventHandler(this);
35 +}
36 +
37 +void TXViewport::handleEvent(TXWindow* w, XEvent* ev)
38 +{
39 + if (child && child->eventHandler)
40 + ((TXEventHandler *)child->eventHandler)->handleEvent(child, ev);
41 +}
42 +
43 +
44 void TXViewport::setChild(TXWindow* child_)
45 {
46 child = child_;
47 --- vnc-4_1_1-unixsrc/unix/tx/TXViewport.h.viewer-reparent 2005-03-11 15:08:41.000000000 +0000
48 +++ vnc-4_1_1-unixsrc/unix/tx/TXViewport.h 2005-12-01 17:55:38.000000000 +0000
49 @@ -32,8 +32,8 @@
50 #include "TXWindow.h"
51 #include "TXScrollbar.h"
52
53 -class TXViewport : public TXWindow, public TXScrollbarCallback,
54 - public rfb::Timer::Callback {
55 +class TXViewport : public TXWindow, public TXScrollbarCallback,
56 + public TXEventHandler, public rfb::Timer::Callback {
57 public:
58 TXViewport(Display* dpy_, int width, int height, TXWindow* parent_=0);
59 virtual ~TXViewport();
60 @@ -59,6 +59,12 @@
61 // normally.
62 bool bumpScrollEvent(XMotionEvent* ev);
63
64 + // reparent the viewport into a new window
65 + void reparent(long embed_window);
66 +
67 + // event handler
68 + void handleEvent(TXWindow* w, XEvent* ev);
69 +
70 private:
71 virtual void resizeNotify();
72 virtual void scrollbarPos(int x, int y, TXScrollbar* sb);
73 --- vnc-4_1_1-unixsrc/unix/vncviewer/parameters.h.viewer-reparent 2005-03-11 15:08:41.000000000 +0000
74 +++ vnc-4_1_1-unixsrc/unix/vncviewer/parameters.h 2005-12-01 17:55:38.000000000 +0000
75 @@ -37,6 +37,7 @@
76 extern rfb::BoolParameter sendPrimary;
77 extern rfb::BoolParameter fullScreen;
78 extern rfb::StringParameter geometry;
79 +extern rfb::StringParameter embedParent;
80
81 extern char aboutText[];
82 extern char* programName;
83 --- vnc-4_1_1-unixsrc/unix/vncviewer/CConn.cxx.viewer-reparent 2005-03-11 15:08:41.000000000 +0000
84 +++ vnc-4_1_1-unixsrc/unix/vncviewer/CConn.cxx 2005-12-01 17:55:38.000000000 +0000
85 @@ -586,10 +586,18 @@
86
87 void CConn::reconfigureViewport()
88 {
89 + const char * par = embedParent.getValueStr();
90 viewport->setMaxSize(cp.width, cp.height);
91 if (fullScreen) {
92 viewport->resize(DisplayWidth(dpy,DefaultScreen(dpy)),
93 DisplayHeight(dpy,DefaultScreen(dpy)));
94 + } else if (strlen(par) != 0) {
95 + XWindowAttributes win_attr;
96 + Window w = strtol(par, (char **)NULL, 0);
97 +
98 + XGetWindowAttributes(dpy, w, &win_attr);
99 + viewport->reparent(w);
100 + viewport->resize(win_attr.width, win_attr.height);
101 } else {
102 int w = cp.width;
103 int h = cp.height;
104 --- vnc-4_1_1-unixsrc/unix/vncviewer/vncviewer.cxx.viewer-reparent 2005-12-01 17:54:46.000000000 +0000
105 +++ vnc-4_1_1-unixsrc/unix/vncviewer/vncviewer.cxx 2005-12-01 17:55:38.000000000 +0000
106 @@ -99,6 +99,9 @@
107 /* Support for tunnelling */
108 StringParameter via("via", "Gateway to tunnel via", "");
109
110 +/* Support for reparenting */
111 +StringParameter embedParent("Parent", "X Window to use as a parent", "");
112 +
113 char aboutText[256];
114 char* programName;
115 extern char buildtime[];