Magellan Linux

Annotation of /trunk/tigervnc/patches/tigervnc-1.0.1-viewer-reparent.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1201 - (hide annotations) (download)
Mon Nov 22 23:25:59 2010 UTC (13 years, 6 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);