std::string for title and icon title in FluxboxWindow
@@ -19,7 +19,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// 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 @@ return;
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 @@
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 @@ for (; dlen >= 0; dlen--) {
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 @@ if (multibyte) {
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); } }
@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// 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 @@ w->setWindowNumber(iconList.size());
iconList.push_back(w); - iconmenu->insert(w->getIconTitle()); + iconmenu->insert(w->getIconTitle().c_str()); iconmenu->update(); toolbar->addIcon(w); }
@@ -19,7 +19,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// 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 @@ m_win->getScreen()->getTabPlacement() == PRIGHT) &&
(!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()); } }
@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// 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 @@ FluxboxWindow *foc = Fluxbox::instance()->getFocusedWindow();
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 @@ for (; dlen >= 0; dlen--) {
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 @@ XmbDrawString(display, frame.window_label,
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); }
@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// 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 @@ functions.close = decorations.close = false;
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;@@ -420,12 +417,6 @@ screen->removeIcon(this);
if (windowmenu) delete windowmenu; - - if (client.title) - delete [] client.title; - - if (client.icon_title) - delete [] client.icon_title; if (tab!=0) delete tab;@@ -1366,15 +1357,15 @@ client.x = frame.x + frame.mwm_border_w + screen->getBorderWidth();
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::getWMName(void) { - if (client.title) { - delete [] client.title; - client.title = 0; - } XTextProperty text_prop; char **list;@@ -1466,44 +1453,32 @@
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::getWMIconName(void) { - if (client.icon_title) { - delete [] client.icon_title; - client.icon_title = (char *) 0; - } XTextProperty text_prop; char **list;@@ -1528,18 +1499,18 @@
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 @@
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()); }
@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// 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 @@ inline const Window &getClientWindow(void) const { return client.window; }
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 @@ FluxboxWindow *transient_for, // which window are we a transient for?
*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 @@ void upsize(void);
void downsize(void); void right_fixsize(int * = 0, int * = 0); void left_fixsize(int * = 0, int * = 0); - - };
@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// 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 @@ }
windowList.insert(it, w); } - clientmenu->insert(w->getTitle()); + clientmenu->insert(w->getTitle().c_str()); clientmenu->update(); screen->updateNetizenWindowAdd(w->getClientWindow(), id);