std::string for title and icon title in FluxboxWindow

This commit is contained in:
fluxgen 2002-04-03 23:04:01 +00:00
parent 36dcc230a2
commit 70f3639c02
7 changed files with 54 additions and 87 deletions

View file

@ -19,7 +19,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: IconBar.cc,v 1.11 2002/03/23 15:14:45 fluxgen Exp $
// $Id: IconBar.cc,v 1.12 2002/04/03 23:01:49 fluxgen Exp $
#include "IconBar.hh"
#include "i18n.hh"
@ -239,8 +239,6 @@ void IconBar::draw(IconBarObj *obj, int width) {
FluxboxWindow *fluxboxwin = obj->getFluxboxWin();
Window iconwin = obj->getIconWin();
const char *title = fluxboxwin->getIconTitle();
unsigned int title_len = strlen(title);
unsigned int title_text_w;
const int multibyte = I18n::instance()->multibyte();
@ -248,15 +246,15 @@ void IconBar::draw(IconBarObj *obj, int width) {
if (multibyte) {
XRectangle ink, logical;
XmbTextExtents(m_screen->getWindowStyle()->font.set,
title, title_len, &ink, &logical);
fluxboxwin->getIconTitle().c_str(), fluxboxwin->getIconTitle().size(), &ink, &logical);
title_text_w = logical.width;
} else {
title_text_w = XTextWidth(m_screen->getWindowStyle()->font.fontstruct,
title, title_len);
fluxboxwin->getIconTitle().c_str(), fluxboxwin->getIconTitle().size());
}
int l = title_text_w;
int dlen=title_len;
unsigned int dlen=fluxboxwin->getIconTitle().size();
unsigned int bevel_w = m_screen->getBevelWidth();
int dx=bevel_w*2;
@ -264,12 +262,12 @@ void IconBar::draw(IconBarObj *obj, int width) {
if (multibyte) {
XRectangle ink, logical;
XmbTextExtents(m_screen->getWindowStyle()->tab.font.set,
title, dlen,
&ink, &logical);
fluxboxwin->getIconTitle().c_str(), dlen,
&ink, &logical);
l = logical.width;
} else
l = XTextWidth(m_screen->getWindowStyle()->tab.font.fontstruct,
title, dlen);
fluxboxwin->getIconTitle().c_str(), dlen);
l += (bevel_w * 4);
if (l < width)
@ -295,13 +293,13 @@ void IconBar::draw(IconBarObj *obj, int width) {
XmbDrawString(m_display, iconwin,
m_screen->getWindowStyle()->tab.font.set,
m_screen->getWindowStyle()->tab.l_text_focus_gc, dx,
1 - m_screen->getWindowStyle()->tab.font.set_extents->max_ink_extent.y,
title, dlen);
1 - m_screen->getWindowStyle()->tab.font.set_extents->max_ink_extent.y,
fluxboxwin->getIconTitle().c_str(), dlen);
} else {
XDrawString(m_display, iconwin,
m_screen->getWindowStyle()->tab.l_text_focus_gc, dx,
m_screen->getWindowStyle()->tab.font.fontstruct->ascent + 1,
title, dlen);
fluxboxwin->getIconTitle().c_str(), dlen);
}
}

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Screen.cc,v 1.40 2002/04/02 23:14:54 fluxgen Exp $
// $Id: Screen.cc,v 1.41 2002/04/03 23:02:16 fluxgen Exp $
//use GNU extensions
#ifndef _GNU_SOURCE
@ -696,7 +696,7 @@ void BScreen::addIcon(FluxboxWindow *w) {
iconList.push_back(w);
iconmenu->insert(w->getIconTitle());
iconmenu->insert(w->getIconTitle().c_str());
iconmenu->update();
toolbar->addIcon(w);
}

View file

@ -19,7 +19,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Tab.cc,v 1.21 2002/04/03 12:08:54 fluxgen Exp $
// $Id: Tab.cc,v 1.22 2002/04/03 23:01:04 fluxgen Exp $
#include "Tab.hh"
@ -361,33 +361,33 @@ void Tab::draw(bool pressed) {
(!m_win->isShaded() && m_win->getScreen()->isTabRotateVertical())) {
tabtext_w = DrawUtil::XRotTextWidth(m_win->getScreen()->getWindowStyle()->tab.rot_font,
m_win->client.title, m_win->client.title_len);
m_win->getTitle().c_str(), m_win->getTitle().size());
tabtext_w += (m_win->frame.bevel_w * 4);
DrawUtil::DrawRotString(m_display, m_tabwin, gc,
m_win->getScreen()->getWindowStyle()->tab.rot_font,
m_win->getScreen()->getWindowStyle()->tab.font.justify,
tabtext_w, m_size_w, m_size_h,
m_win->frame.bevel_w, m_win->client.title);
m_win->frame.bevel_w, m_win->getTitle().c_str());
} else {
if (I18n::instance()->multibyte()) { // TODO: maybe move this out from here?
XRectangle ink, logical;
XmbTextExtents(m_win->getScreen()->getWindowStyle()->tab.font.set,
m_win->client.title, m_win->client.title_len,
m_win->getTitle().c_str(), m_win->getTitle().size(),
&ink, &logical);
tabtext_w = logical.width;
} else {
tabtext_w = XTextWidth(
m_win->getScreen()->getWindowStyle()->tab.font.fontstruct,
m_win->client.title, m_win->client.title_len);
m_win->getTitle().c_str(), m_win->getTitle().size());
}
tabtext_w += (m_win->frame.bevel_w * 4);
DrawUtil::DrawString(m_display, m_tabwin, gc,
&m_win->getScreen()->getWindowStyle()->tab.font,
tabtext_w, m_size_w,
m_win->frame.bevel_w, m_win->client.title);
m_win->frame.bevel_w, m_win->getTitle().c_str());
}
}

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Toolbar.cc,v 1.17 2002/04/03 12:08:54 fluxgen Exp $
// $Id: Toolbar.cc,v 1.18 2002/04/03 23:02:49 fluxgen Exp $
// stupid macros needed to access some functions in version 2 of the GNU C
// library
@ -727,17 +727,17 @@ void Toolbar::redrawWindowLabel(Bool redraw) {
if (foc->getScreen() != screen)
return;
int dx = (frame.bevel_w * 2), dlen = strlen(foc->getTitle());
int dx = (frame.bevel_w * 2), dlen = foc->getTitle().size();
unsigned int l;
I18n *i18n = I18n::instance();
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getToolbarStyle()->font.set, foc->getTitle(), dlen,
XmbTextExtents(screen->getToolbarStyle()->font.set, foc->getTitle().c_str(), dlen,
&ink, &logical);
l = logical.width;
} else
l = XTextWidth(screen->getToolbarStyle()->font.fontstruct, foc->getTitle(), dlen);
l = XTextWidth(screen->getToolbarStyle()->font.fontstruct, foc->getTitle().c_str(), dlen);
l += (frame.bevel_w * 4);
@ -746,10 +746,10 @@ void Toolbar::redrawWindowLabel(Bool redraw) {
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getToolbarStyle()->font.set,
foc->getTitle(), dlen, &ink, &logical);
foc->getTitle().c_str(), dlen, &ink, &logical);
l = logical.width;
} else
l = XTextWidth(screen->getToolbarStyle()->font.fontstruct, foc->getTitle(), dlen);
l = XTextWidth(screen->getToolbarStyle()->font.fontstruct, foc->getTitle().c_str(), dlen);
l += (frame.bevel_w * 4);
@ -774,12 +774,12 @@ void Toolbar::redrawWindowLabel(Bool redraw) {
screen->getToolbarStyle()->font.set,
screen->getToolbarStyle()->w_text_gc, dx, 1 -
screen->getToolbarStyle()->font.set_extents->max_ink_extent.y,
foc->getTitle(), dlen);
foc->getTitle().c_str(), dlen);
else
XDrawString(display, frame.window_label,
screen->getToolbarStyle()->w_text_gc, dx,
screen->getToolbarStyle()->font.fontstruct->ascent + 1,
foc->getTitle(), dlen);
foc->getTitle().c_str(), dlen);
} else
XClearWindow(display, frame.window_label);
}

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Window.cc,v 1.35 2002/03/23 15:14:45 fluxgen Exp $
// $Id: Window.cc,v 1.36 2002/04/03 23:01:04 fluxgen Exp $
//use GNU extensions
#ifndef _GNU_SOURCE
@ -152,9 +152,6 @@ tab(0)
client.wm_hint_flags = client.normal_hint_flags = 0;
client.transient_for = client.transient = 0;
client.title = 0;
client.title_len = 0;
client.icon_title = 0;
client.mwm_hint = (MwmHints *) 0;
client.blackbox_hint = 0;
@ -421,12 +418,6 @@ FluxboxWindow::~FluxboxWindow(void) {
if (windowmenu)
delete windowmenu;
if (client.title)
delete [] client.title;
if (client.icon_title)
delete [] client.icon_title;
if (tab!=0)
delete tab;
tab = 0;
@ -1366,15 +1357,15 @@ void FluxboxWindow::reconfigure(void) {
client.y = frame.y + frame.y_border + frame.mwm_border_w +
screen->getBorderWidth();
if (client.title) {
if (getTitle().size()>0) {
if (I18n::instance()->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getWindowStyle()->font.set,
client.title, client.title_len, &ink, &logical);
getTitle().c_str(), getTitle().size(), &ink, &logical);
client.title_text_w = logical.width;
} else {
client.title_text_w = XTextWidth(screen->getWindowStyle()->font.fontstruct,
client.title, client.title_len);
getTitle().c_str(), getTitle().size());
}
client.title_text_w += (frame.bevel_w * 4);
@ -1447,10 +1438,6 @@ void FluxboxWindow::positionWindows(void) {
void FluxboxWindow::getWMName(void) {
if (client.title) {
delete [] client.title;
client.title = 0;
}
XTextProperty text_prop;
char **list;
@ -1466,44 +1453,32 @@ void FluxboxWindow::getWMName(void) {
if ((XmbTextPropertyToTextList(display, &text_prop,
&list, &num) == Success) &&
(num > 0) && *list) {
client.title = StringUtil::strdup(*list);
client.title = static_cast<char *>(*list);
XFreeStringList(list);
} else
client.title = StringUtil::strdup((char *) text_prop.value);
client.title = (char *)text_prop.value;
} else
client.title = StringUtil::strdup((char *) text_prop.value);
client.title = (char *)text_prop.value;
XFree((char *) text_prop.value);
} else
client.title = StringUtil::strdup(i18n->getMessage(
#ifdef NLS
WindowSet, WindowUnnamed,
#else // !NLS
0, 0,
#endif //
"Unnamed"));
client.title = i18n->getMessage(
WindowSet, WindowUnnamed,
"Unnamed");
} else {
client.title = StringUtil::strdup(i18n->getMessage(
#ifdef NLS
WindowSet, WindowUnnamed,
#else // !NLS
0, 0,
#endif //
"Unnamed"));
client.title = i18n->getMessage(
WindowSet, WindowUnnamed,
"Unnamed");
}
client.title_len = strlen(client.title);
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getWindowStyle()->font.set,
client.title, client.title_len, &ink, &logical);
getTitle().c_str(), getTitle().size(), &ink, &logical);
client.title_text_w = logical.width;
} else {
client.title_len = strlen(client.title);
client.title_text_w = XTextWidth(screen->getWindowStyle()->font.fontstruct,
client.title, client.title_len);
getTitle().c_str(), getTitle().size());
}
client.title_text_w += (frame.bevel_w * 4);
@ -1511,10 +1486,6 @@ void FluxboxWindow::getWMName(void) {
void FluxboxWindow::getWMIconName(void) {
if (client.icon_title) {
delete [] client.icon_title;
client.icon_title = (char *) 0;
}
XTextProperty text_prop;
char **list;
@ -1528,18 +1499,18 @@ void FluxboxWindow::getWMIconName(void) {
if ((XmbTextPropertyToTextList(display, &text_prop,
&list, &num) == Success) &&
(num > 0) && *list) {
client.icon_title = StringUtil::strdup(*list);
client.icon_title = (char *)*list;
XFreeStringList(list);
} else
client.icon_title = StringUtil::strdup((char *) text_prop.value);
client.icon_title = (char *)text_prop.value;
} else
client.icon_title = StringUtil::strdup((char *) text_prop.value);
client.icon_title = (char *)text_prop.value;
XFree((char *) text_prop.value);
} else
client.icon_title = StringUtil::strdup(client.title);
client.icon_title = getTitle(); //assign title to icon title
} else
client.icon_title = StringUtil::strdup(client.title);
client.icon_title = getTitle(); //assign title to icon title
}
@ -2829,7 +2800,7 @@ void FluxboxWindow::redrawLabel(void) {
DrawUtil::DrawString(display, frame.label, gc,
&screen->getWindowStyle()->font,
client.title_text_w, frame.label_w,
frame.bevel_w, client.title);
frame.bevel_w, getTitle().c_str());
}

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Window.hh,v 1.14 2002/03/23 15:14:45 fluxgen Exp $
// $Id: Window.hh,v 1.15 2002/04/03 23:01:04 fluxgen Exp $
#ifndef WINDOW_HH
#define WINDOW_HH
@ -146,8 +146,8 @@ public:
inline Windowmenu *getWindowmenu(void) { return windowmenu; }
inline const char *getTitle(void) const { return client.title; }
inline const char *getIconTitle(void) const { return client.icon_title; }
inline const std::string &getTitle(void) const { return client.title; }
inline const std::string &getIconTitle(void) const { return client.icon_title; }
inline const int getXFrame(void) const { return frame.x; }
inline const int getYFrame(void) const { return frame.y; }
inline const int getXClient(void) const { return client.x; }
@ -237,8 +237,8 @@ private:
*transient; // which window is our transient?
Window window, window_group;
char *title, *icon_title;
int x, y, old_bw, title_len;
std::string title, icon_title;
int x, y, old_bw;
unsigned int width, height, title_text_w,
min_width, min_height, max_width, max_height, width_inc, height_inc,
min_aspect_x, min_aspect_y, max_aspect_x, max_aspect_y,
@ -384,8 +384,6 @@ protected:
void downsize(void);
void right_fixsize(int * = 0, int * = 0);
void left_fixsize(int * = 0, int * = 0);
};

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Workspace.cc,v 1.15 2002/04/02 23:14:07 fluxgen Exp $
// $Id: Workspace.cc,v 1.16 2002/04/03 23:04:01 fluxgen Exp $
// use GNU extensions
#ifndef _GNU_SOURCE
@ -115,7 +115,7 @@ const int Workspace::addWindow(FluxboxWindow *w, bool place) {
windowList.insert(it, w);
}
clientmenu->insert(w->getTitle());
clientmenu->insert(w->getTitle().c_str());
clientmenu->update();
screen->updateNetizenWindowAdd(w->getClientWindow(), id);