From 08b94c624320a6f0bd61d6ae716a3b2fc6f3ded8 Mon Sep 17 00:00:00 2001 From: fluxgen <fluxgen> Date: Sat, 10 May 2003 14:27:57 +0000 Subject: moved BlackboxHints from BaseDisplay --- src/Window.cc | 115 ++++++++++++++++++++++++++++++---------------------------- src/Window.hh | 32 ++++++++++++++-- 2 files changed, 87 insertions(+), 60 deletions(-) diff --git a/src/Window.cc b/src/Window.cc index e7a7496..b27f82e 100644 --- a/src/Window.cc +++ b/src/Window.cc @@ -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.165 2003/05/08 15:14:50 rathnor Exp $ +// $Id: Window.cc,v 1.166 2003/05/10 14:27:57 fluxgen Exp $ #include "Window.hh" @@ -213,6 +213,9 @@ void LayerMenuItem<FluxboxWindow>::click(int button, int time) { } +//int FluxboxWindow::PropBlackboxHintsElements = 5; +//int FluxboxWindow::PropBlackboxAttributesElements = 8; + FluxboxWindow::FluxboxWindow(WinClient &client, BScreen &scr, FbWinFrameTheme &tm, FbTk::MenuTheme &menutheme, FbTk::XLayer &layer): @@ -1050,33 +1053,33 @@ void FluxboxWindow::getBlackboxHints() { (unsigned char **) &m_client->blackbox_hint) == Success && m_client->blackbox_hint) { - if (num == PropBlackboxHintsElements) { - if (m_client->blackbox_hint->flags & BaseDisplay::ATTRIB_SHADED) - shaded = (m_client->blackbox_hint->attrib & BaseDisplay::ATTRIB_SHADED); + if (num == (unsigned)PropBlackboxHintsElements) { + if (m_client->blackbox_hint->flags & ATTRIB_SHADED) + shaded = (m_client->blackbox_hint->attrib & ATTRIB_SHADED); - if ((m_client->blackbox_hint->flags & BaseDisplay::ATTRIB_MAXHORIZ) && - (m_client->blackbox_hint->flags & BaseDisplay::ATTRIB_MAXVERT)) + if ((m_client->blackbox_hint->flags & ATTRIB_MAXHORIZ) && + (m_client->blackbox_hint->flags & ATTRIB_MAXVERT)) maximized = ((m_client->blackbox_hint->attrib & - (BaseDisplay::ATTRIB_MAXHORIZ | - BaseDisplay::ATTRIB_MAXVERT)) ? 1 : 0); - else if (m_client->blackbox_hint->flags & BaseDisplay::ATTRIB_MAXVERT) + (ATTRIB_MAXHORIZ | + ATTRIB_MAXVERT)) ? 1 : 0); + else if (m_client->blackbox_hint->flags & ATTRIB_MAXVERT) maximized = ((m_client->blackbox_hint->attrib & - BaseDisplay::ATTRIB_MAXVERT) ? 2 : 0); - else if (m_client->blackbox_hint->flags & BaseDisplay::ATTRIB_MAXHORIZ) + ATTRIB_MAXVERT) ? 2 : 0); + else if (m_client->blackbox_hint->flags & ATTRIB_MAXHORIZ) maximized = ((m_client->blackbox_hint->attrib & - BaseDisplay::ATTRIB_MAXHORIZ) ? 3 : 0); + ATTRIB_MAXHORIZ) ? 3 : 0); - if (m_client->blackbox_hint->flags & BaseDisplay::ATTRIB_OMNIPRESENT) + if (m_client->blackbox_hint->flags & ATTRIB_OMNIPRESENT) stuck = (m_client->blackbox_hint->attrib & - BaseDisplay::ATTRIB_OMNIPRESENT); + ATTRIB_OMNIPRESENT); - if (m_client->blackbox_hint->flags & BaseDisplay::ATTRIB_WORKSPACE) + if (m_client->blackbox_hint->flags & ATTRIB_WORKSPACE) workspace_number = m_client->blackbox_hint->workspace; - if (m_client->blackbox_hint->flags & BaseDisplay::ATTRIB_STACK) + if (m_client->blackbox_hint->flags & ATTRIB_STACK) workspace_number = m_client->blackbox_hint->stack; - if (m_client->blackbox_hint->flags & BaseDisplay::ATTRIB_DECORATION) { + if (m_client->blackbox_hint->flags & ATTRIB_DECORATION) { old_decoration = static_cast<Decoration>(m_client->blackbox_hint->decoration); setDecoration(old_decoration); } @@ -1363,7 +1366,7 @@ void FluxboxWindow::setWorkspace(int n) { workspace_number = n; - blackbox_attrib.flags |= BaseDisplay::ATTRIB_WORKSPACE; + blackbox_attrib.flags |= ATTRIB_WORKSPACE; blackbox_attrib.workspace = workspace_number; // notify workspace change @@ -1376,7 +1379,7 @@ void FluxboxWindow::setWorkspace(int n) { void FluxboxWindow::setLayerNum(int layernum) { m_layernum = layernum; - blackbox_attrib.flags |= BaseDisplay::ATTRIB_STACK; + blackbox_attrib.flags |= ATTRIB_STACK; blackbox_attrib.stack = layernum; saveBlackboxHints(); @@ -1396,14 +1399,14 @@ void FluxboxWindow::shade() { if (shaded) { shaded = false; - blackbox_attrib.flags ^= BaseDisplay::ATTRIB_SHADED; - blackbox_attrib.attrib ^= BaseDisplay::ATTRIB_SHADED; + blackbox_attrib.flags ^= ATTRIB_SHADED; + blackbox_attrib.attrib ^= ATTRIB_SHADED; setState(NormalState); } else { shaded = true; - blackbox_attrib.flags |= BaseDisplay::ATTRIB_SHADED; - blackbox_attrib.attrib |= BaseDisplay::ATTRIB_SHADED; + blackbox_attrib.flags |= ATTRIB_SHADED; + blackbox_attrib.attrib |= ATTRIB_SHADED; // shading is the same as iconic setState(IconicState); } @@ -1414,16 +1417,16 @@ void FluxboxWindow::shade() { void FluxboxWindow::stick() { if (stuck) { - blackbox_attrib.flags ^= BaseDisplay::ATTRIB_OMNIPRESENT; - blackbox_attrib.attrib ^= BaseDisplay::ATTRIB_OMNIPRESENT; + blackbox_attrib.flags ^= ATTRIB_OMNIPRESENT; + blackbox_attrib.attrib ^= ATTRIB_OMNIPRESENT; stuck = false; } else { stuck = true; - blackbox_attrib.flags |= BaseDisplay::ATTRIB_OMNIPRESENT; - blackbox_attrib.attrib |= BaseDisplay::ATTRIB_OMNIPRESENT; + blackbox_attrib.flags |= ATTRIB_OMNIPRESENT; + blackbox_attrib.attrib |= ATTRIB_OMNIPRESENT; } @@ -1774,13 +1777,13 @@ void FluxboxWindow::restoreAttributes() { unsigned long ulfoo, nitems; FbAtoms *fbatoms = FbAtoms::instance(); - BaseDisplay::BlackboxAttributes *net; + BlackboxAttributes *net; if (XGetWindowProperty(display, m_client->window(), fbatoms->getFluxboxAttributesAtom(), 0l, PropBlackboxAttributesElements, false, fbatoms->getFluxboxAttributesAtom(), &atom_return, &foo, &nitems, &ulfoo, (unsigned char **) &net) == - Success && net && nitems == PropBlackboxAttributesElements) { + Success && net && nitems == (unsigned)PropBlackboxAttributesElements) { blackbox_attrib.flags = net->flags; blackbox_attrib.attrib = net->attrib; blackbox_attrib.workspace = net->workspace; @@ -1794,8 +1797,8 @@ void FluxboxWindow::restoreAttributes() { } else return; - if (blackbox_attrib.flags & BaseDisplay::ATTRIB_SHADED && - blackbox_attrib.attrib & BaseDisplay::ATTRIB_SHADED) { + if (blackbox_attrib.flags & ATTRIB_SHADED && + blackbox_attrib.attrib & ATTRIB_SHADED) { int save_state = ((current_state == IconicState) ? NormalState : current_state); @@ -1812,29 +1815,29 @@ void FluxboxWindow::restoreAttributes() { } else if (current_state == WithdrawnState) current_state = NormalState; - if (blackbox_attrib.flags & BaseDisplay::ATTRIB_OMNIPRESENT && - blackbox_attrib.attrib & BaseDisplay::ATTRIB_OMNIPRESENT) { + if (blackbox_attrib.flags & ATTRIB_OMNIPRESENT && + blackbox_attrib.attrib & ATTRIB_OMNIPRESENT) { stuck = true; current_state = NormalState; } - if (blackbox_attrib.flags & BaseDisplay::ATTRIB_STACK) { + if (blackbox_attrib.flags & ATTRIB_STACK) { //!! TODO check value? m_layernum = blackbox_attrib.stack; } - if ((blackbox_attrib.flags & BaseDisplay::ATTRIB_MAXHORIZ) || - (blackbox_attrib.flags & BaseDisplay::ATTRIB_MAXVERT)) { + if ((blackbox_attrib.flags & ATTRIB_MAXHORIZ) || + (blackbox_attrib.flags & ATTRIB_MAXVERT)) { int x = blackbox_attrib.premax_x, y = blackbox_attrib.premax_y; unsigned int w = blackbox_attrib.premax_w, h = blackbox_attrib.premax_h; maximized = false; - if ((blackbox_attrib.flags & BaseDisplay::ATTRIB_MAXHORIZ) && - (blackbox_attrib.flags & BaseDisplay::ATTRIB_MAXVERT)) + if ((blackbox_attrib.flags & ATTRIB_MAXHORIZ) && + (blackbox_attrib.flags & ATTRIB_MAXVERT)) maximized = true; - else if (blackbox_attrib.flags & BaseDisplay::ATTRIB_MAXVERT) + else if (blackbox_attrib.flags & ATTRIB_MAXVERT) maximizeVertical(); - else if (blackbox_attrib.flags & BaseDisplay::ATTRIB_MAXHORIZ) + else if (blackbox_attrib.flags & ATTRIB_MAXHORIZ) maximizeHorizontal(); blackbox_attrib.premax_x = x; @@ -3071,34 +3074,34 @@ unsigned int FluxboxWindow::getClientHeight() const { return m_client->height(); unsigned int FluxboxWindow::getClientWidth() const { return m_client->width(); } int FluxboxWindow::initialState() const { return m_client->initial_state; } -void FluxboxWindow::changeBlackboxHints(const BaseDisplay::BlackboxHints &net) { - if ((net.flags & BaseDisplay::ATTRIB_SHADED) && - ((blackbox_attrib.attrib & BaseDisplay::ATTRIB_SHADED) != - (net.attrib & BaseDisplay::ATTRIB_SHADED))) +void FluxboxWindow::changeBlackboxHints(const BlackboxHints &net) { + if ((net.flags & ATTRIB_SHADED) && + ((blackbox_attrib.attrib & ATTRIB_SHADED) != + (net.attrib & ATTRIB_SHADED))) shade(); - if ((net.flags & (BaseDisplay::ATTRIB_MAXVERT | BaseDisplay::ATTRIB_MAXHORIZ)) && - ((blackbox_attrib.attrib & (BaseDisplay::ATTRIB_MAXVERT | BaseDisplay::ATTRIB_MAXHORIZ)) != - (net.attrib & (BaseDisplay::ATTRIB_MAXVERT | BaseDisplay::ATTRIB_MAXHORIZ)))) { + if ((net.flags & (ATTRIB_MAXVERT | ATTRIB_MAXHORIZ)) && + ((blackbox_attrib.attrib & (ATTRIB_MAXVERT | ATTRIB_MAXHORIZ)) != + (net.attrib & (ATTRIB_MAXVERT | ATTRIB_MAXHORIZ)))) { if (maximized) { maximize(); } else { - if ((net.flags & BaseDisplay::ATTRIB_MAXHORIZ) && (net.flags & BaseDisplay::ATTRIB_MAXVERT)) + if ((net.flags & ATTRIB_MAXHORIZ) && (net.flags & ATTRIB_MAXVERT)) maximize(); - else if (net.flags & BaseDisplay::ATTRIB_MAXVERT) + else if (net.flags & ATTRIB_MAXVERT) maximizeVertical(); - else if (net.flags & BaseDisplay::ATTRIB_MAXHORIZ) + else if (net.flags & ATTRIB_MAXHORIZ) maximizeHorizontal(); } } - if ((net.flags & BaseDisplay::ATTRIB_OMNIPRESENT) && - ((blackbox_attrib.attrib & BaseDisplay::ATTRIB_OMNIPRESENT) != - (net.attrib & BaseDisplay::ATTRIB_OMNIPRESENT))) + if ((net.flags & ATTRIB_OMNIPRESENT) && + ((blackbox_attrib.attrib & ATTRIB_OMNIPRESENT) != + (net.attrib & ATTRIB_OMNIPRESENT))) stick(); - if ((net.flags & BaseDisplay::ATTRIB_WORKSPACE) && + if ((net.flags & ATTRIB_WORKSPACE) && (workspace_number != net.workspace)) { screen.reassociateWindow(this, net.workspace, true); @@ -3109,13 +3112,13 @@ void FluxboxWindow::changeBlackboxHints(const BaseDisplay::BlackboxHints &net) { deiconify(); } - if (net.flags & BaseDisplay::ATTRIB_STACK) { + if (net.flags & ATTRIB_STACK) { if ((unsigned int) m_layernum != net.stack) { moveToLayer(net.stack); } } - if (net.flags & BaseDisplay::ATTRIB_DECORATION) { + if (net.flags & ATTRIB_DECORATION) { old_decoration = static_cast<Decoration>(net.decoration); setDecoration(old_decoration); } diff --git a/src/Window.hh b/src/Window.hh index cc7eff9..81e52df 100644 --- a/src/Window.hh +++ b/src/Window.hh @@ -22,12 +22,11 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Window.hh,v 1.67 2003/05/07 16:21:26 rathnor Exp $ +// $Id: Window.hh,v 1.68 2003/05/10 14:23:29 fluxgen Exp $ #ifndef WINDOW_HH #define WINDOW_HH -#include "BaseDisplay.hh" #include "Timer.hh" #include "Menu.hh" #include "Subject.hh" @@ -100,6 +99,31 @@ public: MwmDecorMaximize = (1l << 6) /// maximize }; + /// attributes for BlackboxHints + enum Attrib { + ATTRIB_SHADED = 0x01, + ATTRIB_MAXHORIZ = 0x02, + ATTRIB_MAXVERT = 0x04, + ATTRIB_OMNIPRESENT = 0x08, + ATTRIB_WORKSPACE = 0x10, + ATTRIB_STACK = 0x20, + ATTRIB_DECORATION = 0x40 + }; + + static const int PropBlackboxHintsElements = 5; + static const int PropBlackboxAttributesElements = 8; + + typedef struct _blackbox_hints { + unsigned long flags, attrib, workspace, stack; + int decoration; + } BlackboxHints; + + typedef struct _blackbox_attributes { + unsigned long flags, attrib, workspace, stack; + int premax_x, premax_y; + unsigned int premax_w, premax_h; + } BlackboxAttributes; + typedef std::list<WinClient *> ClientList; /// create a window from a client @@ -174,7 +198,7 @@ public: void moveResize(int x, int y, unsigned int width, unsigned int height); void setWorkspace(int n); - void changeBlackboxHints(const BaseDisplay::BlackboxHints &bh); + void changeBlackboxHints(const BlackboxHints &bh); void restoreAttributes(); void showMenu(int mx, int my); // popup menu on last button press position @@ -388,7 +412,7 @@ private: BScreen &screen; /// screen on which this window exist FbTk::Timer timer; Display *display; /// display connection - BaseDisplay::BlackboxAttributes blackbox_attrib; + BlackboxAttributes blackbox_attrib; Time lastButtonPressTime; FbTk::Menu m_windowmenu; -- cgit v0.11.2