Fix pointer accesses in tiling code
Forward port of http://commits.kde.org/kde-workspace/75021be9184da93c2410b37751bb0b9fdeb5de5a BUG: 274223
This commit is contained in:
parent
f1e6be97f5
commit
622fad3a9f
3 changed files with 9 additions and 14 deletions
|
@ -35,11 +35,10 @@ Tile::Tile(Client *c, const QRect& area)
|
||||||
: m_client(c),
|
: m_client(c),
|
||||||
m_floating(false)
|
m_floating(false)
|
||||||
{
|
{
|
||||||
|
Q_ASSERT(c != NULL);
|
||||||
setGeometry(area);
|
setGeometry(area);
|
||||||
if (c) {
|
m_prevGeom = c->geometry();
|
||||||
m_prevGeom = c->geometry();
|
if (!c->isResizable())
|
||||||
}
|
|
||||||
if (c && !c->isResizable())
|
|
||||||
floatTile();
|
floatTile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,8 +59,6 @@ Tile::Tile(const Tile& orig)
|
||||||
Tile::~Tile()
|
Tile::~Tile()
|
||||||
{
|
{
|
||||||
restorePreviousGeometry();
|
restorePreviousGeometry();
|
||||||
|
|
||||||
m_client = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tile::commit()
|
void Tile::commit()
|
||||||
|
@ -115,11 +112,6 @@ void Tile::unfloatTile()
|
||||||
|
|
||||||
void Tile::restorePreviousGeometry()
|
void Tile::restorePreviousGeometry()
|
||||||
{
|
{
|
||||||
// why this check?
|
|
||||||
// sometimes we remove a Tile, but don't want to remove the children
|
|
||||||
// so the children are set to NULL. In this case leaf() will return
|
|
||||||
// true but m_client will still be null
|
|
||||||
if (!m_client) return;
|
|
||||||
if (m_prevGeom.isNull()) {
|
if (m_prevGeom.isNull()) {
|
||||||
QRect area = m_client->workspace()->clientArea(PlacementArea, m_client);
|
QRect area = m_client->workspace()->clientArea(PlacementArea, m_client);
|
||||||
m_client->workspace()->place(m_client, area);
|
m_client->workspace()->place(m_client, area);
|
||||||
|
|
|
@ -187,16 +187,17 @@ bool Tiling::tileable(Client* c)
|
||||||
|
|
||||||
void Tiling::belowCursor()
|
void Tiling::belowCursor()
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO ... "WHAT?" remove? What's a parameterless void function supposed to do?
|
||||||
}
|
}
|
||||||
|
|
||||||
Tile* Tiling::getNiceTile() const
|
Tile* Tiling::getNiceTile() const
|
||||||
{
|
{
|
||||||
if (!isEnabled()) return NULL;
|
if (!isEnabled()) return NULL;
|
||||||
|
if (!m_workspace->activeClient()) return NULL;
|
||||||
if (!m_tilingLayouts.value(m_workspace->activeClient()->desktop())) return NULL;
|
if (!m_tilingLayouts.value(m_workspace->activeClient()->desktop())) return NULL;
|
||||||
|
|
||||||
return m_tilingLayouts[ m_workspace->activeClient()->desktop()]->findTile(m_workspace->activeClient());
|
return m_tilingLayouts[ m_workspace->activeClient()->desktop()]->findTile(m_workspace->activeClient());
|
||||||
// TODO
|
// TODO ... WHAT?
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tiling::updateAllTiles()
|
void Tiling::updateAllTiles()
|
||||||
|
@ -460,6 +461,8 @@ void Tiling::slotMoveTileBottom()
|
||||||
void Tiling::slotToggleFloating()
|
void Tiling::slotToggleFloating()
|
||||||
{
|
{
|
||||||
Client *c = m_workspace->activeClient();
|
Client *c = m_workspace->activeClient();
|
||||||
|
if (!c)
|
||||||
|
return;
|
||||||
if (m_tilingLayouts.value(c->desktop())) {
|
if (m_tilingLayouts.value(c->desktop())) {
|
||||||
m_tilingLayouts[ c->desktop()]->toggleFloatTile(c);
|
m_tilingLayouts[ c->desktop()]->toggleFloatTile(c);
|
||||||
}
|
}
|
||||||
|
|
|
@ -217,7 +217,7 @@ Tile* TilingLayout::findTileBelowPoint(const QPoint &p) const
|
||||||
void TilingLayout::commit()
|
void TilingLayout::commit()
|
||||||
{
|
{
|
||||||
foreach (Tile * t, m_tiles)
|
foreach (Tile * t, m_tiles)
|
||||||
t->commit();
|
t->commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue