]> Dogcows Code - chaz/openbox/blobdiff - openbox/frame.c
get rid of the fullscreen below layer. its the same as maximized windows..
[chaz/openbox] / openbox / frame.c
index 716d23ada421fc82b0b8e64bad19ee07d9bfe856..8809e627c9ed2f54212aaa7b33c38040b22b5635 100644 (file)
 #define FRAME_HANDLE_Y(f) (f->innersize.top + f->client->area.height + \
                            f->cbwidth_y)
 
-/* the offsets for the titlebar elements from the edge of the titlebar.
-   negative means from the right edge. */
-gint icon_off;
-gint label_off;
-gint iconify_off;
-gint desk_off;
-gint shade_off;
-gint max_off;
-gint close_off;
-
-
 static void flash_done(gpointer data);
 static gboolean flash_timeout(gpointer data);
 
@@ -139,6 +128,8 @@ ObFrame *frame_new(ObClient *client)
     self->title = createWindow(self->window, NULL, mask, &attrib);
 
     mask |= CWCursor;
+    attrib.cursor = ob_cursor(OB_CURSOR_NORTH);
+    self->topresize = createWindow(self->title, NULL, mask, &attrib);
     attrib.cursor = ob_cursor(OB_CURSOR_NORTHWEST);
     self->tltresize = createWindow(self->title, NULL, mask, &attrib);
     self->tllresize = createWindow(self->title, NULL, mask, &attrib);
@@ -379,17 +370,27 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                 XMapWindow(ob_display, self->title);
 
                 if (self->decorations & OB_FRAME_DECOR_GRIPS) {
+                    XMoveResizeWindow(ob_display, self->topresize,
+                                      ob_rr_theme->grip_width + self->bwidth,
+                                      0,
+                                      self->width - (ob_rr_theme->grip_width +
+                                                     self->bwidth) * 2,
+                                      ob_rr_theme->paddingy + 1);
+
                     XMoveWindow(ob_display, self->tltresize, 0, 0);
                     XMoveWindow(ob_display, self->tllresize, 0, 0);
                     XMoveWindow(ob_display, self->trtresize,
                                 self->width - ob_rr_theme->grip_width, 0);
                     XMoveWindow(ob_display, self->trrresize,
                                 self->width - ob_rr_theme->paddingx - 1, 0);
+
+                    XMapWindow(ob_display, self->topresize);
                     XMapWindow(ob_display, self->tltresize);
                     XMapWindow(ob_display, self->tllresize);
                     XMapWindow(ob_display, self->trtresize);
                     XMapWindow(ob_display, self->trrresize);
                 } else {
+                    XUnmapWindow(ob_display, self->topresize);
                     XUnmapWindow(ob_display, self->tltresize);
                     XUnmapWindow(ob_display, self->tllresize);
                     XUnmapWindow(ob_display, self->trtresize);
@@ -579,6 +580,7 @@ void frame_grab_client(ObFrame *self)
     g_hash_table_insert(window_map, &self->handle, self->client);
     g_hash_table_insert(window_map, &self->lgrip, self->client);
     g_hash_table_insert(window_map, &self->rgrip, self->client);
+    g_hash_table_insert(window_map, &self->topresize, self->client);
     g_hash_table_insert(window_map, &self->tltresize, self->client);
     g_hash_table_insert(window_map, &self->tllresize, self->client);
     g_hash_table_insert(window_map, &self->trtresize, self->client);
@@ -636,6 +638,7 @@ void frame_release_client(ObFrame *self)
     g_hash_table_remove(window_map, &self->handle);
     g_hash_table_remove(window_map, &self->lgrip);
     g_hash_table_remove(window_map, &self->rgrip);
+    g_hash_table_remove(window_map, &self->topresize);
     g_hash_table_remove(window_map, &self->tltresize);
     g_hash_table_remove(window_map, &self->tllresize);
     g_hash_table_remove(window_map, &self->trtresize);
@@ -819,8 +822,6 @@ ObFrameContext frame_context_from_string(const gchar *name)
         return OB_FRAME_CONTEXT_CLIENT;
     else if (!g_ascii_strcasecmp("Titlebar", name))
         return OB_FRAME_CONTEXT_TITLEBAR;
-    else if (!g_ascii_strcasecmp("Handle", name))
-        return OB_FRAME_CONTEXT_HANDLE;
     else if (!g_ascii_strcasecmp("Frame", name))
         return OB_FRAME_CONTEXT_FRAME;
     else if (!g_ascii_strcasecmp("TLCorner", name))
@@ -831,6 +832,10 @@ ObFrameContext frame_context_from_string(const gchar *name)
         return OB_FRAME_CONTEXT_BLCORNER;
     else if (!g_ascii_strcasecmp("BRCorner", name))
         return OB_FRAME_CONTEXT_BRCORNER;
+    else if (!g_ascii_strcasecmp("Top", name))
+        return OB_FRAME_CONTEXT_TOP;
+    else if (!g_ascii_strcasecmp("Bottom", name))
+        return OB_FRAME_CONTEXT_BOTTOM;
     else if (!g_ascii_strcasecmp("Maximize", name))
         return OB_FRAME_CONTEXT_MAXIMIZE;
     else if (!g_ascii_strcasecmp("AllDesktops", name))
@@ -900,9 +905,10 @@ ObFrameContext frame_context(ObClient *client, Window win, gint x, gint y)
 
     if (win == self->window)    return OB_FRAME_CONTEXT_FRAME;
     if (win == self->label)     return OB_FRAME_CONTEXT_TITLEBAR;
-    if (win == self->handle)    return OB_FRAME_CONTEXT_HANDLE;
+    if (win == self->handle)    return OB_FRAME_CONTEXT_BOTTOM;
     if (win == self->lgrip)     return OB_FRAME_CONTEXT_BLCORNER;
     if (win == self->rgrip)     return OB_FRAME_CONTEXT_BRCORNER;
+    if (win == self->topresize) return OB_FRAME_CONTEXT_TOP;
     if (win == self->tltresize) return OB_FRAME_CONTEXT_TLCORNER;
     if (win == self->tllresize) return OB_FRAME_CONTEXT_TLCORNER;
     if (win == self->trtresize) return OB_FRAME_CONTEXT_TRCORNER;
This page took 0.022153 seconds and 4 git commands to generate.