Merge lp:~compiz-team/compiz/compiz.fix_1186560 into lp:compiz/0.9.10

Proposed by Sam Spilsbury
Status: Merged
Merged at revision: 3751
Proposed branch: lp:~compiz-team/compiz/compiz.fix_1186560
Merge into: lp:compiz/0.9.10
Diff against target: 398 lines (+122/-90)
4 files modified
gtk/window-decorator/tests/test_gwd_settings.cpp (+98/-51)
plugins/decor/src/decor.cpp (+21/-35)
plugins/decor/src/decor.h (+2/-0)
src/window.cpp (+1/-4)
To merge this branch: bzr merge lp:~compiz-team/compiz/compiz.fix_1186560
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Needs Fixing
Compiz Maintainers Pending
Review via email: mp+167472@code.launchpad.net

Commit message

Don't cause maximized windows to be double adjusted upon decoration change.

This is effectively a bundle of fixes in one:

1. Don't adjust maximized windows after their decorations change with
   addWindowSizeChanges. That only needs to be done on initial maximization
   and then any other decoration size change can handle itself
2. Don't cause the saved co-ordinates to be updated upon unmaximization
3. Don't put the decoration adjustment on a timer. Do it immediately.
   The calling WindowInterface::moveNotify from within itself is no
   longer a problem.

(LP: #1186560)

Description of the change

Don't cause maximized windows to be double adjusted upon decoration change.

This is effectively a bundle of fixes in one:

1. Don't adjust maximized windows after their decorations change with
   addWindowSizeChanges. That only needs to be done on initial maximization
   and then any other decoration size change can handle itself
2. Don't cause the saved co-ordinates to be updated upon unmaximization
3. Don't put the decoration adjustment on a timer. Do it immediately.
   The calling WindowInterface::moveNotify from within itself is no
   longer a problem.

(LP: #1186560)

Please test this, but don't merge it yet. I'd prefer to wait until we have a testsuite for the decor plugin.

To post a comment you must log in.
Revision history for this message
MC Return (mc-return) wrote :

You forgot:

4. Fixed int dwidth = sizeDelta.width () - lastSizeDelta.width (); typo.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Sam Spilsbury (smspillaz) wrote :

I imagine that this will be folded into an unrevert of the relevant revision.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'gtk/window-decorator/tests/test_gwd_settings.cpp'
--- gtk/window-decorator/tests/test_gwd_settings.cpp 2013-03-06 13:44:06 +0000
+++ gtk/window-decorator/tests/test_gwd_settings.cpp 2013-06-05 08:25:46 +0000
@@ -258,8 +258,6 @@
258{258{
259};259};
260260
261const GValue referenceGValue = G_VALUE_INIT;
262
263namespace261namespace
264{262{
265 void gwd_settings_storage_unref (GWDSettingsStorage *storage)263 void gwd_settings_storage_unref (GWDSettingsStorage *storage)
@@ -287,7 +285,11 @@
287285
288 AutoUnsetGValue (GType type)286 AutoUnsetGValue (GType type)
289 {287 {
290 memcpy (&mValue, &referenceGValue, sizeof (GValue));288 /* This is effectively G_VALUE_INIT, we can't use that here
289 * because this is not a C++11 project */
290 mValue.g_type = 0;
291 mValue.data[0].v_int = 0;
292 mValue.data[1].v_int = 0;
291 g_value_init (&mValue, type);293 g_value_init (&mValue, type);
292 }294 }
293295
@@ -423,109 +425,154 @@
423 EXPECT_CALL (settingsGMock, dispose ());425 EXPECT_CALL (settingsGMock, dispose ());
424 EXPECT_CALL (settingsGMock, finalize ());426 EXPECT_CALL (settingsGMock, finalize ());
425427
428 /* The order of evaluation of matchers in Google Mock appears to be undefined and
429 * the way GValueMatch is written makes it particularly unsafe when used with
430 * matchers of multiple types on the same function, since there's no guaruntee
431 * that the matchers will be traversed in any order. If a type is passed to
432 * any of the matchers that it doesn't know how to handle then it will
433 * call directly through to GValueCmp which will run into undefined behaviour
434 * in itself.
435 *
436 * In reality, the API for GValueMatch is probably a little bit broken in this
437 * sense, but just satisfying each expectation as soon as its set seems to do
438 * the job here
439 */
440
426 /* calling g_object_get_property actually resets441 /* calling g_object_get_property actually resets
427 * the value so expecting 0x0 is correct */442 * the value so expecting 0x0 is correct */
428 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_ACTIVE_SHADOW,443 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_ACTIVE_SHADOW,
429 GValueMatch <gpointer> (0x0, g_value_get_pointer),444 GValueMatch <gpointer> (0x0, g_value_get_pointer),
430 _));445 _));
446
447 g_object_get_property (G_OBJECT (settingsMock.get ()),
448 "active-shadow",
449 &pointerGValue);
450
431 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_INACTIVE_SHADOW,451 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_INACTIVE_SHADOW,
432 GValueMatch <gpointer> (0x0, g_value_get_pointer),452 GValueMatch <gpointer> (0x0, g_value_get_pointer),
433 _));453 _));
454
455 g_object_get_property (G_OBJECT (settingsMock.get ()),
456 "inactive-shadow",
457 &pointerGValue);
458
434 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_USE_TOOLTIPS,459 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_USE_TOOLTIPS,
435 GValueMatch <gboolean> (FALSE, g_value_get_boolean),460 GValueMatch <gboolean> (FALSE, g_value_get_boolean),
436 _));461 _));
462
463 g_object_get_property (G_OBJECT (settingsMock.get ()),
464 "use-tooltips",
465 &booleanGValue);
466
437 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_DRAGGABLE_BORDER_WIDTH,467 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_DRAGGABLE_BORDER_WIDTH,
438 GValueMatch <gint> (0, g_value_get_int),468 GValueMatch <gint> (0, g_value_get_int),
439 _));469 _));
470
471 g_object_get_property (G_OBJECT (settingsMock.get ()),
472 "draggable-border-width",
473 &integerGValue);
474
440 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_ATTACH_MODAL_DIALOGS,475 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_ATTACH_MODAL_DIALOGS,
441 GValueMatch <gboolean> (FALSE, g_value_get_boolean),476 GValueMatch <gboolean> (FALSE, g_value_get_boolean),
442 _));477 _));
478
479 g_object_get_property (G_OBJECT (settingsMock.get ()),
480 "attach-modal-dialogs",
481 &booleanGValue);
482
443 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_BLUR_CHANGED,483 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_BLUR_CHANGED,
444 GValueMatch <gint> (0, g_value_get_int),484 GValueMatch <gint> (0, g_value_get_int),
445 _));485 _));
486
487 g_object_get_property (G_OBJECT (settingsMock.get ()),
488 "blur",
489 &integerGValue);
490
446 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_METACITY_THEME,491 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_METACITY_THEME,
447 GValueMatch <const gchar *> (NULL, g_value_get_string),492 GValueMatch <const gchar *> (NULL, g_value_get_string),
448 _));493 _));
494
495 g_object_get_property (G_OBJECT (settingsMock.get ()),
496 "metacity-theme",
497 &stringGValue);
498
449 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_ACTIVE_OPACITY,499 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_ACTIVE_OPACITY,
450 GValueMatch <gdouble> (0.0, g_value_get_double),500 GValueMatch <gdouble> (0.0, g_value_get_double),
451 _));501 _));
502
503 g_object_get_property (G_OBJECT (settingsMock.get ()),
504 "metacity-active-opacity",
505 &doubleGValue);
506
452 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_INACTIVE_OPACITY,507 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_INACTIVE_OPACITY,
453 GValueMatch <gdouble> (0.0, g_value_get_double),508 GValueMatch <gdouble> (0.0, g_value_get_double),
454 _));509 _));
510
511 g_object_get_property (G_OBJECT (settingsMock.get ()),
512 "metacity-inactive-opacity",
513 &doubleGValue);
514
455 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_ACTIVE_SHADE_OPACITY,515 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_ACTIVE_SHADE_OPACITY,
456 GValueMatch <gboolean> (FALSE, g_value_get_boolean),516 GValueMatch <gboolean> (FALSE, g_value_get_boolean),
457 _));517 _));
518
519 g_object_get_property (G_OBJECT (settingsMock.get ()),
520 "metacity-active-shade-opacity",
521 &booleanGValue);
522
458 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_INACTIVE_SHADE_OPACITY,523 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_INACTIVE_SHADE_OPACITY,
459 GValueMatch <gboolean> (FALSE, g_value_get_boolean),524 GValueMatch <gboolean> (FALSE, g_value_get_boolean),
460 _));525 _));
526
527 g_object_get_property (G_OBJECT (settingsMock.get ()),
528 "metacity-inactive-shade-opacity",
529 &booleanGValue);
530
461 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_BUTTON_LAYOUT,531 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_BUTTON_LAYOUT,
462 GValueMatch <const gchar *> (NULL, g_value_get_string),532 GValueMatch <const gchar *> (NULL, g_value_get_string),
463 _));533 _));
534
535 g_object_get_property (G_OBJECT (settingsMock.get ()),
536 "metacity-button-layout",
537 &stringGValue);
538
464 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_TITLEBAR_ACTION_DOUBLE_CLICK,539 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_TITLEBAR_ACTION_DOUBLE_CLICK,
465 GValueMatch <gint> (0, g_value_get_int),540 GValueMatch <gint> (0, g_value_get_int),
466 _));541 _));
542
543 g_object_get_property (G_OBJECT (settingsMock.get ()),
544 "titlebar-double-click-action",
545 &integerGValue);
546
467 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_TITLEBAR_ACTION_MIDDLE_CLICK,547 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_TITLEBAR_ACTION_MIDDLE_CLICK,
468 GValueMatch <gint> (0, g_value_get_int),548 GValueMatch <gint> (0, g_value_get_int),
469 _));549 _));
550
551 g_object_get_property (G_OBJECT (settingsMock.get ()),
552 "titlebar-middle-click-action",
553 &integerGValue);
554
470 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_TITLEBAR_ACTION_RIGHT_CLICK,555 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_TITLEBAR_ACTION_RIGHT_CLICK,
471 GValueMatch <gint> (0, g_value_get_int),556 GValueMatch <gint> (0, g_value_get_int),
472 _));557 _));
558
559 g_object_get_property (G_OBJECT (settingsMock.get ()),
560 "titlebar-right-click-action",
561 &integerGValue);
562
473 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_MOUSE_WHEEL_ACTION,563 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_MOUSE_WHEEL_ACTION,
474 GValueMatch <gint> (0, g_value_get_int),564 GValueMatch <gint> (0, g_value_get_int),
475 _));565 _));
566
567 g_object_get_property (G_OBJECT (settingsMock.get ()),
568 "mouse-wheel-action",
569 &integerGValue);
570
476 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_TITLEBAR_FONT,571 EXPECT_CALL (settingsGMock, getProperty (GWD_MOCK_SETTINGS_PROPERTY_TITLEBAR_FONT,
477 GValueMatch <const gchar *> (NULL, g_value_get_string),572 GValueMatch <const gchar *> (NULL, g_value_get_string),
478 _));573 _));
479574
480 g_object_get_property (G_OBJECT (settingsMock.get ()),575 g_object_get_property (G_OBJECT (settingsMock.get ()),
481 "active-shadow",
482 &pointerGValue);
483 g_object_get_property (G_OBJECT (settingsMock.get ()),
484 "inactive-shadow",
485 &pointerGValue);
486 g_object_get_property (G_OBJECT (settingsMock.get ()),
487 "use-tooltips",
488 &booleanGValue);
489 g_object_get_property (G_OBJECT (settingsMock.get ()),
490 "draggable-border-width",
491 &integerGValue);
492 g_object_get_property (G_OBJECT (settingsMock.get ()),
493 "attach-modal-dialogs",
494 &booleanGValue);
495 g_object_get_property (G_OBJECT (settingsMock.get ()),
496 "blur",
497 &integerGValue);
498 g_object_get_property (G_OBJECT (settingsMock.get ()),
499 "metacity-theme",
500 &stringGValue);
501 g_object_get_property (G_OBJECT (settingsMock.get ()),
502 "metacity-active-opacity",
503 &doubleGValue);
504 g_object_get_property (G_OBJECT (settingsMock.get ()),
505 "metacity-inactive-opacity",
506 &doubleGValue);
507 g_object_get_property (G_OBJECT (settingsMock.get ()),
508 "metacity-active-shade-opacity",
509 &booleanGValue);
510 g_object_get_property (G_OBJECT (settingsMock.get ()),
511 "metacity-inactive-shade-opacity",
512 &booleanGValue);
513 g_object_get_property (G_OBJECT (settingsMock.get ()),
514 "metacity-button-layout",
515 &stringGValue);
516 g_object_get_property (G_OBJECT (settingsMock.get ()),
517 "titlebar-double-click-action",
518 &integerGValue);
519 g_object_get_property (G_OBJECT (settingsMock.get ()),
520 "titlebar-middle-click-action",
521 &integerGValue);
522 g_object_get_property (G_OBJECT (settingsMock.get ()),
523 "titlebar-right-click-action",
524 &integerGValue);
525 g_object_get_property (G_OBJECT (settingsMock.get ()),
526 "mouse-wheel-action",
527 &integerGValue);
528 g_object_get_property (G_OBJECT (settingsMock.get ()),
529 "titlebar-font",576 "titlebar-font",
530 &stringGValue);577 &stringGValue);
531}578}
532579
=== modified file 'plugins/decor/src/decor.cpp'
--- plugins/decor/src/decor.cpp 2013-05-20 15:26:11 +0000
+++ plugins/decor/src/decor.cpp 2013-06-05 08:25:46 +0000
@@ -1149,9 +1149,8 @@
1149/*1149/*
1150 * decorOffsetMove1150 * decorOffsetMove
1151 *1151 *
1152 * Function called on a timer (to avoid calling configureXWindow from1152 * Moves the window by the offset specified in the xwc.
1153 * within a ::moveNotify) which actually moves the window by the offset1153 * Also sends a notification that the window
1154 * specified in the xwc. Also sends a notification that the window
1155 * was decorated1154 * was decorated
1156 *1155 *
1157 */1156 */
@@ -1522,7 +1521,7 @@
15221521
1523 int dx = movement.x () - lastShift.x ();1522 int dx = movement.x () - lastShift.x ();
1524 int dy = movement.y () - lastShift.y ();1523 int dy = movement.y () - lastShift.y ();
1525 int dwidth = sizeDelta.width () - lastSizeDelta.height ();1524 int dwidth = sizeDelta.width () - lastSizeDelta.width ();
1526 int dheight = sizeDelta.height () - lastSizeDelta.height ();1525 int dheight = sizeDelta.height () - lastSizeDelta.height ();
15271526
1528 /* We don't apply these rules to override-redirect windows1527 /* We don't apply these rules to override-redirect windows
@@ -1557,16 +1556,18 @@
1557 if (window->state () & CompWindowStateMaximizedVertMask)1556 if (window->state () & CompWindowStateMaximizedVertMask)
1558 mask &= ~(CWY | CWHeight);1557 mask &= ~(CWY | CWHeight);
15591558
1560 if (window->saveMask () & CWX)1559 /* We don't want to make changes to the saved co-ordinates
1560 * if we're unmaximizing */
1561 if ((window->saveMask () & ~mask) & CWX)
1561 window->saveWc ().x += xwc.x;1562 window->saveWc ().x += xwc.x;
15621563
1563 if (window->saveMask () & CWY)1564 if ((window->saveMask () & ~mask) & CWY)
1564 window->saveWc ().y += xwc.y;1565 window->saveWc ().y += xwc.y;
15651566
1566 if (window->saveMask () & CWWidth)1567 if ((window->saveMask () & ~mask) & CWWidth)
1567 window->saveWc ().width += xwc.width;1568 window->saveWc ().width += xwc.width;
15681569
1569 if (window->saveMask () & CWHeight)1570 if ((window->saveMask () & ~mask) & CWHeight)
1570 window->saveWc ().height += xwc.height;1571 window->saveWc ().height += xwc.height;
15711572
1572 /* If the window has not been placed, do not move it this time1573 /* If the window has not been placed, do not move it this time
@@ -1585,10 +1586,7 @@
1585 * FIXME: CompTimer should really be PIMPL and allow1586 * FIXME: CompTimer should really be PIMPL and allow
1586 * refcounting in case we need to keep it alive1587 * refcounting in case we need to keep it alive
1587 */1588 */
1588 if (instant)1589 decorOffsetMove (window, xwc, mask);
1589 decorOffsetMove (window, xwc, mask);
1590 else
1591 moveUpdate.start (boost::bind (decorOffsetMove, window, xwc, mask), 0);
1592 }1590 }
15931591
1594 /* Even if the window has not yet been placed, we still1592 /* Even if the window has not yet been placed, we still
@@ -1667,6 +1665,7 @@
16671665
1668 bool shadowOnly = bareDecorationOnly ();1666 bool shadowOnly = bareDecorationOnly ();
1669 bool decorate = shouldDecorateWindow (window, shadowOnly, isSwitcher);1667 bool decorate = shouldDecorateWindow (window, shadowOnly, isSwitcher);
1668 unsigned int decorMaximizeState = window->state () & MAXIMIZE_STATE;
16701669
1671 if (decorate || frameExtentsRequested)1670 if (decorate || frameExtentsRequested)
1672 {1671 {
@@ -1689,7 +1688,8 @@
1689 /* Don't bother going any further if1688 /* Don't bother going any further if
1690 * this window is going to get the same1689 * this window is going to get the same
1691 * decoration, just use the old one */1690 * decoration, just use the old one */
1692 if (decoration == old)1691 if (decoration == old &&
1692 lastMaximizedStateDecorated == decorMaximizeState)
1693 return false;1693 return false;
16941694
1695 /* Destroy the old WindowDecoration */1695 /* Destroy the old WindowDecoration */
@@ -1710,12 +1710,15 @@
1710 /* Set extents based on maximize/unmaximize state1710 /* Set extents based on maximize/unmaximize state
1711 * FIXME: With the new type system, this should be1711 * FIXME: With the new type system, this should be
1712 * removed */1712 * removed */
1713 if ((window->state () & MAXIMIZE_STATE))1713 if (decorMaximizeState)
1714 window->setWindowFrameExtents (&decoration->maxBorder,1714 window->setWindowFrameExtents (&decoration->maxBorder,
1715 &decoration->maxInput);1715 &decoration->maxInput);
1716 else if (!window->hasUnmapReference ())1716 else if (!window->hasUnmapReference ())
1717 window->setWindowFrameExtents (&decoration->border,1717 window->setWindowFrameExtents (&decoration->border,
1718 &decoration->input);1718 &decoration->input);
1719
1720 lastMaximizedStateDecorated = decorMaximizeState;
1721
1719 /* This window actually needs its decoration contents updated1722 /* This window actually needs its decoration contents updated
1720 * as it was actually visible */1723 * as it was actually visible */
1721 if (decorate ||1724 if (decorate ||
@@ -2978,13 +2981,7 @@
2978 shading = false;2981 shading = false;
2979 unshading = false;2982 unshading = false;
2980 }2983 }
2981 /* FIXME: we should not need a timer for calling decorWindowUpdate,2984
2982 and only call updateWindowDecorationScale if decorWindowUpdate
2983 returns false. Unfortunately, decorWindowUpdate may call
2984 updateWindowOutputExtents, which may call WindowResizeNotify. As
2985 we never should call a wrapped function that's currently
2986 processed, we need the timer for the moment. updateWindowOutputExtents
2987 should be fixed so that it does not emit a resize notification. */
2988 updateMatrix = true;2985 updateMatrix = true;
2989 updateReg = true;2986 updateReg = true;
29902987
@@ -3009,19 +3006,7 @@
3009void3006void
3010DecorWindow::stateChangeNotify (unsigned int lastState)3007DecorWindow::stateChangeNotify (unsigned int lastState)
3011{3008{
3012 if (wd && wd->decor)3009 update (true);
3013 {
3014 if ((window->state () & MAXIMIZE_STATE))
3015 window->setWindowFrameExtents (&wd->decor->maxBorder,
3016 &wd->decor->maxInput);
3017 else
3018 window->setWindowFrameExtents (&wd->decor->border,
3019 &wd->decor->input);
3020
3021 /* The shift will occurr in decorOffsetMove */
3022
3023 updateFrame ();
3024 }
30253010
3026 window->stateChangeNotify (lastState);3011 window->stateChangeNotify (lastState);
3027}3012}
@@ -3258,7 +3243,8 @@
3258 mClipGroup (NULL),3243 mClipGroup (NULL),
3259 mOutputRegion (window->outputRect ()),3244 mOutputRegion (window->outputRect ()),
3260 mInputRegion (window->inputRect ()),3245 mInputRegion (window->inputRect ()),
3261 mRequestor (screen->dpy (), w->id (), &decor)3246 mRequestor (screen->dpy (), w->id (), &decor),
3247 lastMaximizedStateDecorated (0)
3262{3248{
3263 WindowInterface::setHandler (window);3249 WindowInterface::setHandler (window);
32643250
32653251
=== modified file 'plugins/decor/src/decor.h'
--- plugins/decor/src/decor.h 2013-04-17 23:41:09 +0000
+++ plugins/decor/src/decor.h 2013-06-05 08:25:46 +0000
@@ -385,6 +385,8 @@
385 CompPoint lastShift;385 CompPoint lastShift;
386 CompSize lastSizeDelta;386 CompSize lastSizeDelta;
387387
388 unsigned int lastMaximizedStateDecorated;
389
388 private:390 private:
389391
390 bool bareDecorationOnly ();392 bool bareDecorationOnly ();
391393
=== modified file 'src/window.cpp'
--- src/window.cpp 2013-05-27 16:19:59 +0000
+++ src/window.cpp 2013-06-05 08:25:46 +0000
@@ -6610,10 +6610,7 @@
66106610
6611 recalcActions ();6611 recalcActions ();
66126612
6613 bool sizeUpdated = false;6613 bool sizeUpdated = priv->updateFrameWindow ();
6614
6615 sizeUpdated |= priv->updateSize ();
6616 sizeUpdated |= priv->updateFrameWindow ();
66176614
6618 /* Always send a moveNotify6615 /* Always send a moveNotify
6619 * whenever the frame extents update6616 * whenever the frame extents update

Subscribers

People subscribed via source and target branches

to all changes: