Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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

1 niro 153 --- 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[];