Beispiel #1
0
/** Create a new window menu. */
Menu *CreateWindowMenu(void)
{

   Menu *menu;

   menu = Allocate(sizeof(Menu));
   menu->itemHeight = 0;
   menu->items = NULL;
   menu->label = NULL;

   /* Note that items are added in reverse order of display. */

   if(!(client->state.status & STAT_WMDIALOG)) {
      AddWindowMenuItem(menu, _("Close"), MA_CLOSE, 0);
      AddWindowMenuItem(menu, _("Kill"), MA_KILL, 0);
      AddWindowMenuItem(menu, NULL, MA_NONE, 0);
   }

   if(!(client->state.status & (STAT_FULLSCREEN | STAT_MINIMIZED)
        || client->state.maxFlags)) {
      if(client->state.status & (STAT_MAPPED | STAT_SHADED)) {
         if(client->state.border & BORDER_RESIZE) {
            AddWindowMenuItem(menu, _("Resize"), MA_RESIZE, 0);
         }
         if(client->state.border & BORDER_MOVE) {
            AddWindowMenuItem(menu, _("Move"), MA_MOVE, 0);
         }
      }
   }

   if(client->state.status & STAT_MINIMIZED) {
      AddWindowMenuItem(menu, _("Restore"), MA_RESTORE, 0);
   } else if(client->state.border & BORDER_MIN) {
      AddWindowMenuItem(menu, _("Minimize"), MA_MINIMIZE, 0);
   }

   if(!(client->state.status & STAT_FULLSCREEN)) {
      if(client->state.status & STAT_SHADED) {
         AddWindowMenuItem(menu, _("Unshade"), MA_SHADE, 0);
      } else if(client->state.border & BORDER_SHADE) {
         AddWindowMenuItem(menu, _("Shade"), MA_SHADE, 0);
      }
      if((client->state.border & BORDER_MAX) &&
         (client->state.status & (STAT_MAPPED | STAT_SHADED))) {
         if(!(client->state.maxFlags & MAX_VERT)) {
            AddWindowMenuItem(menu, _("Maximize-y"), MA_MAXIMIZE_V, 0);
         }
         if(!(client->state.maxFlags & MAX_HORIZ)) {
            AddWindowMenuItem(menu, _("Maximize-x"), MA_MAXIMIZE_H, 0);
         }
         if(client->state.maxFlags) {
            AddWindowMenuItem(menu, _("Restore"), MA_MAXIMIZE, 0);
         } else {
            AddWindowMenuItem(menu, _("Maximize"), MA_MAXIMIZE, 0);
         }
      }
   }

   if(!(client->state.status & STAT_WMDIALOG)) {

      if(settings.desktopCount > 1) {
         if(client->state.status & STAT_STICKY) {
            AddWindowMenuItem(menu, _("Unstick"), MA_STICK, 0);
         } else {
            AddWindowMenuItem(menu, _("Stick"), MA_STICK, 0);
         }
      }

      CreateWindowLayerMenu(menu);

      if(settings.desktopCount > 1) {
         if(!(client->state.status & STAT_STICKY)) {
            CreateWindowSendToMenu(menu);
         }
      }

   }

   return menu;
}
Beispiel #2
0
/** Create a new window menu. */
Menu *CreateWindowMenu(ClientNode *np)
{

   Menu *menu;

   menu = CreateMenu();

   /* Note that items are added in reverse order of display. */

   if(!(np->state.status & STAT_WMDIALOG)) {
      AddWindowMenuItem(menu, _("Close"), MA_CLOSE, np, 0);
      AddWindowMenuItem(menu, _("Kill"), MA_KILL, np, 0);
      AddWindowMenuItem(menu, NULL, MA_NONE, np, 0);
   }

   if(!(np->state.status & (STAT_FULLSCREEN | STAT_MINIMIZED)
        || np->state.maxFlags)) {
      if(np->state.status & (STAT_MAPPED | STAT_SHADED)) {
         if(np->state.border & BORDER_RESIZE) {
            AddWindowMenuItem(menu, _("Resize"), MA_RESIZE, np, 0);
         }
         if(np->state.border & BORDER_MOVE) {
            AddWindowMenuItem(menu, _("Move"), MA_MOVE, np, 0);
         }
      }
   }

   if((np->state.border & BORDER_MIN) && !(np->state.status & STAT_MINIMIZED)) {
      AddWindowMenuItem(menu, _("Minimize"), MA_MINIMIZE, np, 0);
   }

   if(!(np->state.status & STAT_FULLSCREEN)) {
      if(!(np->state.status & STAT_MINIMIZED)) {
         if(np->state.status & STAT_SHADED) {
            AddWindowMenuItem(menu, _("Unshade"), MA_SHADE, np, 0);
         } else if(np->state.border & BORDER_SHADE) {
            AddWindowMenuItem(menu, _("Shade"), MA_SHADE, np, 0);
         }
      }
      if(np->state.border & BORDER_MAX) {
         if(np->state.status & STAT_MINIMIZED
            || !(np->state.maxFlags & MAX_VERT)
            || np->state.maxFlags & MAX_HORIZ) {
            AddWindowMenuItem(menu, _("Maximize-y"), MA_MAXIMIZE_V, np, 0);
         }
         if(np->state.status & STAT_MINIMIZED
            || !(np->state.maxFlags & MAX_HORIZ)
            || np->state.maxFlags & MAX_VERT) {
            AddWindowMenuItem(menu, _("Maximize-x"), MA_MAXIMIZE_H, np, 0);
         }
         if(np->state.status & STAT_MINIMIZED
            || !(np->state.maxFlags & (MAX_VERT | MAX_HORIZ))) {
            AddWindowMenuItem(menu, _("Maximize"), MA_MAXIMIZE, np, 0);
         }
         if(!(np->state.status & STAT_MINIMIZED)) {
            if((np->state.maxFlags & MAX_HORIZ)
               && (np->state.maxFlags & MAX_VERT)) {
               AddWindowMenuItem(menu, _("Restore"), MA_MAXIMIZE, np, 0);
            } else if(np->state.maxFlags & MAX_VERT) {
               AddWindowMenuItem(menu, _("Restore"), MA_MAXIMIZE_V, np, 0);
            } else if(np->state.maxFlags & MAX_HORIZ) {
               AddWindowMenuItem(menu, _("Restore"), MA_MAXIMIZE_H, np, 0);
            }
         }
      }
   }

   if(np->state.status & STAT_MINIMIZED) {
      AddWindowMenuItem(menu, _("Restore"), MA_RESTORE, np, 0);
   }

   if(!(np->state.status & STAT_WMDIALOG)) {
      if(settings.desktopCount > 1) {
         if(np->state.status & STAT_STICKY) {
            AddWindowMenuItem(menu, _("Unstick"), MA_STICK, np, 0);
         } else {
            AddWindowMenuItem(menu, _("Stick"), MA_STICK, np, 0);
         }
      }

      CreateWindowLayerMenu(menu, np);

      if(settings.desktopCount > 1) {
         if(!(np->state.status & STAT_STICKY)) {
            CreateWindowSendToMenu(menu, np);
         }
      }

   }

   return menu;
}