comparison grapher.cpp @ 55:261bfb9481fe

* Make changeset item boxes wider if they have no neighbours. Changeset item code is horrible -- items generally need refactoring to take out hardcoded dimensions.
author Chris Cannam
date Fri, 12 Nov 2010 17:30:53 +0000
parents 3c46b2ac45d3
children f583e44d9d31
comparison
equal deleted inserted replaced
54:0e5fba6750c2 55:261bfb9481fe
184 184
185 foreach (QString childId, cs->children()) { 185 foreach (QString childId, cs->children()) {
186 if (!m_changesets.contains(childId)) continue; 186 if (!m_changesets.contains(childId)) continue;
187 Changeset *child = m_changesets[childId]; 187 Changeset *child = m_changesets[childId];
188 int childRow = m_items[childId]->row(); 188 int childRow = m_items[childId]->row();
189 if (child->parents().size() > 1 || child->branch() == cs->branch()) { 189 if (child->parents().size() > 1 ||
190 for (int r = row; r > childRow; --r) { 190 child->branch() == cs->branch()) {
191 for (int r = row-1; r > childRow; --r) {
191 m_alloc[r].insert(col); 192 m_alloc[r].insert(col);
192 } 193 }
193 } 194 }
194 } 195 }
195 196
209 } 210 }
210 if (special.size() == 2) { 211 if (special.size() == 2) {
211 for (int i = 0; i < 2; ++i) { 212 for (int i = 0; i < 2; ++i) {
212 int off = i * 2 - 1; // 0 -> -1, 1 -> 1 213 int off = i * 2 - 1; // 0 -> -1, 1 -> 1
213 ChangesetItem *it = m_items[special[i]]; 214 ChangesetItem *it = m_items[special[i]];
214 m_alloc[it->row()].insert(col); // avoid our column
215 it->setColumn(findAvailableColumn(it->row(), col + off, true)); 215 it->setColumn(findAvailableColumn(it->row(), col + off, true));
216 for (int r = row; r >= it->row(); --r) { 216 for (int r = row-1; r >= it->row(); --r) {
217 m_alloc[r].insert(it->column()); 217 m_alloc[r].insert(it->column());
218 } 218 }
219 m_handled.insert(special[i]); 219 m_handled.insert(special[i]);
220 } 220 }
221 } 221 }
382 } 382 }
383 } 383 }
384 layoutCol(cs->id()); 384 layoutCol(cs->id());
385 } 385 }
386 386
387 foreach (Changeset *cs, csets) {
388 ChangesetItem *item = m_items[cs->id()];
389 if (!m_alloc[item->row()].contains(item->column()-1) &&
390 !m_alloc[item->row()].contains(item->column()+1)) {
391 item->setWide(true);
392 }
393 }
394
387 // we know that 0 is an upper bound on row, and that mincol must 395 // we know that 0 is an upper bound on row, and that mincol must
388 // be <= 0 and maxcol >= 0, so these initial values are good 396 // be <= 0 and maxcol >= 0, so these initial values are good
389 int minrow = 0, maxrow = 0; 397 int minrow = 0, maxrow = 0;
390 int mincol = 0, maxcol = 0; 398 int mincol = 0, maxcol = 0;
391 399