~ubuntu-branches/ubuntu/oneiric/unity/oneiric

« back to all changes in this revision

Viewing changes to plugins/unityshell/src/compizminimizedwindowhandler.h

  • Committer: Package Import Robot
  • Author(s): Didier Roche
  • Date: 2011-09-12 08:12:54 UTC
  • Revision ID: package-import@ubuntu.com-20110912081254-qtz600pc32fva88o
Tags: 4.14.2-0ubuntu2
* Cherry-pick a fix for remapping minimized window correctly (LP: #840285)
* debian/control:
  - bump build-dep for latest compiz-dev ABI break

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
  PrivateCompizMinimizedWindowHandler () {};
38
38
 
39
39
  CompWindow         *mWindow;
40
 
  WindowInputRemover *clientInputRemover;
41
40
};
42
41
 
43
42
template <typename Screen, typename Window>
87
86
  priv = new PrivateCompizMinimizedWindowHandler ();
88
87
 
89
88
  priv->mWindow = w;
90
 
  priv->clientInputRemover = NULL;
91
89
 
92
90
}
93
91
 
115
113
void
116
114
compiz::CompizMinimizedWindowHandler<Screen, Window>::setVisibility (bool visible)
117
115
{
118
 
  CompWindow::Geometry gm = priv->mWindow->geometry ();
119
 
  MinimizedWindowHandler::setVisibility (visible, ROOTPARENT (priv->mWindow));
120
 
 
121
 
  if (!visible && !priv->clientInputRemover)
122
 
  {
123
 
    priv->clientInputRemover = new compiz::WindowInputRemover (screen->dpy (), priv->mWindow->id ());
124
 
    if (!priv->clientInputRemover)
125
 
      return;
126
 
 
127
 
    if (priv->clientInputRemover->save ())
128
 
      priv->clientInputRemover->remove ();
129
 
  }
130
 
  else if (visible && priv->clientInputRemover)
131
 
  {
132
 
    priv->clientInputRemover->restore ();
133
 
 
134
 
    delete priv->clientInputRemover;
135
 
    priv->clientInputRemover = NULL;
136
 
  }
137
 
 
138
 
  /* This is a little hack to ensure that the window region gets updated,
139
 
   * because there's no API in core to do that */
140
 
 
141
 
  gm.setBorder (gm.border () + 1);
142
 
  priv->mWindow->resize (gm);
143
 
  gm.setBorder (gm.border () - 1);
144
 
  priv->mWindow->resize (gm);
 
116
  MinimizedWindowHandler::setVisibility (visible, priv->mWindow->id ());
145
117
 
146
118
  CompositeWindow::get (priv->mWindow)->addDamage ();
147
119
  GLWindow::get (priv->mWindow)->glPaintSetEnabled (Window::get (priv->mWindow), !visible);
285
257
void
286
258
compiz::CompizMinimizedWindowHandler<Screen, Window>::handleEvent (XEvent *event)
287
259
{
 
260
  /* Ignore sent events from the InputRemover */
288
261
  if (screen->XShape () && event->type ==
289
 
      screen->shapeEvent () + ShapeNotify)
 
262
      screen->shapeEvent () + ShapeNotify &&
 
263
      !event->xany.send_event)
290
264
  {
291
265
    CompWindow *w = screen->findWindow (((XShapeEvent *) event)->window);
292
266