Only allow windows with a normal thick border to S&T. Fixes #6647.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42492 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -427,6 +427,14 @@ SATWindow::RemovedFromArea(WindowArea* area)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
SATWindow::WindowLookChanged(window_look look)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < fSATSnappingBehaviourList.CountItems(); i++)
|
||||||
|
fSATSnappingBehaviourList.ItemAt(i)->WindowLookChanged(look);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SATWindow::FindSnappingCandidates()
|
SATWindow::FindSnappingCandidates()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ public:
|
|||||||
bool RemovedFromGroup(SATGroup* group,
|
bool RemovedFromGroup(SATGroup* group,
|
||||||
bool stayBelowMouse);
|
bool stayBelowMouse);
|
||||||
void RemovedFromArea(WindowArea* area);
|
void RemovedFromArea(WindowArea* area);
|
||||||
|
void WindowLookChanged(window_look look);
|
||||||
|
|
||||||
bool StackWindow(SATWindow* child);
|
bool StackWindow(SATWindow* child);
|
||||||
|
|
||||||
|
|||||||
@@ -382,10 +382,19 @@ StackAndTile::SizeLimitsChanged(Window* window, int32 minWidth, int32 maxWidth,
|
|||||||
void
|
void
|
||||||
StackAndTile::WindowLookChanged(Window* window, window_look look)
|
StackAndTile::WindowLookChanged(Window* window, window_look look)
|
||||||
{
|
{
|
||||||
// if the decorator has been removed remove it from the stacking group
|
SATWindow* satWindow = GetSATWindow(window);
|
||||||
if (look != B_NO_BORDER_WINDOW_LOOK)
|
if (!satWindow)
|
||||||
return;
|
return;
|
||||||
|
satWindow->WindowLookChanged(look);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
StackAndTile::WindowFeelChanged(Window* window, window_feel feel)
|
||||||
|
{
|
||||||
|
// check if it is still a compatible feel
|
||||||
|
if (feel != B_NORMAL_WINDOW_FEEL)
|
||||||
|
return;
|
||||||
SATWindow* satWindow = GetSATWindow(window);
|
SATWindow* satWindow = GetSATWindow(window);
|
||||||
if (!satWindow)
|
if (!satWindow)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -80,6 +80,8 @@ public:
|
|||||||
int32 minHeight, int32 maxHeight);
|
int32 minHeight, int32 maxHeight);
|
||||||
virtual void WindowLookChanged(Window* window,
|
virtual void WindowLookChanged(Window* window,
|
||||||
window_look look);
|
window_look look);
|
||||||
|
virtual void WindowFeelChanged(Window* window,
|
||||||
|
window_feel feel);
|
||||||
|
|
||||||
virtual bool SetDecoratorSettings(Window* window,
|
virtual bool SetDecoratorSettings(Window* window,
|
||||||
const BMessage& settings);
|
const BMessage& settings);
|
||||||
@@ -166,8 +168,7 @@ public:
|
|||||||
/*! Update the window tab values, solve the layout and move all windows in
|
/*! Update the window tab values, solve the layout and move all windows in
|
||||||
the group accordantly. */
|
the group accordantly. */
|
||||||
virtual void RemovedFromArea(WindowArea* area) {}
|
virtual void RemovedFromArea(WindowArea* area) {}
|
||||||
virtual void TabLocationMoved(float location, bool shifting)
|
virtual void WindowLookChanged(window_look look) {}
|
||||||
{}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -239,6 +239,9 @@ SATStacking::FindSnappingCandidates(SATGroup* group)
|
|||||||
Window* win = satWindow->GetWindow();
|
Window* win = satWindow->GetWindow();
|
||||||
if (win == window || !win->Decorator())
|
if (win == window || !win->Decorator())
|
||||||
continue;
|
continue;
|
||||||
|
if (_IsStackableWindow(win) == false
|
||||||
|
|| _IsStackableWindow(window) == false)
|
||||||
|
continue;
|
||||||
Decorator::Tab* tab = win->Decorator()->TabAt(win->PositionInStack());
|
Decorator::Tab* tab = win->Decorator()->TabAt(win->PositionInStack());
|
||||||
if (tab == NULL)
|
if (tab == NULL)
|
||||||
continue;
|
continue;
|
||||||
@@ -276,6 +279,32 @@ SATStacking::RemovedFromArea(WindowArea* area)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
SATStacking::WindowLookChanged(window_look look)
|
||||||
|
{
|
||||||
|
Window* window = fSATWindow->GetWindow();
|
||||||
|
WindowStack* stack = window->GetWindowStack();
|
||||||
|
if (stack == NULL)
|
||||||
|
return;
|
||||||
|
SATGroup* group = fSATWindow->GetGroup();
|
||||||
|
if (group == NULL)
|
||||||
|
return;
|
||||||
|
if (stack->CountWindows() > 1 && _IsStackableWindow(window) == false)
|
||||||
|
group->RemoveWindow(fSATWindow);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
SATStacking::_IsStackableWindow(Window* window)
|
||||||
|
{
|
||||||
|
if (window->Look() == B_DOCUMENT_WINDOW_LOOK)
|
||||||
|
return true;
|
||||||
|
if (window->Look() == B_TITLED_WINDOW_LOOK)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SATStacking::_ClearSearchResult()
|
SATStacking::_ClearSearchResult()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -34,8 +34,9 @@ public:
|
|||||||
void DoWindowLayout();
|
void DoWindowLayout();
|
||||||
|
|
||||||
void RemovedFromArea(WindowArea* area);
|
void RemovedFromArea(WindowArea* area);
|
||||||
|
void WindowLookChanged(window_look look);
|
||||||
private:
|
private:
|
||||||
|
bool _IsStackableWindow(Window* window);
|
||||||
void _ClearSearchResult();
|
void _ClearSearchResult();
|
||||||
void _HighlightWindows(bool highlight = true);
|
void _HighlightWindows(bool highlight = true);
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,10 @@ SATTiling::FindSnappingCandidates(SATGroup* group)
|
|||||||
{
|
{
|
||||||
_ResetSearchResults();
|
_ResetSearchResults();
|
||||||
|
|
||||||
|
if (_IsTileableWindow(fSATWindow->GetWindow()) == false
|
||||||
|
|| (group->CountItems() == 1
|
||||||
|
&& _IsTileableWindow(group->WindowAt(0)->GetWindow()) == false))
|
||||||
|
return false;
|
||||||
if (fSATWindow->GetGroup() == group)
|
if (fSATWindow->GetGroup() == group)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -78,6 +82,34 @@ SATTiling::JoinCandidates()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
SATTiling::WindowLookChanged(window_look look)
|
||||||
|
{
|
||||||
|
SATGroup* group = fSATWindow->GetGroup();
|
||||||
|
if (group == NULL)
|
||||||
|
return;
|
||||||
|
if (_IsTileableWindow(fSATWindow->GetWindow()) == false)
|
||||||
|
group->RemoveWindow(fSATWindow);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
SATTiling::_IsTileableWindow(Window* window)
|
||||||
|
{
|
||||||
|
if (window->Look() == B_DOCUMENT_WINDOW_LOOK)
|
||||||
|
return true;
|
||||||
|
if (window->Look() == B_TITLED_WINDOW_LOOK)
|
||||||
|
return true;
|
||||||
|
if (window->Look() == B_FLOATING_WINDOW_LOOK)
|
||||||
|
return true;
|
||||||
|
if (window->Look() == B_MODAL_WINDOW_LOOK)
|
||||||
|
return true;
|
||||||
|
if (window->Look() == B_BORDERED_WINDOW_LOOK)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
SATTiling::_FindFreeAreaInGroup(SATGroup* group)
|
SATTiling::_FindFreeAreaInGroup(SATGroup* group)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,7 +25,10 @@ public:
|
|||||||
bool FindSnappingCandidates(SATGroup* group);
|
bool FindSnappingCandidates(SATGroup* group);
|
||||||
bool JoinCandidates();
|
bool JoinCandidates();
|
||||||
|
|
||||||
|
void WindowLookChanged(window_look look);
|
||||||
private:
|
private:
|
||||||
|
bool _IsTileableWindow(Window* window);
|
||||||
|
|
||||||
bool _FindFreeAreaInGroup(SATGroup* group);
|
bool _FindFreeAreaInGroup(SATGroup* group);
|
||||||
bool _FindFreeAreaInGroup(SATGroup* group,
|
bool _FindFreeAreaInGroup(SATGroup* group,
|
||||||
Corner::position_t corner);
|
Corner::position_t corner);
|
||||||
|
|||||||
@@ -1724,6 +1724,8 @@ Desktop::SetWindowFeel(Window* window, window_feel newFeel)
|
|||||||
if (window == FocusWindow() && !window->IsVisible())
|
if (window == FocusWindow() && !window->IsVisible())
|
||||||
SetFocusWindow();
|
SetFocusWindow();
|
||||||
|
|
||||||
|
NotifyWindowFeelChanged(window, newFeel);
|
||||||
|
|
||||||
UnlockAllWindows();
|
UnlockAllWindows();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -284,6 +284,19 @@ DesktopObservable::NotifyWindowLookChanged(Window* window, window_look look)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
DesktopObservable::NotifyWindowFeelChanged(Window* window, window_feel feel)
|
||||||
|
{
|
||||||
|
if (fWeAreInvoking)
|
||||||
|
return;
|
||||||
|
InvokeGuard invokeGuard(fWeAreInvoking);
|
||||||
|
|
||||||
|
for (DesktopListener* listener = fDesktopListenerList.First();
|
||||||
|
listener != NULL; listener = fDesktopListenerList.GetNext(listener))
|
||||||
|
listener->WindowFeelChanged(window, feel);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DesktopObservable::SetDecoratorSettings(Window* window,
|
DesktopObservable::SetDecoratorSettings(Window* window,
|
||||||
const BMessage& settings)
|
const BMessage& settings)
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ public:
|
|||||||
int32 minHeight, int32 maxHeight) = 0;
|
int32 minHeight, int32 maxHeight) = 0;
|
||||||
virtual void WindowLookChanged(Window* window,
|
virtual void WindowLookChanged(Window* window,
|
||||||
window_look look) = 0;
|
window_look look) = 0;
|
||||||
|
virtual void WindowFeelChanged(Window* window,
|
||||||
|
window_feel feel) = 0;
|
||||||
|
|
||||||
virtual bool SetDecoratorSettings(Window* window,
|
virtual bool SetDecoratorSettings(Window* window,
|
||||||
const BMessage& settings) = 0;
|
const BMessage& settings) = 0;
|
||||||
@@ -119,6 +121,8 @@ public:
|
|||||||
int32 minHeight, int32 maxHeight);
|
int32 minHeight, int32 maxHeight);
|
||||||
void NotifyWindowLookChanged(Window* window,
|
void NotifyWindowLookChanged(Window* window,
|
||||||
window_look look);
|
window_look look);
|
||||||
|
void NotifyWindowFeelChanged(Window* window,
|
||||||
|
window_feel feel);
|
||||||
|
|
||||||
bool SetDecoratorSettings(Window* window,
|
bool SetDecoratorSettings(Window* window,
|
||||||
const BMessage& settings);
|
const BMessage& settings);
|
||||||
|
|||||||
@@ -2100,6 +2100,8 @@ Window::DetachFromWindowStack(bool ownStackNeeded)
|
|||||||
decorator->SetDrawingEngine(remainingTop->fDrawingEngine);
|
decorator->SetDrawingEngine(remainingTop->fDrawingEngine);
|
||||||
// propagate focus to the decorator
|
// propagate focus to the decorator
|
||||||
remainingTop->SetFocus(remainingTop->IsFocus());
|
remainingTop->SetFocus(remainingTop->IsFocus());
|
||||||
|
remainingTop->SetFeel(remainingTop->Feel());
|
||||||
|
remainingTop->SetLook(remainingTop->Look(), &dirty);
|
||||||
}
|
}
|
||||||
|
|
||||||
fCurrentStack = NULL;
|
fCurrentStack = NULL;
|
||||||
@@ -2185,7 +2187,6 @@ Window::GetWindowStack()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Window::MoveToTopStackLayer()
|
Window::MoveToTopStackLayer()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user