Sophie

Sophie

distrib > Mageia > 5 > x86_64 > by-pkgid > 392c78d54282e429bf98943f5739fb1b > files > 7

matchbox-window-manager-1.2-21.mga5.src.rpm

From 08bffbf53ca5c070f7d22a9771b6295a006c17e9 Mon Sep 17 00:00:00 2001
From: Frederic Crozatr <fcrozat@mandriva.com>
Date: Mon, 21 Jul 2008 16:26:30 +0000
Subject: [PATCH] modal

---
 src/dialog_client.c |   25 +++++++++++++++++++++++++
 src/mbtheme.c       |   22 +++++++++++++++++-----
 src/structs.h       |    5 +++++
 3 files changed, 47 insertions(+), 5 deletions(-)

diff --git a/src/dialog_client.c b/src/dialog_client.c
index 90fd41c..a5d3190 100644
--- a/src/dialog_client.c
+++ b/src/dialog_client.c
@@ -109,6 +109,18 @@ dialog_client_get_offsets(Client *c, int *e, int *s, int *w)
       return;
     }
 
+  if (c->flags & CLIENT_IS_MODAL_FLAG
+      && theme_has_frame_type_defined(c->wm->mbtheme, FRAME_MODAL))
+    {
+      *s = theme_frame_defined_height_get(c->wm->mbtheme, 
+				       FRAME_MODAL_SOUTH);
+      *e = theme_frame_defined_width_get(c->wm->mbtheme, 
+					 FRAME_MODAL_EAST );
+      *w = theme_frame_defined_width_get(c->wm->mbtheme, 
+					 FRAME_MODAL_WEST );
+      return;
+    }
+
    *s = theme_frame_defined_height_get(c->wm->mbtheme, 
 				       FRAME_DIALOG_SOUTH);
    *e = theme_frame_defined_width_get(c->wm->mbtheme, 
@@ -239,6 +251,12 @@ dialog_client_title_height(Client *c)
 	return theme_frame_defined_height_get(c->wm->mbtheme, FRAME_MODAL);
   }
 
+  if (c->flags & CLIENT_IS_MODAL_FLAG
+      && theme_has_frame_type_defined(c->wm->mbtheme, FRAME_MODAL))
+  {
+	return theme_frame_defined_height_get(c->wm->mbtheme, FRAME_MODAL);
+  }
+
   return theme_frame_defined_height_get(c->wm->mbtheme, FRAME_DIALOG);
 }
 
@@ -888,6 +906,13 @@ dialog_client_redraw(Client *c, Bool use_cache)
       frame_ref_south = FRAME_MODAL_SOUTH;
   }
 
+  if (c->flags & CLIENT_IS_MODAL_FLAG && theme_has_frame_type_defined(c->wm->mbtheme, FRAME_MODAL)) {
+      frame_ref_top   = FRAME_MODAL;
+      frame_ref_east  = FRAME_MODAL_EAST;
+      frame_ref_west  = FRAME_MODAL_WEST;
+      frame_ref_south = FRAME_MODAL_SOUTH;
+  }
+
   /* 'message dialogs have there own decorations */
   if (c->flags & CLIENT_HAS_URGENCY_FLAG
       && theme_has_message_decor(w->mbtheme))
diff --git a/src/mbtheme.c b/src/mbtheme.c
index 63c28f8..5668870 100644
--- a/src/mbtheme.c
+++ b/src/mbtheme.c
@@ -93,6 +93,11 @@ static struct frame_lookup_t
   { "message-east",  FRAME_MSG_EAST    },
   { "message-west",  FRAME_MSG_WEST    },
   { "message-south", FRAME_MSG_SOUTH   },
+  { "modal",        FRAME_MODAL        },
+  { "modal-north",  FRAME_MODAL_NORTH },
+  { "modal-east",   FRAME_MODAL_EAST  },
+  { "modal-west",   FRAME_MODAL_WEST  },
+  { "modal-south",  FRAME_MODAL_SOUTH },
 };
 
 #define frame_lookup_cnt (sizeof(frame_lookup)/sizeof(struct frame_lookup_t))
@@ -628,21 +633,24 @@ theme_frame_paint( MBTheme *theme,
     case FRAME_DIALOG_SOUTH:
     case FRAME_DIALOG_NT_SOUTH:
     case FRAME_MSG_SOUTH:
+    case FRAME_MODAL_SOUTH:
       decor_idx = SOUTH;
       break;
     case FRAME_MAIN_EAST: 
     case FRAME_DIALOG_EAST:
     case FRAME_DIALOG_NT_EAST:
     case FRAME_MSG_EAST:
+    case FRAME_MODAL_EAST:
       decor_idx = EAST;
       break;
     case FRAME_MAIN_WEST: 
     case FRAME_DIALOG_WEST:
     case FRAME_DIALOG_NT_WEST:
     case FRAME_MSG_WEST:
+    case FRAME_MODAL_WEST:
       decor_idx = WEST;
       break;
-      /* FRAME_MAIN, FRAME_DIALOG, FRAME_MSG, FRAME_DIALOG_NORTH: */
+      /* FRAME_MAIN, FRAME_DIALOG, FRAME_MSG, FRAME_DIALOG_NORTH, FRAME_MODAL : */
     default:
       decor_idx = NORTH;
       break;
@@ -777,7 +785,8 @@ theme_frame_paint( MBTheme *theme,
   if (c->backing_masks[MSK_NORTH] != None &&
       ( frame_type == FRAME_MAIN || frame_type == FRAME_DIALOG 
 	|| frame_type == FRAME_MSG || frame_type == FRAME_DIALOG_NORTH
-	|| frame_type == FRAME_DIALOG_NT_NORTH)
+	|| frame_type == FRAME_DIALOG_NT_NORTH
+	|| frame_type == FRAME_MODAL || frame_type == FRAME_MODAL_NORTH)
       )
     mb_pixbuf_img_render_to_mask(theme->wm->pb, img, 
 				 c->backing_masks[MSK_NORTH],
@@ -786,7 +795,8 @@ theme_frame_paint( MBTheme *theme,
   if (c->backing_masks[MSK_SOUTH] != None  &&
       ( frame_type == FRAME_MAIN_SOUTH || frame_type == FRAME_DIALOG_SOUTH 
 	|| frame_type == FRAME_MSG_SOUTH 
-	|| frame_type == FRAME_DIALOG_NT_SOUTH)
+	|| frame_type == FRAME_DIALOG_NT_SOUTH
+	|| frame_type == FRAME_MODAL_SOUTH)
       )
     mb_pixbuf_img_render_to_mask(theme->wm->pb, img, 
 				 c->backing_masks[MSK_SOUTH],
@@ -794,7 +804,8 @@ theme_frame_paint( MBTheme *theme,
   
   if (c->backing_masks[MSK_EAST] != None  &&
       ( frame_type == FRAME_MAIN_EAST || frame_type == FRAME_DIALOG_EAST 
-	|| frame_type == FRAME_MSG_EAST || frame_type == FRAME_DIALOG_NT_EAST)
+	|| frame_type == FRAME_MSG_EAST || frame_type == FRAME_DIALOG_NT_EAST
+        || frame_type == FRAME_MODAL_EAST)
       )
     mb_pixbuf_img_render_to_mask(theme->wm->pb, img, 
 				 c->backing_masks[MSK_EAST],
@@ -802,7 +813,8 @@ theme_frame_paint( MBTheme *theme,
   
   if (c->backing_masks[MSK_WEST] != None  &&
       ( frame_type == FRAME_MAIN_WEST || frame_type == FRAME_DIALOG_WEST 
-	|| frame_type == FRAME_MSG_WEST || frame_type == FRAME_DIALOG_NT_WEST )
+	|| frame_type == FRAME_MSG_WEST || frame_type == FRAME_DIALOG_NT_WEST 
+	|| frame_type == FRAME_MODAL_WEST )
       )
     mb_pixbuf_img_render_to_mask(theme->wm->pb, img, 
 				 c->backing_masks[MSK_WEST],
diff --git a/src/structs.h b/src/structs.h
index 7a191bb..6159882 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -778,6 +778,11 @@ enum {
   FRAME_MSG_EAST,
   FRAME_MSG_WEST,
   FRAME_MSG_SOUTH,
+  FRAME_MODAL,
+  FRAME_MODAL_NORTH,
+  FRAME_MODAL_EAST,
+  FRAME_MODAL_WEST,
+  FRAME_MODAL_SOUTH,
   N_FRAME_TYPES
 };
 
-- 
1.6.1.3