add <dialog><focus/><desktop/> to allow disabling popups
authorDana Jansens <danakj@orodu.net>
Fri, 26 Sep 2003 08:22:49 +0000 (08:22 +0000)
committerDana Jansens <danakj@orodu.net>
Fri, 26 Sep 2003 08:22:49 +0000 (08:22 +0000)
CHANGELOG
data/rc.xml.in
data/rc.xsd
openbox/config.c
openbox/config.h
openbox/focus.c
openbox/screen.c

index 3a9b6de..c893660 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,6 +3,8 @@
        * Added the <moveButton> option for moving dock apps around inside the
        dock.
        * Made the "Desktop" action show the pager/desktop dialog.
+       * Add the <dialog> section to allow the disabling of the focus and
+       pager/desktop dialogs.
 
 3.0-beta6:
        * Added _OB_WM_STATE_UNDECORATED hint, which can be read and controlled
index e107ac0..d187b7e 100644 (file)
   <moveButton>A-Left</moveButton>
 </dock>
 
+<dialog>
+  <focus>yes</focus>
+  <desktop>yes</desktop>
+</dialog>
+
 <keyboard>
   <chainQuitKey>C-g</chainQuitKey>
 
index 1670460..239a955 100644 (file)
@@ -46,6 +46,7 @@
                 <xs:element name="desktops" type="ob:desktops"/>
                 <xs:element name="resize" type="ob:resize"/>
                 <xs:element name="dock" type="ob:dock"/>
+                <xs:element name="dialog" type="ob:dialog"/>
                 <xs:element name="keyboard" type="ob:keyboard"/>
                 <xs:element name="mouse" type="ob:mouse"/>
                 <xs:element name="menu" type="ob:menu"/>
             <xs:element name="moveButton" type="ob:button"/>
         </xs:sequence>
     </xs:complexType>
+    <xs:complexType name="dialog">
+        <xs:sequence>
+            <xs:element name="focus" type="ob:yesorno"/>
+            <xs:element name="desktop" type="ob:yesorno"/>
+        </xs:sequence>
+    </xs:complexType>
     <xs:complexType name="action">
         <xs:sequence>
             <xs:element minOccurs="0" name="menu" type="xs:string"/>
index 97accc0..d72cce8 100644 (file)
@@ -56,6 +56,9 @@ guint config_keyboard_reset_state;
 gint config_mouse_threshold;
 gint config_mouse_dclicktime;
 
+gboolean config_dialog_focus;
+gboolean config_dialog_desktop;
+
 GSList *config_menu_files;
 
 gint config_resist_win;
@@ -340,6 +343,19 @@ static void parse_dock(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, void *d)
     }
 }
 
+static void parse_dialog(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
+                         void *d)
+{
+    xmlNodePtr n;
+
+    node = node->children;
+    
+    if ((n = parse_find_node("focus", node)))
+        config_dialog_focus = parse_bool(doc, n);
+    if ((n = parse_find_node("desktop", node)))
+        config_dialog_desktop = parse_bool(doc, n);
+}
+
 static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, void *d)
 {
     for (node = node->children; node; node = node->next) {
@@ -526,6 +542,11 @@ void config_startup(ObParseInst *i)
 
     parse_register(i, "resistance", parse_resistance, NULL);
 
+    config_dialog_focus = TRUE;
+    config_dialog_desktop = TRUE;
+
+    parse_register(i, "dialog", parse_dialog, NULL);
+
     config_menu_files = NULL;
 
     parse_register(i, "menu", parse_menu, NULL);
index 0c14b37..c8c85eb 100644 (file)
@@ -93,6 +93,11 @@ extern gint config_resist_win;
 /*! Number of pixels to resist while crossing a screen's edge */
 extern gint config_resist_edge;
 
+/*! Show a dialog while cycling focus between windows */
+extern gboolean config_dialog_focus;
+/*! Show a dialogs while switching between desktops */
+extern gboolean config_dialog_desktop;
+
 /*! User-specified menu files */
 extern GSList *config_menu_files;
 
index 740ce07..eac0dce 100644 (file)
@@ -237,7 +237,7 @@ void focus_fallback(ObFocusFallbackType type)
 
 static void popup_cycle(ObClient *c, gboolean show)
 {
-    if (!show) {
+    if (!show || !config_dialog_focus) {
         icon_popup_hide(focus_cycle_popup);
     } else {
         Rect *a;
index 7f0c70c..8a9475a 100644 (file)
@@ -572,7 +572,7 @@ void screen_desktop_popup(guint d, gboolean show)
 {
     Rect *a;
 
-    if (!show) {
+    if (!show || !config_dialog_desktop) {
         pager_popup_hide(desktop_cycle_popup);
     } else {
         a = screen_physical_area_monitor(0);