=== added file 'debian/patches/rev_2847_bug_796594.patch'
--- debian/patches/rev_2847_bug_796594.patch    1970-01-01 00:00:00 +0000
+++ debian/patches/rev_2847_bug_796594.patch    2011-10-17 07:16:06 +0000
@@ -0,0 +1,161 @@
+=== modified file 'plugins/decor/src/decor.cpp'
+Index: compiz-0.9.6+bzr20110929/plugins/decor/src/decor.cpp
+===================================================================
+--- compiz-0.9.6+bzr20110929.orig/plugins/decor/src/decor.cpp  2011-10-17 
15:12:20.278356818 +0800
++++ compiz-0.9.6+bzr20110929/plugins/decor/src/decor.cpp       2011-10-17 
15:12:22.718368920 +0800
+@@ -934,7 +934,7 @@
+       if (!wd)
+           return false;
+ 
+-      if ((window->state () & MAXIMIZE_STATE) == MAXIMIZE_STATE)
++      if ((window->state () & MAXIMIZE_STATE))
+           window->setWindowFrameExtents (&wd->decor->maxBorder,
+                                          &wd->decor->maxInput);
+       else if (!window->hasUnmapReference ())
+@@ -1084,7 +1084,7 @@
+     else
+       parent = window->frame ();
+ 
+-    if ((window->state () & MAXIMIZE_STATE) == MAXIMIZE_STATE)
++    if ((window->state () & MAXIMIZE_STATE))
+     {
+       border = wd->decor->maxBorder;
+       input = wd->decor->maxInput;
+@@ -1214,7 +1214,7 @@
+     int                  bw = server.border () * 2;
+     CompWindowExtents  input;
+ 
+-    if ((window->state () & MAXIMIZE_STATE) == MAXIMIZE_STATE)
++    if ((window->state () & MAXIMIZE_STATE))
+       input = wd->decor->maxInput;
+     else
+       input = wd->decor->input;
+@@ -2007,7 +2007,7 @@
+       int oldShiftY = shiftY ();
+       int moveDx, moveDy;
+ 
+-      if ((window->state () & MAXIMIZE_STATE) == MAXIMIZE_STATE)
++      if ((window->state () & MAXIMIZE_STATE))
+           window->setWindowFrameExtents (&wd->decor->maxBorder,
+                                          &wd->decor->maxInput);
+       else
+Index: compiz-0.9.6+bzr20110929/src/window.cpp
+===================================================================
+--- compiz-0.9.6+bzr20110929.orig/src/window.cpp       2011-10-17 
15:12:51.974513993 +0800
++++ compiz-0.9.6+bzr20110929/src/window.cpp    2011-10-17 15:14:52.863113452 
+0800
+@@ -3855,9 +3855,9 @@
+ 
+           if (state & CompWindowStateMaximizedVertMask)
+           {
+-              if (old.y () < y + workArea.y () + serverInput.top)
++              if (old.y () < y + workArea.y () + border.top)
+               {
+-                  xwc->y = y + workArea.y () + serverInput.top;
++                  xwc->y = y + workArea.y () + border.top;
+                   mask |= CWY;
+               }
+               else
+@@ -3865,16 +3865,16 @@
+                   height = xwc->height + old.border () * 2;
+ 
+                   max = y + workArea.bottom ();
+-                  if (old.y () + (int) old.height () + serverInput.bottom > 
max)
++                  if (old.y () + (int) old.height () + border.bottom > max)
+                   {
+-                      xwc->y = max - height - serverInput.bottom;
++                      xwc->y = max - height - border.bottom;
+                       mask |= CWY;
+                   }
+-                  else if (old.y () + height + serverInput.bottom > max)
++                  else if (old.y () + height + border.bottom > max)
+                   {
+                       xwc->y = y + workArea.y () +
+-                               (workArea.height () - serverInput.top - height 
-
+-                                serverInput.bottom) / 2 + serverInput.top;
++                               (workArea.height () - border.top - height -
++                                border.bottom) / 2 + border.top;
+                       mask |= CWY;
+                   }
+               }
+@@ -3882,9 +3882,9 @@
+ 
+           if (state & CompWindowStateMaximizedHorzMask)
+           {
+-              if (old.x () < x + workArea.x () + serverInput.left)
++              if (old.x () < x + workArea.x () + border.left)
+               {
+-                  xwc->x = x + workArea.x () + serverInput.left;
++                  xwc->x = x + workArea.x () + border.left;
+                   mask |= CWX;
+               }
+               else
+@@ -3892,16 +3892,16 @@
+                   width = xwc->width + old.border () * 2;
+ 
+                   max = x + workArea.right ();
+-                  if (old.x () + (int) old.width () + serverInput.right > max)
++                  if (old.x () + (int) old.width () + border.right > max)
+                   {
+-                      xwc->x = max - width - serverInput.right;
++                      xwc->x = max - width - border.right;
+                       mask |= CWX;
+                   }
+-                  else if (old.x () + width + serverInput.right > max)
++                  else if (old.x () + width + border.right > max)
+                   {
+                       xwc->x = x + workArea.x () +
+-                               (workArea.width () - serverInput.left - width -
+-                                serverInput.right) / 2 + serverInput.left;
++                               (workArea.width () - border.left - width -
++                                border.right) / 2 + border.left;
+                       mask |= CWX;
+                   }
+               }
+Index: compiz-0.9.6+bzr20110929/unity/unity_window_decorator/src/events.c
+===================================================================
+--- compiz-0.9.6+bzr20110929.orig/unity/unity_window_decorator/src/events.c    
2011-10-17 15:12:51.950513875 +0800
++++ compiz-0.9.6+bzr20110929/unity/unity_window_decorator/src/events.c 
2011-10-17 15:15:28.971292509 +0800
+@@ -136,28 +136,27 @@
+       {
+           if (state == BUTTON_EVENT_ACTION_STATE)
+           {
+-              if (gtkwd_event->button == 2)
++              if (wnck_window_is_maximized (win))
++                  wnck_window_unmaximize (win);
++              if (wnck_window_is_maximized_vertically (win))
++                  wnck_window_unmaximize_vertically (win);
++              else if (wnck_window_is_maximized_horizontally (win))
++                  wnck_window_unmaximize_horizontally (win);
++              else
+               {
+-                  if (wnck_window_is_maximized_vertically (win))
+-                      wnck_window_unmaximize_vertically (win);
+-                  else
++                  if (gtkwd_event->button == 2)
++                  {
+                       wnck_window_maximize_vertically (win);
+-              }
+-              else if (gtkwd_event->button == 3)
+-              {
+-                  if (wnck_window_is_maximized_horizontally (win))
+-                      wnck_window_unmaximize_horizontally (win);
+-                  else
++                  }
++                  else if (gtkwd_event->button == 3)
++                  {
+                       wnck_window_maximize_horizontally (win);
+-              }
+-              else
+-              {
+-                  if (wnck_window_is_maximized (win))
+-                      wnck_window_unmaximize (win);
++                  }
+                   else
++                  {
+                       wnck_window_maximize (win);
++                  }
+               }
+-          }
+       }
+       break;
+     default:

This ensures that pressing the maximize button on a semi-maximized
window will actually un-semi-maximize it.


** Changed in: unity
    Milestone: 4.24.0 => 4.26.0

-- 
You received this bug notification because you are a member of compiz
packagers, which is subscribed to compiz in Ubuntu.
https://bugs.launchpad.net/bugs/796594

Title:
  Window behaviour - pressing the 'restore' window indicator on a semi-
  maximised window should return it to the restored state

To manage notifications about this bug go to:
https://bugs.launchpad.net/ayatana-design/+bug/796594/+subscriptions

_______________________________________________
Mailing list: https://launchpad.net/~compiz
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~compiz
More help   : https://help.launchpad.net/ListHelp

Reply via email to