Umm, decorator was fully redrawn if another window went over it. This should happen in resizing only. Fixed that now.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8356 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
758822b29d
commit
826375885f
@ -65,6 +65,7 @@ Layer::Layer(BRect frame, const char *name, int32 token, uint32 resize,
|
|||||||
fFlags = flags;
|
fFlags = flags;
|
||||||
fAdFlags = 0;
|
fAdFlags = 0;
|
||||||
fClassID = AS_LAYER_CLASS;
|
fClassID = AS_LAYER_CLASS;
|
||||||
|
fFrameAction = B_LAYER_NONE;
|
||||||
fResizeMode = resize;
|
fResizeMode = resize;
|
||||||
fHidden = false;
|
fHidden = false;
|
||||||
|
|
||||||
@ -456,7 +457,7 @@ void Layer::RequestDraw(const BRegion ®, Layer *startFrom)
|
|||||||
// calculate the minimum region/rectangle to be updated with
|
// calculate the minimum region/rectangle to be updated with
|
||||||
// a single message to the client.
|
// a single message to the client.
|
||||||
fUpdateReg = fFullVisible;
|
fUpdateReg = fFullVisible;
|
||||||
if (fFlags & B_FULL_UPDATE_ON_RESIZE){ }
|
if (fFlags & B_FULL_UPDATE_ON_RESIZE && fFrameAction == B_LAYER_RESIZE){ }
|
||||||
else { fUpdateReg.IntersectWith(®); }
|
else { fUpdateReg.IntersectWith(®); }
|
||||||
|
|
||||||
if (fUpdateReg.CountRects() > 0)
|
if (fUpdateReg.CountRects() > 0)
|
||||||
@ -486,7 +487,7 @@ void Layer::RequestDraw(const BRegion ®, Layer *startFrom)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
fUpdateReg = fVisible;
|
fUpdateReg = fVisible;
|
||||||
if (fFlags & B_FULL_UPDATE_ON_RESIZE){ }
|
if (fFlags & B_FULL_UPDATE_ON_RESIZE && fFrameAction == B_LAYER_RESIZE){ }
|
||||||
else { fUpdateReg.IntersectWith(®); }
|
else { fUpdateReg.IntersectWith(®); }
|
||||||
|
|
||||||
if (fUpdateReg.CountRects() > 0)
|
if (fUpdateReg.CountRects() > 0)
|
||||||
@ -1015,6 +1016,8 @@ void Layer::MoveBy(float x, float y)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fFrameAction = B_LAYER_MOVE;
|
||||||
|
|
||||||
BPoint pt(x,y);
|
BPoint pt(x,y);
|
||||||
BRect rect(fFull.Frame().OffsetByCopy(pt));
|
BRect rect(fFull.Frame().OffsetByCopy(pt));
|
||||||
|
|
||||||
@ -1024,6 +1027,8 @@ void Layer::MoveBy(float x, float y)
|
|||||||
|
|
||||||
EmptyGlobals();
|
EmptyGlobals();
|
||||||
|
|
||||||
|
fFrameAction = B_LAYER_NONE;
|
||||||
|
|
||||||
STRACE(("Layer(%s)::MoveBy() END\n", GetName()));
|
STRACE(("Layer(%s)::MoveBy() END\n", GetName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1116,6 +1121,8 @@ void Layer::ResizeBy(float x, float y)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fFrameAction = B_LAYER_RESIZE;
|
||||||
|
|
||||||
BPoint pt(x,y);
|
BPoint pt(x,y);
|
||||||
BRect rect(fFull.Frame());
|
BRect rect(fFull.Frame());
|
||||||
rect.right += x;
|
rect.right += x;
|
||||||
@ -1128,6 +1135,8 @@ void Layer::ResizeBy(float x, float y)
|
|||||||
|
|
||||||
EmptyGlobals();
|
EmptyGlobals();
|
||||||
|
|
||||||
|
fFrameAction = B_LAYER_NONE;
|
||||||
|
|
||||||
STRACE(("Layer(%s)::ResizeBy() END\n", GetName()));
|
STRACE(("Layer(%s)::ResizeBy() END\n", GetName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,11 +12,11 @@
|
|||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
B_LAYER_NONE = 0x00001000UL,
|
B_LAYER_NONE = 0x1U,
|
||||||
B_LAYER_MOVE = 0x00002000UL,
|
B_LAYER_MOVE = 0x2U,
|
||||||
B_LAYER_SIMPLE_MOVE = 0x00004000UL,
|
B_LAYER_SIMPLE_MOVE = 0x3U,
|
||||||
B_LAYER_RESIZE = 0x00008000UL,
|
B_LAYER_RESIZE = 0x4U,
|
||||||
B_LAYER_MASK_RESIZE = 0x00010000UL,
|
B_LAYER_MASK_RESIZE = 0x5U,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@ -157,6 +157,7 @@ protected:
|
|||||||
bool fIsTopLayer;
|
bool fIsTopLayer;
|
||||||
uint16 fAdFlags;
|
uint16 fAdFlags;
|
||||||
int8 fClassID;
|
int8 fClassID;
|
||||||
|
bool fFrameAction;
|
||||||
|
|
||||||
DisplayDriver *fDriver;
|
DisplayDriver *fDriver;
|
||||||
LayerData *fLayerData;
|
LayerData *fLayerData;
|
||||||
|
Loading…
Reference in New Issue
Block a user