vcl: GTK: fix libstdc++ "irreflexive" assert

/usr/include/c++/6.1.1/bits/stl_algo.h:4737:
Error: comparison doesn't meet irreflexive requirements, assert(!(a < a)).

GdkRectangleCoincident is clearly not a less-than operator as required
for std::sort.

Change-Id: If2e65d420dc8cdf0707081361a40d4eaea28424e
(cherry picked from commit e2b267b1906817cc45f0e4896bed58cff5b6b0f9)
Reviewed-on: https://gerrit.libreoffice.org/26762
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/vcl/unx/gtk/gtksys.cxx b/vcl/unx/gtk/gtksys.cxx
index ac24256..80831d6 100644
--- a/vcl/unx/gtk/gtksys.cxx
+++ b/vcl/unx/gtk/gtksys.cxx
@@ -62,6 +62,17 @@ GtkSalSystem::GetDisplayXScreenCount()
namespace
{

struct GdkRectangleCoincidentLess
{
    // fdo#78799 - detect and elide overlaying monitors of different sizes
    bool operator()(GdkRectangle const& rLeft, GdkRectangle const& rRight)
    {
        return
            rLeft.x < rRight.x
            || rLeft.y < rRight.y
            ;
    }
};
struct GdkRectangleCoincident
{
    // fdo#78799 - detect and elide overlaying monitors of different sizes
@@ -101,10 +112,11 @@ GtkSalSystem::countScreenMonitors()
                gdk_screen_get_monitor_geometry(pScreen, j, &aGeometry);
                aGeometries.push_back(aGeometry);
            }
            GdkRectangleCoincident aCmp;
            std::sort(aGeometries.begin(), aGeometries.end(), aCmp);
            std::sort(aGeometries.begin(), aGeometries.end(),
                    GdkRectangleCoincidentLess());
            const std::vector<GdkRectangle>::iterator aUniqueEnd(
                    std::unique(aGeometries.begin(), aGeometries.end(), aCmp));
                    std::unique(aGeometries.begin(), aGeometries.end(),
                    GdkRectangleCoincident()));
            nMonitors = std::distance(aGeometries.begin(), aUniqueEnd);
        }
        maScreenMonitors.push_back(std::make_pair(pScreen, nMonitors));