aboutsummaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Screen.cc')
-rw-r--r--src/Screen.cc78
1 files changed, 37 insertions, 41 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index 9ff9c8a..f968ac7 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -22,7 +22,7 @@
22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23// DEALINGS IN THE SOFTWARE. 23// DEALINGS IN THE SOFTWARE.
24 24
25// $Id: Screen.cc,v 1.61 2002/08/11 22:28:18 fluxgen Exp $ 25// $Id: Screen.cc,v 1.62 2002/08/14 22:21:06 fluxgen Exp $
26 26
27//use GNU extensions 27//use GNU extensions
28#ifndef _GNU_SOURCE 28#ifndef _GNU_SOURCE
@@ -682,7 +682,7 @@ void BScreen::updateWorkspaceNamesAtom() {
682 682
683 if (XStringListToTextProperty(names, number_of_desks, &text)) { 683 if (XStringListToTextProperty(names, number_of_desks, &text)) {
684 XSetTextProperty(getBaseDisplay()->getXDisplay(), getRootWindow(), 684 XSetTextProperty(getBaseDisplay()->getXDisplay(), getRootWindow(),
685 &text, getBaseDisplay()->getGnomeWorkspaceNamesAtom()); 685 &text, FbAtoms::instance()->getGnomeWorkspaceNamesAtom());
686 XFree(text.value); 686 XFree(text.value);
687 } 687 }
688 688
@@ -900,7 +900,7 @@ void BScreen::updateNetizenCurrentWorkspace() {
900 //update _WIN_WORKSPACE 900 //update _WIN_WORKSPACE
901 int gnome_workspace = getCurrentWorkspaceID(); 901 int gnome_workspace = getCurrentWorkspaceID();
902 XChangeProperty(getBaseDisplay()->getXDisplay(), getRootWindow(), 902 XChangeProperty(getBaseDisplay()->getXDisplay(), getRootWindow(),
903 getBaseDisplay()->getGnomeWorkspaceAtom(), XA_CARDINAL, 32, PropModeReplace, 903 FbAtoms::instance()->getGnomeWorkspaceAtom(), XA_CARDINAL, 32, PropModeReplace,
904 (unsigned char *)&gnome_workspace, 1); 904 (unsigned char *)&gnome_workspace, 1);
905 updateGnomeClientList(); 905 updateGnomeClientList();
906 #endif 906 #endif
@@ -933,7 +933,7 @@ void BScreen::updateNetizenWorkspaceCount() {
933 { 933 {
934 int numworkspaces = getCount(); 934 int numworkspaces = getCount();
935 XChangeProperty(getBaseDisplay()->getXDisplay(), getRootWindow(), 935 XChangeProperty(getBaseDisplay()->getXDisplay(), getRootWindow(),
936 getBaseDisplay()->getGnomeWorkspaceCountAtom(), XA_CARDINAL, 32, PropModeReplace, 936 FbAtoms::instance()->getGnomeWorkspaceCountAtom(), XA_CARDINAL, 32, PropModeReplace,
937 (unsigned char *)&numworkspaces, 1); 937 (unsigned char *)&numworkspaces, 1);
938 } 938 }
939 #endif 939 #endif
@@ -1348,12 +1348,11 @@ bool BScreen::parseMenuFile(ifstream &file, Rootmenu *menu, int &row) {
1348 "no menu label and/or filename defined\n")); 1348 "no menu label and/or filename defined\n"));
1349 cerr<<"Row: "<<row<<endl; 1349 cerr<<"Row: "<<row<<endl;
1350 } else { 1350 } else {
1351 char *style;
1352
1353 // perform shell style ~ home directory expansion 1351 // perform shell style ~ home directory expansion
1354 style = StringUtil::expandFilename(str_cmd.c_str()); 1352 // and insert style
1355 menu->insert(str_label.c_str(), BScreen::SETSTYLE, style); 1353 menu->insert(str_label.c_str(), BScreen::SETSTYLE,
1356 delete style; 1354 StringUtil::expandFilename(str_cmd).c_str());
1355
1357 } 1356 }
1358 } // end of style 1357 } // end of style
1359 1358
@@ -1379,13 +1378,11 @@ bool BScreen::parseMenuFile(ifstream &file, Rootmenu *menu, int &row) {
1379 "no filename defined\n")); 1378 "no filename defined\n"));
1380 cerr<<"Row: "<<row<<endl; 1379 cerr<<"Row: "<<row<<endl;
1381 } else { // start of else 'x' 1380 } else { // start of else 'x'
1382 char *newfile;
1383
1384 // perform shell style ~ home directory expansion 1381 // perform shell style ~ home directory expansion
1385 newfile = StringUtil::expandFilename(str_label.c_str()); 1382 string newfile(StringUtil::expandFilename(str_label));
1386 1383
1387 if (newfile) { 1384 if (newfile.size() != 0) {
1388 FILE *submenufile = fopen(newfile, "r"); 1385 FILE *submenufile = fopen(newfile.c_str(), "r");
1389 1386
1390 if (submenufile) { 1387 if (submenufile) {
1391 struct stat buf; 1388 struct stat buf;
@@ -1396,19 +1393,18 @@ bool BScreen::parseMenuFile(ifstream &file, Rootmenu *menu, int &row) {
1396 getMessage( 1393 getMessage(
1397 FBNLS::ScreenSet, FBNLS::ScreenINCLUDEErrorReg, 1394 FBNLS::ScreenSet, FBNLS::ScreenINCLUDEErrorReg,
1398 "BScreen::parseMenuFile: [include] error: " 1395 "BScreen::parseMenuFile: [include] error: "
1399 "'%s' is not a regular file\n"), newfile); 1396 "'%s' is not a regular file\n"), newfile.c_str());
1400 cerr<<"Row: "<<row<<endl; 1397 cerr<<"Row: "<<row<<endl;
1401 } 1398 }
1402 1399
1403 if (! feof(submenufile)) { 1400 if (! feof(submenufile)) {
1404 fclose(submenufile); 1401 fclose(submenufile);
1405 ifstream subfile(newfile); 1402 ifstream subfile(newfile.c_str());
1406 if (! parseMenuFile(subfile, menu, row)) 1403 if (! parseMenuFile(subfile, menu, row))
1407 fluxbox->saveMenuFilename(newfile); 1404 fluxbox->saveMenuFilename(newfile.c_str());
1408 } 1405 }
1409 } else 1406 } else
1410 perror(newfile); 1407 perror(newfile.c_str());
1411 delete newfile;
1412 } 1408 }
1413 } // end of else 'x' 1409 } // end of else 'x'
1414 } // end of include 1410 } // end of include
@@ -1497,14 +1493,14 @@ bool BScreen::parseMenuFile(ifstream &file, Rootmenu *menu, int &row) {
1497} 1493}
1498 1494
1499void BScreen::createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, const char *directory) { 1495void BScreen::createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, const char *directory) {
1500 I18n *i18n = I18n::instance(); 1496
1501
1502 // perform shell style ~ home directory expansion 1497 // perform shell style ~ home directory expansion
1503 auto_ptr<char> stylesdir(StringUtil::expandFilename(directory)); 1498 string stylesdir(StringUtil::expandFilename(directory ? directory : ""));
1504 1499
1500 I18n *i18n = I18n::instance();
1505 struct stat statbuf; 1501 struct stat statbuf;
1506 1502
1507 if (! stat(stylesdir.get(), &statbuf)) { // stat 1503 if (! stat(stylesdir.c_str(), &statbuf)) { // stat
1508 if (S_ISDIR(statbuf.st_mode)) { // dir 1504 if (S_ISDIR(statbuf.st_mode)) { // dir
1509 Rootmenu *stylesmenu; 1505 Rootmenu *stylesmenu;
1510 if (newmenu) 1506 if (newmenu)
@@ -1512,7 +1508,7 @@ void BScreen::createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, c
1512 else 1508 else
1513 stylesmenu = menu; 1509 stylesmenu = menu;
1514 1510
1515 DIR *d = opendir(stylesdir.get()); 1511 DIR *d = opendir(stylesdir.c_str());
1516 int entries = 0; 1512 int entries = 0;
1517 struct dirent *p; 1513 struct dirent *p;
1518 1514
@@ -1528,11 +1524,11 @@ void BScreen::createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, c
1528 1524
1529 qsort(ls, entries, sizeof(char *), dcmp); 1525 qsort(ls, entries, sizeof(char *), dcmp);
1530 1526
1531 int n, slen = strlen(stylesdir.get()); 1527 int n, slen = strlen(stylesdir.c_str());
1532 for (n = 0; n < entries; n++) { // for 1528 for (n = 0; n < entries; n++) { // for
1533 int nlen = strlen(ls[n]); 1529 int nlen = strlen(ls[n]);
1534 char style[MAXPATHLEN + 1]; 1530 char style[MAXPATHLEN + 1];
1535 strncpy(style, stylesdir.get(), slen); 1531 strncpy(style, stylesdir.c_str(), slen);
1536 *(style + slen) = '/'; 1532 *(style + slen) = '/';
1537 strncpy(style + slen + 1, ls[n], nlen + 1); 1533 strncpy(style + slen + 1, ls[n], nlen + 1);
1538 if ((! stat(style, &statbuf)) && S_ISREG(statbuf.st_mode)) 1534 if ((! stat(style, &statbuf)) && S_ISREG(statbuf.st_mode))
@@ -1549,7 +1545,7 @@ void BScreen::createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, c
1549 rootmenuList.push_back(stylesmenu); 1545 rootmenuList.push_back(stylesmenu);
1550 } 1546 }
1551 1547
1552 fluxbox->saveMenuFilename(stylesdir.get()); 1548 fluxbox->saveMenuFilename(stylesdir.c_str());
1553 } else { // dir 1549 } else { // dir
1554 fprintf(stderr, 1550 fprintf(stderr,
1555 i18n-> 1551 i18n->
@@ -1557,7 +1553,7 @@ void BScreen::createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, c
1557 FBNLS::ScreenSet, FBNLS::ScreenSTYLESDIRErrorNotDir, 1553 FBNLS::ScreenSet, FBNLS::ScreenSTYLESDIRErrorNotDir,
1558 "BScreen::parseMenuFile:" 1554 "BScreen::parseMenuFile:"
1559 " [stylesdir/stylesmenu] error, %s is not a" 1555 " [stylesdir/stylesmenu] error, %s is not a"
1560 " directory\n"), stylesdir.get()); 1556 " directory\n"), stylesdir.c_str());
1561 } // end of 'dir' 1557 } // end of 'dir'
1562 } else { // stat 1558 } else { // stat
1563 fprintf(stderr, 1559 fprintf(stderr,
@@ -1565,7 +1561,7 @@ void BScreen::createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, c
1565 getMessage( 1561 getMessage(
1566 FBNLS::ScreenSet, FBNLS::ScreenSTYLESDIRErrorNoExist, 1562 FBNLS::ScreenSet, FBNLS::ScreenSTYLESDIRErrorNoExist,
1567 "BScreen::parseMenuFile: [stylesdir/stylesmenu]" 1563 "BScreen::parseMenuFile: [stylesdir/stylesmenu]"
1568 " error, %s does not exist\n"), stylesdir.get()); 1564 " error, %s does not exist\n"), stylesdir.c_str());
1569 } // end of 'stat' 1565 } // end of 'stat'
1570 1566
1571} 1567}
@@ -1749,29 +1745,29 @@ void BScreen::initGnomeAtoms() {
1749 /* create the GNOME window */ 1745 /* create the GNOME window */
1750 gnome_win = XCreateSimpleWindow(getBaseDisplay()->getXDisplay(), 1746 gnome_win = XCreateSimpleWindow(getBaseDisplay()->getXDisplay(),
1751 getRootWindow(), 0, 0, 5, 5, 0, 0, 0); 1747 getRootWindow(), 0, 0, 5, 5, 0, 0, 0);
1752 1748 FbAtoms *fba = FbAtoms::instance();
1753 /* supported WM check */ 1749 /* supported WM check */
1754 XChangeProperty(getBaseDisplay()->getXDisplay(), 1750 XChangeProperty(getBaseDisplay()->getXDisplay(),
1755 getRootWindow(), getBaseDisplay()->getGnomeSupportingWMCheckAtom(), 1751 getRootWindow(), fba->getGnomeSupportingWMCheckAtom(),
1756 XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &gnome_win, 1); 1752 XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &gnome_win, 1);
1757 1753
1758 XChangeProperty(getBaseDisplay()->getXDisplay(), gnome_win, 1754 XChangeProperty(getBaseDisplay()->getXDisplay(), gnome_win,
1759 getBaseDisplay()->getGnomeSupportingWMCheckAtom(), 1755 fba->getGnomeSupportingWMCheckAtom(),
1760 XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &gnome_win, 1); 1756 XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &gnome_win, 1);
1761 1757
1762 Atom gnomeatomlist[] = { 1758 Atom gnomeatomlist[] = {
1763 getBaseDisplay()->getGnomeWorkspaceAtom(), 1759 fba->getGnomeWorkspaceAtom(),
1764 getBaseDisplay()->getGnomeWorkspaceCountAtom(), 1760 fba->getGnomeWorkspaceCountAtom(),
1765 getBaseDisplay()->getGnomeStateAtom(), 1761 fba->getGnomeStateAtom(),
1766 getBaseDisplay()->getGnomeWorkspaceNamesAtom(), 1762 fba->getGnomeWorkspaceNamesAtom(),
1767 getBaseDisplay()->getGnomeHintsAtom(), 1763 fba->getGnomeHintsAtom(),
1768 getBaseDisplay()->getGnomeClientListAtom(), 1764 fba->getGnomeClientListAtom(),
1769// getBaseDisplay()->getGnomeLayerAtom(), // not supported yet 1765// getBaseDisplay()->getGnomeLayerAtom(), // not supported yet
1770 }; 1766 };
1771 1767
1772 //list atoms that we support 1768 //list atoms that we support
1773 XChangeProperty(getBaseDisplay()->getXDisplay(), getRootWindow(), 1769 XChangeProperty(getBaseDisplay()->getXDisplay(), getRootWindow(),
1774 getBaseDisplay()->getGnomeProtAtom(), XA_ATOM, 32, PropModeReplace, 1770 fba->getGnomeProtAtom(), XA_ATOM, 32, PropModeReplace,
1775 (unsigned char *)gnomeatomlist, (sizeof gnomeatomlist)/sizeof gnomeatomlist[0]); 1771 (unsigned char *)gnomeatomlist, (sizeof gnomeatomlist)/sizeof gnomeatomlist[0]);
1776 1772
1777} 1773}
@@ -1804,7 +1800,7 @@ void BScreen::updateGnomeClientList() {
1804 //number of windows to show in client list 1800 //number of windows to show in client list
1805 num = win; 1801 num = win;
1806 XChangeProperty(getBaseDisplay()->getXDisplay(), 1802 XChangeProperty(getBaseDisplay()->getXDisplay(),
1807 getRootWindow(), getBaseDisplay()->getGnomeClientListAtom(), XA_CARDINAL, 32, 1803 getRootWindow(), FbAtoms::instance()->getGnomeClientListAtom(), XA_CARDINAL, 32,
1808 PropModeReplace, (unsigned char *)wl, num); 1804 PropModeReplace, (unsigned char *)wl, num);
1809 1805
1810 if (wl) 1806 if (wl)