all repos — fluxbox @ 3d8a063bd02a6c42414e202cce81be27415d1abb

custom fork of the fluxbox windowmanager

arrowbutton
fluxgen fluxgen
commit

3d8a063bd02a6c42414e202cce81be27415d1abb

parent

6f01383c89b47edbd635c16dfebca3b9af27eb9a

2 files changed, 144 insertions(+), 0 deletions(-)

jump to
A src/ArrowButton.cc

@@ -0,0 +1,95 @@

+// ArrowButton.cc for Fluxbox Window Manager +// Copyright (c) 2002 Henrik Kinnunen (fluxgen at users.sourceforge.net) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// 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: ArrowButton.cc,v 1.1 2002/12/13 20:21:09 fluxgen Exp $ + +#include "ArrowButton.hh" + +#include "App.hh" + +ArrowButton::ArrowButton(ArrowButton::Type arrow_type, + FbTk::FbWindow &parent, + int x, int y, + unsigned int width, unsigned int height): + FbTk::Button(parent, x, y, width, height), + m_arrow_type(arrow_type) { +} + +ArrowButton::ArrowButton(ArrowButton::Type arrow_type, + int screen_num, + int x, int y, + unsigned int width, unsigned int height): + FbTk::Button(screen_num, x, y, width, height), + m_arrow_type(arrow_type) { + +} + +void ArrowButton::clear() { + FbTk::Button::clear(); + drawArrow(); +} + +void ArrowButton::exposeEvent(XExposeEvent &event) { + FbTk::Button::exposeEvent(event); + drawArrow(); +} + +void ArrowButton::buttonPressEvent(XButtonEvent &event) { + FbTk::Button::buttonPressEvent(event); + drawArrow(); +} + +void ArrowButton::buttonReleaseEvent(XButtonEvent &event) { + FbTk::Button::buttonReleaseEvent(event); + drawArrow(); +} + +/** + redraws the arrow button +*/ +void ArrowButton::drawArrow() { + XPoint pts[3]; + unsigned int w = width() / 2; + unsigned int h = height() / 2; + switch (m_arrow_type) { + case LEFT: + pts[0].x = w - 2; pts[0].y = h; + pts[1].x = 4; pts[1].y = 2; + pts[2].x = 0; pts[2].y = -4; + break; + case RIGHT: + pts[0].x = w - 2; pts[0].y = h - 2; + pts[1].x = 4; pts[1].y = 2; + pts[2].x = -4; pts[2].y = 2; + break; + case UP: // TODO + break; + case DOWN: // TODO + break; + } + + if (gc() != 0) { + Display *disp = FbTk::App::instance()->display(); + XFillPolygon(disp, window().window(), gc(), + pts, 3, Convex, CoordModePrevious); + } +} +
A src/ArrowButton.hh

@@ -0,0 +1,49 @@

+// ArrowButton.hh for Fluxbox Window Manager +// Copyright (c) 2002 Henrik Kinnunen (fluxgen at users.sourceforge.net) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// 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: ArrowButton.hh,v 1.1 2002/12/13 20:21:12 fluxgen Exp $ + +#ifndef ARROWBUTTON_HH +#define ARROWBUTTON_HH + +#include "Button.hh" +/// Displays a arrow on a button +class ArrowButton: public FbTk::Button { +public: + enum Type { LEFT, RIGHT, UP, DOWN}; + + ArrowButton(Type arrow_type, FbTk::FbWindow &parent, + int x, int y, + unsigned int width, unsigned int height); + ArrowButton(Type arrow_type, int screen_num, + int x, int y, + unsigned int width, unsigned int height); + void clear(); + void buttonReleaseEvent(XButtonEvent &event); + void buttonPressEvent(XButtonEvent &event); + void exposeEvent(XExposeEvent &event); + +private: + void drawArrow(); + Type m_arrow_type; +}; + +#endif // ARROWBUTTON_HH