X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FToolbar.cc;h=955eb5a05223ed47384a204c2e7a2a2f187fa2de;hb=b016470119788a052ef1de0457e2e8d104e90d81;hp=dac1ad7f16611b8189d8b5e29deffa92062b7e4f;hpb=ed3e597500ce29be5bd53671f9c92ed15e55f4ac;p=chaz%2Fopenbox diff --git a/src/Toolbar.cc b/src/Toolbar.cc index dac1ad7f..955eb5a0 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.cc @@ -53,16 +53,14 @@ using std::string; #include "i18n.hh" #include "blackbox.hh" -#include "Clientmenu.hh" #include "Font.hh" #include "GCCache.hh" -#include "Iconmenu.hh" #include "Image.hh" -#include "Rootmenu.hh" #include "Screen.hh" #include "Toolbar.hh" #include "Window.hh" #include "Workspace.hh" +#include "Clientmenu.hh" #include "Workspacemenu.hh" #include "Slit.hh" @@ -96,7 +94,6 @@ Toolbar::Toolbar(BScreen *scrn) { editing = False; new_name_pos = 0; - frame.grab_x = frame.grab_y = 0; toolbarmenu = new Toolbarmenu(this); @@ -625,6 +622,32 @@ void Toolbar::redrawWorkspaceLabel(bool redraw) { } +void Toolbar::drawArrow(Drawable surface, bool left) const { + int hh = frame.button_w / 2, hw = frame.button_w / 2; + XPoint pts[3]; + const int bullet_size = 3; + + if (left) { + pts[0].x = hw - bullet_size; + pts[0].y = hh; + pts[1].x = 2 * bullet_size; + pts[1].y = bullet_size; + pts[2].x = 0; + pts[2].y = -(2 * bullet_size); + } else { + pts[0].x = hw - bullet_size; + pts[0].y = hh - bullet_size; + pts[1].x = (2 * bullet_size); + pts[1].y = bullet_size; + pts[2].x = -(2 * bullet_size); + pts[2].y = bullet_size; + } + + BPen pen(screen->getToolbarStyle()->b_pic); + XFillPolygon(display, surface, pen.gc(), pts, 3, Convex, CoordModePrevious); +} + + void Toolbar::redrawPrevWorkspaceButton(bool pressed, bool redraw) { if (redraw) { if (pressed) { @@ -641,17 +664,7 @@ void Toolbar::redrawPrevWorkspaceButton(bool pressed, bool redraw) { XClearWindow(display, frame.psbutton); } - int hh = frame.button_w / 2, hw = frame.button_w / 2; - - XPoint pts[3]; - pts[0].x = hw - 2; pts[0].y = hh; - pts[1].x = 4; pts[1].y = 2; - pts[2].x = 0; pts[2].y = -4; - - ToolbarStyle *style = screen->getToolbarStyle(); - BPen pen(style->b_pic); - XFillPolygon(display, frame.psbutton, pen.gc(), - pts, 3, Convex, CoordModePrevious); + drawArrow(frame.psbutton, True); } @@ -671,17 +684,7 @@ void Toolbar::redrawNextWorkspaceButton(bool pressed, bool redraw) { XClearWindow(display, frame.nsbutton); } - int hh = frame.button_w / 2, hw = frame.button_w / 2; - - XPoint pts[3]; - pts[0].x = hw - 2; pts[0].y = hh - 2; - pts[1].x = 4; pts[1].y = 2; - pts[2].x = -4; pts[2].y = 2; - - ToolbarStyle *style = screen->getToolbarStyle(); - BPen pen(style->b_pic); - XFillPolygon(display, frame.nsbutton, pen.gc(), - pts, 3, Convex, CoordModePrevious); + drawArrow(frame.nsbutton, False); } @@ -701,17 +704,7 @@ void Toolbar::redrawPrevWindowButton(bool pressed, bool redraw) { XClearWindow(display, frame.pwbutton); } - int hh = frame.button_w / 2, hw = frame.button_w / 2; - - XPoint pts[3]; - pts[0].x = hw - 2; pts[0].y = hh; - pts[1].x = 4; pts[1].y = 2; - pts[2].x = 0; pts[2].y = -4; - - ToolbarStyle *style = screen->getToolbarStyle(); - BPen pen(style->b_pic); - XFillPolygon(display, frame.pwbutton, pen.gc(), - pts, 3, Convex, CoordModePrevious); + drawArrow(frame.pwbutton, True); } @@ -731,17 +724,7 @@ void Toolbar::redrawNextWindowButton(bool pressed, bool redraw) { XClearWindow(display, frame.nwbutton); } - int hh = frame.button_w / 2, hw = frame.button_w / 2; - - XPoint pts[3]; - pts[0].x = hw - 2; pts[0].y = hh - 2; - pts[1].x = 4; pts[1].y = 2; - pts[2].x = -4; pts[2].y = 2; - - ToolbarStyle *style = screen->getToolbarStyle(); - BPen pen(style->b_pic); - XFillPolygon(display, frame.nwbutton, pen.gc(), pts, 3, Convex, - CoordModePrevious); + drawArrow(frame.nwbutton, False); } @@ -925,19 +908,14 @@ void Toolbar::keyPressEvent(const XKeyEvent *ke) { editing = False; blackbox->setNoFocus(False); - if (blackbox->getFocusedWindow()) { + if (blackbox->getFocusedWindow()) blackbox->getFocusedWindow()->setInputFocus(); - } else { + else blackbox->setFocusedWindow(0); - } - - Workspace *wkspc = screen->getCurrentWorkspace(); - wkspc->setName(new_workspace_name); - wkspc->getMenu()->hide(); - screen->getWorkspacemenu()->changeItemLabel(wkspc->getID() + 2, - wkspc->getName()); - screen->getWorkspacemenu()->update(); + // the toolbar will be reconfigured when the change to the workspace name + // gets caught in the PropertyNotify event handler + screen->getCurrentWorkspace()->setName(new_workspace_name); new_workspace_name.erase(); new_name_pos = 0; @@ -953,7 +931,6 @@ void Toolbar::keyPressEvent(const XKeyEvent *ke) { else XSetWindowBackgroundPixmap(display, frame.workspace_label, frame.wlabel); - reconfigure(); } else if (! (ks == XK_Shift_L || ks == XK_Shift_R || ks == XK_Control_L || ks == XK_Control_R || ks == XK_Caps_Lock || ks == XK_Shift_Lock ||