merge r6339-6343 from trunk.
authorDana Jansens <danakj@orodu.net>
Fri, 11 May 2007 22:51:42 +0000 (22:51 +0000)
committerDana Jansens <danakj@orodu.net>
Fri, 11 May 2007 22:51:42 +0000 (22:51 +0000)
explicitly set the window frame borders in Natura because its globbing rules
end up setting them and maybe it didn't mean to since they didn't exist then.

data/themerc.xsd
openbox/client.c
openbox/dock.c
openbox/frame.c
openbox/framerender.c
openbox/menuframe.c
openbox/popup.c
render/theme.c
render/theme.h
themes/Natura/openbox-3/themerc

index 5f2a53ae10f4da3602f9b950199082a68d26ed5e..5401d3cc273a1c029e06b55468267c971b3414d3 100755 (executable)
    </xs:all>
   </xs:complexType>
 
-  <xs:complexType name="border">
-    <xs:all>
-      <xs:element name="primary" type="obt:color" minOccurs="0"/>
-      <xs:element name="width" type="xs:integer" minOccurs="0"/>
-    </xs:all>
-  </xs:complexType>
-
   <xs:complexType name="allmenus">
     <xs:all>
-      <xs:element name="border" type="obt:border" minOccurs="0"/>
+      <xs:element name="border" type="obt:color" minOccurs="0"/>
       <xs:element name="overlap" type="xs:integer" minOccurs="0"/>
       <xs:element name="justify" type="obt:justify" minOccurs="0"/>
       <xs:element name="title" type="obt:textarea" minOccurs="0"/>
 
   <xs:complexType name="window">
     <xs:all>
+      <xs:element name="border" type="obt:border" minOccurs="0"/>
       <xs:element name="clientpadding" type="obt:color" minOccurs="0"/>
       <xs:element name="titlebar" type="obt:area" minOccurs="0"/>
       <xs:element name="label" type="obt:textarea" minOccurs="0"/>
 
   <xs:complexType name="allwindows">
     <xs:all>
-      <xs:element name="clientpadding" type="obt:point" minOccurs="0"/>
       <xs:element name="justify" type="obt:justify" minOccurs="0"/>
-      <xs:element name="border" type="obt:border" minOccurs="0"/>
       <xs:element name="inactive" type="obt:window" minOccurs="0"/>
       <xs:element name="active" type="obt:window" minOccurs="0"/>
     </xs:all>
     </xs:all>
   </xs:complexType>
 
+  <xs:complexType name="windowDimensions">
+    <xs:all>
+      <xs:element name="borderwidth" type="xs:integer" minOccurs="0"/>
+      <xs:element name="clientpadding" type="obt:point" minOccurs="0"/>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="menuDimensions">
+    <xs:all>
+      <xs:element name="borderwidth" type="xs:integer" minOccurs="0"/>
+    </xs:all>
+  </xs:complexType>
+
   <xs:complexType name="themeDimensions">
     <xs:all>
       <xs:element name="padding" type="obt:point" minOccurs="0"/>
       <xs:element name="handle" type="xs:integer" minOccurs="0"/>
+      <xs:element name="window" type="obt:windowDimensions" minOccurs="0"/>
+      <xs:element name="menu" type="obt:menuDimensions" minOccurs="0"/>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="about">
+    <xs:all>
+      <xs:element name="author" type="xs:string" minOccurs="0"/>
+      <xs:element name="email" type="xs:string" minOccurs="0"/>
+      <xs:element name="webpage" type="xs:string" minOccurs="0"/>
+      <xs:element name="comment" type="xs:string" minOccurs="0"/>
     </xs:all>
   </xs:complexType>
 
   <xs:complexType name="theme">
     <xs:all>
+      <xs:element name="about" type="obt:about" minOccurs="0"/>
       <xs:element name="dimensions" type="obt:themeDimensions" minOccurs="0"/>
       <xs:element name="osd" type="obt:allosd" minOccurs="0"/>
       <xs:element name="menu" type="obt:allmenus" minOccurs="0"/>
index 2d68d32b7a33b9e038fb407ca4c8079b3648d7d3..ffac20d8f496d3181d7fec855748074922621eab 100644 (file)
@@ -1645,7 +1645,7 @@ void client_setup_decor_and_functions(ObClient *self)
     if (!(self->functions & OB_CLIENT_FUNC_ICONIFY))
         self->decorations &= ~OB_FRAME_DECOR_ICONIFY;
     if (!(self->functions & OB_CLIENT_FUNC_RESIZE))
-        self->decorations &= ~OB_FRAME_DECOR_GRIPS;
+        self->decorations &= ~(OB_FRAME_DECOR_GRIPS | OB_FRAME_DECOR_HANDLE);
 
     /* can't maximize without moving/resizing */
     if (!((self->functions & OB_CLIENT_FUNC_MAXIMIZE) &&
index 5e61f00fb198b48d903a7a149d2fc7294213f844..0cc42285a3e7a8c2de406956d9000cf976712ef8 100644 (file)
@@ -57,7 +57,8 @@ void dock_startup(gboolean reconfig)
         GList *it;
 
         XSetWindowBorder(ob_display, dock->frame,
-                         RrColorPixel(ob_rr_theme->frame_b_color));
+                         RrColorPixel(ob_rr_theme->
+                                      frame_focused_border_color));
         XSetWindowBorderWidth(ob_display, dock->frame, ob_rr_theme->fbwidth);
 
         RrAppearanceFree(dock->a_frame);
@@ -91,7 +92,7 @@ void dock_startup(gboolean reconfig)
                                 &attrib);
     dock->a_frame = RrAppearanceCopy(ob_rr_theme->a_focused_title);
     XSetWindowBorder(ob_display, dock->frame,
-                     RrColorPixel(ob_rr_theme->frame_b_color));
+                     RrColorPixel(ob_rr_theme->frame_focused_border_color));
     XSetWindowBorderWidth(ob_display, dock->frame, ob_rr_theme->fbwidth);
 
     g_hash_table_insert(window_map, &dock->frame, dock);
index 68a6434279a25f61fdbc6e4b98709a61b8d8989c..6248db7c0639e157fd923fb05618f2bc768a885b 100644 (file)
@@ -184,19 +184,6 @@ ObFrame *frame_new(ObClient *client)
 static void set_theme_statics(ObFrame *self)
 {
     /* set colors/appearance/sizes for stuff that doesn't change */
-    XSetWindowBorder(ob_display, self->window,
-                     RrColorPixel(ob_rr_theme->frame_b_color));
-    XSetWindowBorder(ob_display, self->inner,
-                     RrColorPixel(ob_rr_theme->frame_b_color));
-    XSetWindowBorder(ob_display, self->title,
-                     RrColorPixel(ob_rr_theme->frame_b_color));
-    XSetWindowBorder(ob_display, self->handle,
-                     RrColorPixel(ob_rr_theme->frame_b_color));
-    XSetWindowBorder(ob_display, self->rgrip,
-                     RrColorPixel(ob_rr_theme->frame_b_color));
-    XSetWindowBorder(ob_display, self->lgrip,
-                     RrColorPixel(ob_rr_theme->frame_b_color));
-
     XResizeWindow(ob_display, self->max,
                   ob_rr_theme->button_size, ob_rr_theme->button_size);
     XResizeWindow(ob_display, self->iconify,
index 214743807d7aae1a023a8308cb50e9e51ea02595..97d5ef53ea4e55c7035fc9cafcf31e28c0c98ec3 100644 (file)
@@ -42,6 +42,16 @@ void framerender_frame(ObFrame *self)
               RrColorPixel(ob_rr_theme->cb_unfocused_color));
         XSetWindowBackground(ob_display, self->inner, px);
         XClearWindow(ob_display, self->inner);
+
+        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);
     }
 
     if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
index 87b8f328c32d7d60de5efcfce2eafcbf5d05a0af..fad4161432d967007beb115cb4d8b9f350cf6072 100644 (file)
@@ -89,7 +89,7 @@ ObMenuFrame* menu_frame_new(ObMenu *menu, guint show_from, ObClient *client)
 
     XSetWindowBorderWidth(ob_display, self->window, ob_rr_theme->mbwidth);
     XSetWindowBorder(ob_display, self->window,
-                     RrColorPixel(ob_rr_theme->menu_b_color));
+                     RrColorPixel(ob_rr_theme->menu_border_color));
 
     self->a_title = RrAppearanceCopy(ob_rr_theme->a_menu_title);
     self->a_items = RrAppearanceCopy(ob_rr_theme->a_menu);
@@ -689,7 +689,7 @@ void menu_frame_render(ObMenuFrame *self)
         XMoveWindow(ob_display, e->window, e->area.x-e->border, e->area.y-e->border);
         XSetWindowBorderWidth(ob_display, e->window, e->border);
         XSetWindowBorder(ob_display, e->window,
-                         RrColorPixel(ob_rr_theme->menu_b_color));
+                         RrColorPixel(ob_rr_theme->menu_border_color));
 
 
         text_a = (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
index e3d52e496a5be3b12c074ee9c17068d04aeed1f3..156ce8605b9751ee6205aff9bc7bcc892586291e 100644 (file)
@@ -52,7 +52,8 @@ ObPopup *popup_new()
                                InputOutput, RrVisual(ob_rr_inst), 0, NULL);
 
     XSetWindowBorderWidth(ob_display, self->bg, ob_rr_theme->fbwidth);
-    XSetWindowBorder(ob_display, self->bg, ob_rr_theme->frame_b_color->pixel);
+    XSetWindowBorder(ob_display, self->bg,
+                     RrColorPixel(ob_rr_theme->frame_focused_border_color));
 
     XMapWindow(ob_display, self->text);
 
@@ -487,7 +488,8 @@ void pager_popup_delay_show(ObPagerPopup *self, gulong usec,
         for (i = self->desks; i < screen_num_desktops; ++i) {
             XSetWindowAttributes attr;
 
-            attr.border_pixel = RrColorPixel(ob_rr_theme->frame_b_color);
+            attr.border_pixel = 
+                RrColorPixel(ob_rr_theme->frame_focused_border_color);
             self->wins[i] = XCreateWindow(ob_display, self->popup->bg,
                                           0, 0, 1, 1, ob_rr_theme->fbwidth,
                                           RrDepth(ob_rr_inst), InputOutput,
index f0cd120a95ea6cd3487041ef2aa6d57ff233d3e9..87d65f86f8fd600c498f2d5fffb1b3137cfde0b1 100644 (file)
@@ -173,6 +173,10 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
     if (!read_int(db, "border.width", &theme->fbwidth) ||
         theme->fbwidth < 0 || theme->fbwidth > 100)
         theme->fbwidth = 1;
+    /* menu border width inherits from the frame border width */
+    if (!read_int(db, "menu.border.width", &theme->mbwidth) ||
+        theme->mbwidth < 0 || theme->mbwidth > 100)
+        theme->mbwidth = theme->fbwidth;
     theme->mbwidth = theme->fbwidth;
     if (!read_int(db, "window.client.padding.width", &theme->cbwidthx) ||
         theme->cbwidthx < 0 || theme->cbwidthx > 100)
@@ -181,12 +185,25 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
 
     /* load colors */
     if (!read_color(db, inst,
-                    "border.color", &theme->frame_b_color))
-        theme->frame_b_color = RrColorNew(inst, 0, 0, 0);
-    theme->menu_b_color = RrColorNew(inst,
-                                     theme->frame_b_color->r,
-                                     theme->frame_b_color->g,
-                                     theme->frame_b_color->b);
+                    "window.active.border.color",
+                    &theme->frame_focused_border_color) &&
+        !read_color(db, inst,
+                    "border.color",
+                    &theme->frame_focused_border_color))
+        theme->frame_focused_border_color = RrColorNew(inst, 0, 0, 0);
+    /* unfocused border color inherits from frame focused border color */
+    if (!read_color(db, inst,
+                    "window.inactive.border.color",
+                    &theme->frame_unfocused_border_color))
+        theme->frame_unfocused_border_color = RrColorNew(inst, 0, 0, 0);
+    /* menu border color inherits from frame focused border color */
+    if (!read_color(db, inst,
+                    "menu.border.color",
+                    &theme->menu_border_color))
+        theme->menu_border_color = RrColorNew(inst,
+                                     theme->frame_focused_border_color->r,
+                                     theme->frame_focused_border_color->g,
+                                     theme->frame_focused_border_color->b);
     if (!read_color(db, inst,
                     "window.active.client.color",
                     &theme->cb_focused_color))
@@ -1233,8 +1250,9 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
 void RrThemeFree(RrTheme *theme)
 {
     if (theme) {
-        RrColorFree(theme->menu_b_color);
-        RrColorFree(theme->frame_b_color);
+        RrColorFree(theme->menu_border_color);
+        RrColorFree(theme->frame_focused_border_color);
+        RrColorFree(theme->frame_unfocused_border_color);
         RrColorFree(theme->cb_unfocused_color);
         RrColorFree(theme->cb_focused_color);
         RrColorFree(theme->title_focused_color);
index 85e5aa73d7816f6421d877e04e0c4f4b80a0c5ad..4e87fb12ed8401d58ec1980aeda1eafa2bf4e6c6 100644 (file)
@@ -57,8 +57,9 @@ struct _RrTheme {
     gint menu_title_height;
 
     /* style settings - colors */
-    RrColor *menu_b_color;
-    RrColor *frame_b_color;
+    RrColor *menu_border_color;
+    RrColor *frame_focused_border_color;
+    RrColor *frame_unfocused_border_color;
     RrColor *cb_focused_color;
     RrColor *cb_unfocused_color;
     RrColor *title_focused_color;
index 99add829854f83c9f21c856dbc93bf460887a663..f09a7982c7af7bd2eb040f5fb7a539b5a4d5cd26 100644 (file)
@@ -7,7 +7,9 @@ window.client.padding.width: 0
 border.Width: 1
 padding.width: 2
 
-border.color: #000000
+window.active.border.color: #000000
+window.inactive.border.color: #000000
+menu.border.color: #000000
 menu.overlap: 0
 window.frameColor: #eeeeee
 window.*.client.color: #eeeeee