484_uppsrc3.diff

The diff file to apply for uppsrc directory (third version) - Sender Ghost, 08/20/2013 12:21 AM

Download (1.92 KB)

View differences:

uppsrc/ide/LayDes/laydes.cpp 2013-08-20 02:14:36 +0400
1252 1252
	ReloadItems();
1253 1253
}
1254 1254

  
1255
bool RectLess(const Rect& a, const Rect& b)
1256
{
1257
	if(a.top < b.top)
1258
		return true;
1259
	if(a.top == b.top)
1260
		return a.left < b.left;
1261
	return false;
1262
}
1263

  
1264
void LayDes::SortItems()
1265
{
1266
	SaveState();
1267
	if(currentlayout < 0)
1268
		return;
1269
	LayoutData& l = CurrentLayout();
1270
	int count = l.item.GetCount();
1271
	Vector<Rect> rect;
1272
	rect.SetCount(count);
1273
	for(int i = 0; i < count; ++i)
1274
		rect[i] = CtrlRect(l.item[i].pos, l.size);
1275
	Vector<int> order;
1276
	order.SetCount(count);
1277
	for(int i = count; --i >= 0; order[i] = i);
1278
	IndexSort2(rect, order, l.item, &RectLess);
1279
	for(int i = 0, n = cursor.GetCount(); i < n; ++i) {
1280
		int index = FindIndex(order, cursor[i]);
1281
		if(index >= 0)
1282
			cursor[i] = index;
1283
	}
1284
	ReloadItems();
1285
}
1286

  
1255 1287
void LayDes::Flush()
1256 1288
{
1257 1289
	currentlayout = -1;
uppsrc/ide/LayDes/LayDes.h 2013-08-14 01:22:04 +0400
384 384
	void        Duplicate();
385 385
	void        MoveUp();
386 386
	void        MoveDown();
387
	void        SortItems();
387 388
	void        SelectAll();
388 389

  
389 390
	void        Matrix();
uppsrc/ide/LayDes/laywin.cpp 2013-08-20 02:14:41 +0400
48 48
	bool iscursor = currentlayout >= 0 && cursor.GetCount();
49 49
	bar.Add(iscursor, AK_MOVEUP, LayImg::MoveUp(), THISBACK(MoveUp));
50 50
	bar.Add(iscursor, AK_MOVEDOWN, LayImg::MoveDown(), THISBACK(MoveDown));
51
	bar.Separator();
52
	bar.Add(item.GetCount() >= 2, "Sort by position", THISBACK(SortItems));
51 53
}
52 54

  
53 55
void LayDes::AlignBar(Bar& bar)