all repos — openbox @ b26635fe994a7cd1dc28893c0e40517b61036a9f

openbox fork - make it a bit more like ryudo

add Left and Right contexts for resizing
Dana Jansens danakj@orodu.net
commit

b26635fe994a7cd1dc28893c0e40517b61036a9f

parent

2f541b6ef3fdc0fc1c7604c068b82d9e64b90354

6 files changed, 86 insertions(+), 1 deletions(-)

jump to
M data/rc.xmldata/rc.xml

@@ -290,6 +290,24 @@ <action name="Resize"><edge>top</edge></action>

</mousebind> </context> + <context name="Left"> + <mousebind button="Left" action="Press"> + <action name="Activate"/> + </mousebind> + <mousebind button="Left" action="Drag"> + <action name="Resize"><edge>left</edge></action> + </mousebind> + </context> + + <context name="Right"> + <mousebind button="Left" action="Press"> + <action name="Activate"/> + </mousebind> + <mousebind button="Left" action="Drag"> + <action name="Resize"><edge>right</edge></action> + </mousebind> + </context> + <context name="Bottom"> <mousebind button="Left" action="Press"> <action name="Activate"/>
M data/rc.xsddata/rc.xsd

@@ -342,6 +342,8 @@ <xsd:enumeration value="BLCorner"/>

<xsd:enumeration value="BRCorner"/> <xsd:enumeration value="Top"/> <xsd:enumeration value="Bottom"/> + <xsd:enumeration value="Left"/> + <xsd:enumeration value="Right"/> <xsd:enumeration value="Maximize"/> <xsd:enumeration value="AllDesktops"/> <xsd:enumeration value="Shade"/>
M doc/rc-mouse-focus.xmldoc/rc-mouse-focus.xml

@@ -296,6 +296,30 @@ <action name="Resize"><edge>top</edge></action>

</mousebind> </context> + <context name="Left"> + <mousebind button="Left" action="Press"> + <action name="Focus"/> + </mousebind> + <mousebind button="Left" action="Click"> + <action name="Raise"/> + </mousebind> + <mousebind button="Left" action="Drag"> + <action name="Resize"><edge>top</edge></action> + </mousebind> + </context> + + <context name="Right"> + <mousebind button="Left" action="Press"> + <action name="Focus"/> + </mousebind> + <mousebind button="Left" action="Click"> + <action name="Raise"/> + </mousebind> + <mousebind button="Left" action="Drag"> + <action name="Resize"><edge>top</edge></action> + </mousebind> + </context> + <context name="Handle"> <mousebind button="Left" action="Press"> <action name="Focus"/>
M openbox/frame.copenbox/frame.c

@@ -138,6 +138,11 @@ attrib.cursor = ob_cursor(OB_CURSOR_NORTHEAST);

self->trtresize = createWindow(self->title, NULL, mask, &attrib); self->trrresize = createWindow(self->title, NULL, mask, &attrib); + attrib.cursor = ob_cursor(OB_CURSOR_WEST); + self->leftresize = createWindow(self->inner, NULL, mask, &attrib); + attrib.cursor = ob_cursor(OB_CURSOR_EAST); + self->rightresize = createWindow(self->inner, NULL, mask, &attrib); + mask &= ~CWCursor; self->label = createWindow(self->title, NULL, mask, &attrib); self->max = createWindow(self->title, NULL, mask, &attrib);

@@ -357,6 +362,8 @@ XSetWindowBorderWidth(ob_display, self->title, self->rbwidth);

XSetWindowBorderWidth(ob_display, self->handle, self->rbwidth); XSetWindowBorderWidth(ob_display, self->lgrip, self->rbwidth); XSetWindowBorderWidth(ob_display, self->rgrip, self->rbwidth); + XSetWindowBorderWidth(ob_display, self->leftresize, self->bwidth); + XSetWindowBorderWidth(ob_display, self->rightresize, self->bwidth); } if (self->decorations & OB_FRAME_DECOR_TITLEBAR)

@@ -391,17 +398,35 @@ self->width - ob_rr_theme->grip_width, 0);

XMoveWindow(ob_display, self->trrresize, self->width - ob_rr_theme->paddingx - 1, 0); + XMoveResizeWindow(ob_display, self->leftresize, + -(ob_rr_theme->fbwidth * 2) - 1, + 0, + 1, + self->client->area.height + + self->cbwidth_y * 2); + XMoveResizeWindow(ob_display, self->rightresize, + self->client->area.width + + self->cbwidth_x * 2, + 0, + 1, + self->client->area.height + + self->cbwidth_y * 2); + 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); + XMapWindow(ob_display, self->leftresize); + XMapWindow(ob_display, self->rightresize); } else { XUnmapWindow(ob_display, self->topresize); XUnmapWindow(ob_display, self->tltresize); XUnmapWindow(ob_display, self->tllresize); XUnmapWindow(ob_display, self->trtresize); XUnmapWindow(ob_display, self->trrresize); + XUnmapWindow(ob_display, self->leftresize); + XUnmapWindow(ob_display, self->rightresize); } } else XUnmapWindow(ob_display, self->title);

@@ -560,6 +585,7 @@ void frame_grab_client(ObFrame *self)

{ /* reparent the client to the frame */ XReparentWindow(ob_display, self->client->window, self->plate, 0, 0); + /* When reparenting the client window, it is usually not mapped yet, since this occurs from a MapRequest. However, in the case where Openbox is

@@ -598,6 +624,8 @@ 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); g_hash_table_insert(window_map, &self->trrresize, self->client); + g_hash_table_insert(window_map, &self->leftresize, self->client); + g_hash_table_insert(window_map, &self->rightresize, self->client); } void frame_release_client(ObFrame *self)

@@ -656,6 +684,8 @@ g_hash_table_remove(window_map, &self->tltresize);

g_hash_table_remove(window_map, &self->tllresize); g_hash_table_remove(window_map, &self->trtresize); g_hash_table_remove(window_map, &self->trrresize); + g_hash_table_remove(window_map, &self->leftresize); + g_hash_table_remove(window_map, &self->rightresize); ob_main_loop_timeout_remove_data(ob_main_loop, flash_timeout, self, TRUE); }

@@ -849,6 +879,10 @@ 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("Left", name)) + return OB_FRAME_CONTEXT_LEFT; + else if (!g_ascii_strcasecmp("Right", name)) + return OB_FRAME_CONTEXT_RIGHT; else if (!g_ascii_strcasecmp("Maximize", name)) return OB_FRAME_CONTEXT_MAXIMIZE; else if (!g_ascii_strcasecmp("AllDesktops", name))

@@ -926,6 +960,8 @@ 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; if (win == self->trrresize) return OB_FRAME_CONTEXT_TRCORNER; + if (win == self->leftresize) return OB_FRAME_CONTEXT_LEFT; + if (win == self->rightresize) return OB_FRAME_CONTEXT_RIGHT; if (win == self->max) return OB_FRAME_CONTEXT_MAXIMIZE; if (win == self->iconify) return OB_FRAME_CONTEXT_ICONIFY; if (win == self->close) return OB_FRAME_CONTEXT_CLOSE;
M openbox/frame.hopenbox/frame.h

@@ -41,6 +41,8 @@ OB_FRAME_CONTEXT_TLCORNER,

OB_FRAME_CONTEXT_TRCORNER, OB_FRAME_CONTEXT_TOP, OB_FRAME_CONTEXT_BOTTOM, + OB_FRAME_CONTEXT_LEFT, + OB_FRAME_CONTEXT_RIGHT, OB_FRAME_CONTEXT_MAXIMIZE, OB_FRAME_CONTEXT_ALLDESKTOPS, OB_FRAME_CONTEXT_SHADE,

@@ -101,6 +103,8 @@ Window tltresize;

Window tllresize; Window trtresize; Window trrresize; + Window leftresize; + Window rightresize; Colormap colormap;
M openbox/framerender.copenbox/framerender.c

@@ -47,11 +47,12 @@ px = (self->focused ?

RrColorPixel(ob_rr_theme->frame_focused_border_color) : RrColorPixel(ob_rr_theme->frame_unfocused_border_color)); XSetWindowBorder(ob_display, self->window, px); - XSetWindowBorder(ob_display, self->inner, px); XSetWindowBorder(ob_display, self->title, px); XSetWindowBorder(ob_display, self->handle, px); XSetWindowBorder(ob_display, self->rgrip, px); XSetWindowBorder(ob_display, self->lgrip, px); + XSetWindowBorder(ob_display, self->leftresize, px); + XSetWindowBorder(ob_display, self->rightresize, px); } if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {