]> git.pld-linux.org Git - packages/tigervnc.git/blob - tigervnc-viewer-reparent.patch
- fix building with xserver 1.13
[packages/tigervnc.git] / tigervnc-viewer-reparent.patch
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/vncviewer/CConn.cxx.viewer-reparent tightvnc-1.5.0-20081015svn3022/vncviewer/CConn.cxx
77 --- tightvnc-1.5.0-20081015svn3022/vncviewer/CConn.cxx.viewer-reparent  2008-10-23 13:11:39.000000000 +0200
78 +++ tightvnc-1.5.0-20081015svn3022/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/vncviewer/parameters.h.viewer-reparent tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.h
99 --- tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.h.viewer-reparent       2008-10-23 13:11:39.000000000 +0200
100 +++ tightvnc-1.5.0-20081015svn3022/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/vncviewer/parameters.cxx.viewer-reparent tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.cxx
110 --- tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.cxx.viewer-reparent     2008-10-23 13:11:39.000000000 +0200
111 +++ tightvnc-1.5.0-20081015svn3022/vncviewer/parameters.cxx     2008-10-23 13:12:59.000000000 +0200
112 @@ -106,6 +106,9 @@ StringParameter displayname("display", "
113  StringParameter preferredEncoding("PreferredEncoding",
114                                    "Preferred encoding to use (Tight, ZRLE, Hextile or"
115                                    " Raw)", "Tight");
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);
This page took 0.04636 seconds and 3 git commands to generate.