]> Dogcows Code - chaz/openbox/blobdiff - src/Screen.cc
merged with 2_1-merged-to-HEAD-2002-09-30
[chaz/openbox] / src / Screen.cc
index ea27d506dcafe6cc916745ce456425184daf9115..7e7ce5a4f5d68342e337ab958319431336d93095 100644 (file)
@@ -339,6 +339,7 @@ BScreen::~BScreen(void) {
   if (resource.tstyle.font)
     delete resource.tstyle.font;
 
+#ifdef    BITMAPBUTTONS
   if (resource.wstyle.close_button.mask != None)
     XFreePixmap(blackbox->getXDisplay(), resource.wstyle.close_button.mask);
   if (resource.wstyle.max_button.mask != None)
@@ -363,6 +364,7 @@ BScreen::~BScreen(void) {
     resource.wstyle.stick_button.mask = None;
   resource.tstyle.left_button.mask = resource.tstyle.right_button.mask = None;
   resource.mstyle.bullet_image.mask = resource.mstyle.tick_image.mask = None;
+#endif // BITMAPBUTTONS
   
   XFreeGC(blackbox->getXDisplay(), opGC);
 }
@@ -427,15 +429,15 @@ void BScreen::saveFocusLast(bool f) {
 
 void BScreen::saveAAFonts(bool f) {
   resource.aa_fonts = f;
-  reconfigure();
   config->setValue(screenstr + "antialiasFonts", resource.aa_fonts);
+  reconfigure();
 }
 
 
 void BScreen::saveShadowFonts(bool f) {
   resource.shadow_fonts = f;
-  reconfigure();
   config->setValue(screenstr + "dropShadowFonts", resource.shadow_fonts);
+  reconfigure();
 }
 
 
@@ -707,12 +709,13 @@ void BScreen::load_rc(void) {
   if (! config->getValue(screenstr + "opaqueMove", resource.opaque_move))
     resource.opaque_move = false;
 
-  if (! config->getValue(screenstr + "dropShadowFonts", resource.shadow_fonts))
-    resource.shadow_fonts = false;
-
   if (! config->getValue(screenstr + "antialiasFonts", resource.aa_fonts))
     resource.aa_fonts = true;
 
+  if (! resource.aa_fonts ||
+      ! config->getValue(screenstr + "dropShadowFonts", resource.shadow_fonts))
+    resource.shadow_fonts = false;
+
   if (! config->getValue(screenstr + "resizeZones", resource.resize_zones) ||
       (resource.resize_zones != 1 && resource.resize_zones != 2 &&
        resource.resize_zones != 4))
@@ -1062,6 +1065,7 @@ void BScreen::LoadStyle(void) {
   resource.wstyle.b_pressed =
     readDatabaseTexture("window.button.pressed", "black", style);
 
+#ifdef    BITMAPBUTTONS
   if (resource.wstyle.close_button.mask != None)
     XFreePixmap(blackbox->getXDisplay(), resource.wstyle.close_button.mask);
   if (resource.wstyle.max_button.mask != None)
@@ -1083,6 +1087,7 @@ void BScreen::LoadStyle(void) {
                    style);
   readDatabaseMask("window.button.stick.mask", resource.wstyle.stick_button,
                    style);
+#endif // BITMAPBUTTONS
 
   // we create the window.frame texture by hand because it exists only to
   // make the code cleaner and is not actually used for display
@@ -1124,10 +1129,12 @@ void BScreen::LoadStyle(void) {
     resource.wstyle.h_unfocus = resource.wstyle.f_unfocus;
 
   // load toolbar config
+#ifdef    BITMAPBUTTONS
   if (resource.tstyle.left_button.mask != None)
     XFreePixmap(blackbox->getXDisplay(), resource.tstyle.left_button.mask);
   if (resource.tstyle.right_button.mask != None)
     XFreePixmap(blackbox->getXDisplay(), resource.tstyle.right_button.mask);
+#endif // BITMAPBUTTONS
   
   resource.tstyle.toolbar =
     readDatabaseTexture("toolbar", "black", style);
@@ -1149,10 +1156,13 @@ void BScreen::LoadStyle(void) {
     readDatabaseColor("toolbar.clock.textColor", "white", style);
   resource.tstyle.b_pic =
     readDatabaseColor("toolbar.button.picColor", "black", style);
+
+#ifdef    BITMAPBUTTONS
   readDatabaseMask("toolbar.button.left.mask", resource.tstyle.left_button,
                    style);
   readDatabaseMask("toolbar.button.right.mask", resource.tstyle.right_button,
                    style);
+#endif // BITMAPBUTTONS
   
   resource.tstyle.justify = LeftJustify;
   if (style.getValue("toolbar.justify", s)) {
@@ -1171,10 +1181,12 @@ void BScreen::LoadStyle(void) {
   }
 
   // load menu config
+#ifdef   BITMAPBUTTONS
   if (resource.mstyle.bullet_image.mask != None)
     XFreePixmap(blackbox->getXDisplay(), resource.mstyle.bullet_image.mask);
   if (resource.mstyle.tick_image.mask != None)
     XFreePixmap(blackbox->getXDisplay(), resource.mstyle.tick_image.mask);
+#endif // BITMAPBUTTONS
   
   resource.mstyle.title =
     readDatabaseTexture("menu.title", "white", style);
@@ -1190,8 +1202,11 @@ void BScreen::LoadStyle(void) {
     readDatabaseColor("menu.frame.disableColor", "black", style);
   resource.mstyle.h_text =
     readDatabaseColor("menu.hilite.textColor", "black", style);
+
+#ifdef    BITMAPBUTTONS
   readDatabaseMask("menu.arrow.mask", resource.mstyle.bullet_image, style);
   readDatabaseMask("menu.selected.mask", resource.mstyle.tick_image, style);
+#endif // BITMAPBUTTONS
     
   resource.mstyle.t_justify = LeftJustify;
   if (style.getValue("menu.title.justify", s)) {
@@ -1739,6 +1754,9 @@ void BScreen::raiseWindows(Window *workspace_stack, unsigned int num) {
 #ifdef    XINERAMA
   ++bbwins;
 #endif // XINERAMA
+#ifdef    XFT
+  ++bbwins;
+#endif // XFT
 
   Window *session_stack = new
     Window[(num + workspacesList.size() + rootmenuList.size() +
@@ -1762,6 +1780,9 @@ void BScreen::raiseWindows(Window *workspace_stack, unsigned int num) {
 #ifdef    XINERAMA
   *(session_stack + i++) = configmenu->getXineramamenu()->getWindowID();
 #endif // XINERAMA
+#ifdef    XFT
+  *(session_stack + i++) = configmenu->getXftmenu()->getWindowID();
+#endif // XFT
   *(session_stack + i++) = configmenu->getWindowID();
 
   *(session_stack + i++) = slit->getMenu()->getDirectionmenu()->getWindowID();
@@ -1853,8 +1874,7 @@ void BScreen::propagateWindowName(const BlackboxWindow *bw) {
   if (bw->isIconic()) {
     iconmenu->changeItemLabel(bw->getWindowNumber(), bw->getIconTitle());
     iconmenu->update();
-  }
-  else {
+  } else {
     Clientmenu *clientmenu = getWorkspace(bw->getWorkspaceNumber())->getMenu();
     clientmenu->changeItemLabel(bw->getWindowNumber(), bw->getTitle());
     clientmenu->update();
@@ -1865,36 +1885,28 @@ void BScreen::propagateWindowName(const BlackboxWindow *bw) {
 }
 
 
-void BScreen::nextFocus(void) {
+void BScreen::nextFocus(void) const {
   BlackboxWindow *focused = blackbox->getFocusedWindow(),
     *next = focused;
 
-  if (focused) {
-    // if window is not on this screen, ignore it
-    if (focused->getScreen()->getScreenNumber() != getScreenNumber())
-      focused = (BlackboxWindow*) 0;
-  }
-
-  if (focused && current_workspace->getCount() > 1) {
-    // next is the next window to recieve focus, current is a place holder
-    BlackboxWindow *current;
+  if (focused &&
+      focused->getScreen()->getScreenNumber() == getScreenNumber() &&
+      current_workspace->getCount() > 1) {
     do {
-      current = next;
-      next = current_workspace->getNextWindowInList(current);
-    } while(! next->setInputFocus() && next != focused);
+      next = current_workspace->getNextWindowInList(next);
+    } while (next != focused && ! next->setInputFocus());
 
     if (next != focused)
       current_workspace->raiseWindow(next);
-  } else if (current_workspace->getCount() >= 1) {
+  } else if (current_workspace->getCount() > 0) {
     next = current_workspace->getTopWindowOnStack();
-
-    current_workspace->raiseWindow(next);
     next->setInputFocus();
+    current_workspace->raiseWindow(next);
   }
 }
 
 
-void BScreen::prevFocus(void) {
+void BScreen::prevFocus(void) const {
   BlackboxWindow *focused = blackbox->getFocusedWindow(),
     *next = focused;
 
@@ -1903,27 +1915,26 @@ void BScreen::prevFocus(void) {
     if (focused->getScreen()->getScreenNumber() != getScreenNumber())
       focused = (BlackboxWindow*) 0;
   }
-
-  if (focused && current_workspace->getCount() > 1) {
-    // next is the next window to recieve focus, current is a place holder
-    BlackboxWindow *current;
+  
+  if (focused &&
+      focused->getScreen()->getScreenNumber() == getScreenNumber() &&
+      current_workspace->getCount() > 1) {
+    // next is the next window to receive focus, current is a place holder
     do {
-      current = next;
-      next = current_workspace->getPrevWindowInList(current);
-    } while(! next->setInputFocus() && next != focused);
+      next = current_workspace->getPrevWindowInList(next);
+    } while (next != focused && ! next->setInputFocus());
 
     if (next != focused)
       current_workspace->raiseWindow(next);
-  } else if (current_workspace->getCount() >= 1) {
+  } else if (current_workspace->getCount() > 0) {
     next = current_workspace->getTopWindowOnStack();
-
-    current_workspace->raiseWindow(next);
     next->setInputFocus();
+    current_workspace->raiseWindow(next);
   }
 }
 
 
-void BScreen::raiseFocus(void) {
+void BScreen::raiseFocus(void) const {
   BlackboxWindow *focused = blackbox->getFocusedWindow();
   if (! focused)
     return;
@@ -2511,7 +2522,7 @@ void BScreen::updateAvailableArea(void) {
 }
 
 
-Workspace* BScreen::getWorkspace(unsigned int index) {
+Workspace* BScreen::getWorkspace(unsigned int index) const {
   assert(index < workspacesList.size());
   return workspacesList[index];
 }
@@ -2629,6 +2640,7 @@ void BScreen::toggleFocusModel(FocusModel model) {
                 std::mem_fun(&BlackboxWindow::grabButtons));
 }
 
+#ifdef    BITMAPBUTTONS
 void BScreen::readDatabaseMask(const string &rname, PixmapMask &pixmapMask,
                                const Configuration &style) {
   string s;
@@ -2655,6 +2667,7 @@ void BScreen::readDatabaseMask(const string &rname, PixmapMask &pixmapMask,
   pixmapMask.mask = None;
   pixmapMask.w = pixmapMask.h = 0;
 }
+#endif // BITMAPSUCCESS
 
 BTexture BScreen::readDatabaseTexture(const string &rname,
                                       const string &default_color,
This page took 0.025523 seconds and 4 git commands to generate.