summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2011-07-12 00:55:50 -0400
committerJasper St. Pierre <jstpierre@mecheye.net>2011-08-09 17:14:51 -0400
commita1a2527c75ab0c135f89396ea036336fb67ac538 (patch)
treefd954b21aa2e769af04f873d511a6d5a9002c1cb
parent6f5882302f9e884eefb9e82276007c191247562c (diff)
downloadmutter-a1a2527c75ab0c135f89396ea036336fb67ac538.tar.gz
MetaFrameBorders: Add invisible borders
This just adds the invisible border field and populates it with data but doesn't use it in any way. https://bugzilla.gnome.org/show_bug.cgi?id=644930
-rw-r--r--src/core/frame.c8
-rw-r--r--src/meta/common.h5
-rw-r--r--src/ui/theme.c19
3 files changed, 27 insertions, 5 deletions
diff --git a/src/core/frame.c b/src/core/frame.c
index e42a13d10..a203253bb 100644
--- a/src/core/frame.c
+++ b/src/core/frame.c
@@ -304,10 +304,10 @@ meta_frame_get_flags (MetaFrame *frame)
void
meta_frame_borders_clear (MetaFrameBorders *self)
{
- self->visible.top = 0;
- self->visible.bottom = 0;
- self->visible.left = 0;
- self->visible.right = 0;
+ self->visible.top = self->invisible.top = self->total.top = 0;
+ self->visible.bottom = self->invisible.bottom = self->total.bottom = 0;
+ self->visible.left = self->invisible.left = self->total.left = 0;
+ self->visible.right = self->invisible.right = self->total.right = 0;
}
void
diff --git a/src/meta/common.h b/src/meta/common.h
index a78516ddf..3f3126777 100644
--- a/src/meta/common.h
+++ b/src/meta/common.h
@@ -310,6 +310,11 @@ struct _MetaFrameBorders
* and an outer portion that is invisible but responds to events.
*/
GtkBorder visible;
+ GtkBorder invisible;
+
+ /* For convenience, we have a "total" border which is equal to the sum
+ * of the two borders above. */
+ GtkBorder total;
};
/* sets all dimensions to zero */
diff --git a/src/ui/theme.c b/src/ui/theme.c
index b878d9269..bad884291 100644
--- a/src/ui/theme.c
+++ b/src/ui/theme.c
@@ -56,6 +56,7 @@
#include "theme-private.h"
#include <meta/util.h>
#include <meta/gradient.h>
+#include <meta/prefs.h>
#include <gtk/gtk.h>
#include <string.h>
#include <stdlib.h>
@@ -402,7 +403,7 @@ meta_frame_layout_get_borders (const MetaFrameLayout *layout,
MetaFrameFlags flags,
MetaFrameBorders *borders)
{
- int buttons_height, title_height;
+ int buttons_height, title_height, draggable_borders;
g_return_if_fail (layout != NULL);
@@ -428,6 +429,22 @@ meta_frame_layout_get_borders (const MetaFrameLayout *layout,
meta_frame_borders_clear (borders);
return;
}
+
+ draggable_borders = meta_prefs_get_draggable_border_width ();
+
+ borders->invisible.left = MAX (0, draggable_borders - borders->visible.left);
+ borders->invisible.right = MAX (0, draggable_borders - borders->visible.right);
+ borders->invisible.bottom = MAX (0, draggable_borders - borders->visible.bottom);
+
+ /* borders.visible is the height of the *title bar*. We can't do the same
+ * algorithm here, titlebars are expectedly much bigger. Just subtract a couple
+ * pixels to get a proper feel. */
+ borders->invisible.top = MAX (0, draggable_borders - 2);
+
+ borders->total.left = borders->invisible.left + borders->visible.left;
+ borders->total.right = borders->invisible.right + borders->visible.right;
+ borders->total.bottom = borders->invisible.bottom + borders->visible.bottom;
+ borders->total.top = borders->invisible.top + borders->visible.top;
}
static MetaButtonType