Adding sortscreens patch

This commit is contained in:
bakkeby
2019-10-07 22:56:53 +02:00
parent fc28c6a7b2
commit 2612060419
7 changed files with 46 additions and 0 deletions

View File

@ -94,6 +94,12 @@
#include "setborderpx.c"
#endif
#ifdef XINERAMA
#if SORTSCREENS_PATCH
#include "sortscreens.c"
#endif
#endif
#if STICKY_PATCH
#include "sticky.c"
#endif

View File

@ -94,6 +94,12 @@
#include "setborderpx.h"
#endif
#ifdef XINERAMA
#if SORTSCREENS_PATCH
#include "sortscreens.h"
#endif
#endif
#if STICKY_PATCH
#include "sticky.h"
#endif

15
patch/sortscreens.c Normal file
View File

@ -0,0 +1,15 @@
void
sortscreens(XineramaScreenInfo *screens, int n)
{
int i, j;
XineramaScreenInfo *screen = ecalloc(1, sizeof(XineramaScreenInfo));
for (i = 0; i < n; i++)
for (j = i + 1; j < n; j++)
if (RIGHTOF(screens[i], screens[j])) {
memcpy(&screen[0], &screens[i], sizeof(XineramaScreenInfo));
memcpy(&screens[i], &screens[j], sizeof(XineramaScreenInfo));
memcpy(&screens[j], &screen[0], sizeof(XineramaScreenInfo));
}
XFree(screen);
}

3
patch/sortscreens.h Normal file
View File

@ -0,0 +1,3 @@
#define RIGHTOF(a,b) (a.y_org > b.y_org) || ((a.y_org == b.y_org) && (a.x_org > b.x_org))
static void sortscreens(XineramaScreenInfo *screens, int n);