diff --git a/libkdecorations/kdecoration.cpp b/libkdecorations/kdecoration.cpp
index 1229f24a6e..e53f55cecc 100644
--- a/libkdecorations/kdecoration.cpp
+++ b/libkdecorations/kdecoration.cpp
@@ -474,6 +474,11 @@ KDecoration::WindowOperation KDecorationUnstable::buttonToWindowOperation(Qt::Mo
     return static_cast< KDecorationBridgeUnstable* >(bridge_)->buttonToWindowOperation(button);
 }
 
+QRegion KDecorationUnstable::region(KDecorationDefines::Region)
+{
+    return QRegion();
+}
+
 QString KDecorationDefines::clientGroupItemDragMimeType()
 {
     return "text/ClientGroupItem";
diff --git a/libkdecorations/kdecoration.h b/libkdecorations/kdecoration.h
index 86b5ce2a26..030afa0bbb 100644
--- a/libkdecorations/kdecoration.h
+++ b/libkdecorations/kdecoration.h
@@ -205,10 +205,29 @@ public:
     enum Requirement { REQUIREMENT_DUMMY = 1000000 };
 
     /**
-    *
-    * Returns mimeType used to drag and drop clientGroupItems
-    */
+     * Regions that can be returned by KDecorationUnstable::region().
+     */
+    enum Region {
+        /**
+         * This is an invisible input region that can be used to expand the
+         * borders by an invisible amount, both inside and outside the
+         * decoration. The intended use case is to provide an active border
+         * area that's larger than the visible border.
+         *
+         * The mousePosition() implementation must return correct values
+         * for the pixels inside this region.
+         *
+         * Note that mouse events that occur within this region are not
+         * forwarded to the decoration. This may change in the future.
+         *
+         * @since 4.8
+         */
+        ExtendedBorderRegion
+    };
 
+    /**
+     * Returns the mimeType used to drag and drop clientGroupItems
+     */
     static QString clientGroupItemDragMimeType();
 
 };
@@ -978,6 +997,17 @@ public:
      * a button press was for window tab dragging or for displaying the client menu.
      */
     WindowOperation buttonToWindowOperation(Qt::MouseButtons button);
+
+public Q_SLOTS:
+    /**
+     * This slot can be reimplemented to return the regions defined
+     * by KDecorationDefines::Region.
+     *
+     * The default implementation always returns an empty region.
+     *
+     * @since 4.8
+     */
+    QRegion region(KDecorationDefines::Region r);
 };
 
 inline