}
}
+ // finally, user specified disabled decorations are applied to subtract
+ // decorations
+ if (_disabled_decorations & Decor_Titlebar)
+ _decorations &= ~Decor_Titlebar;
+ if (_disabled_decorations & Decor_Handle)
+ _decorations &= ~Decor_Handle;
+ if (_disabled_decorations & Decor_Border)
+ _decorations &= ~Decor_Border;
+ if (_disabled_decorations & Decor_Iconify)
+ _decorations &= ~Decor_Iconify;
+ if (_disabled_decorations & Decor_Maximize)
+ _decorations &= ~Decor_Maximize;
+ if (_disabled_decorations & Decor_AllDesktops)
+ _decorations &= ~Decor_AllDesktops;
+ if (_disabled_decorations & Decor_Close)
+ _decorations &= ~Decor_Close;
+
changeAllowedActions();
}
}
+void Client::disableDecorations(DecorationFlags flags)
+{
+ _disabled_decorations = flags;
+ setupDecorAndFunctions();
+ if (frame)
+ frame->adjustSize(); // change the decors on the frame
+}
+
+
bool Client::focus()
{
// won't try focus if the client doesn't want it, or if the window isn't
*/
DecorationFlags _decorations;
+ //! A bitmask of values in the Client::Decoration enum.
+ /*!
+ Specifies the decorations that should NOT be displayed on the client.
+ */
+ DecorationFlags _disabled_decorations;
+
//! A bitmask of values in the Client::Function enum
/*!
The values in the variable specify the ways in which the user is allowed to
//! Returns the decorations that the client window wishes to be displayed on
//! it
inline DecorationFlags decorations() const { return _decorations; }
+ //! Returns the decorations that the user has requested to be disabled on the
+ //! client
+ inline DecorationFlags disabledDecorations() const
+ { return _disabled_decorations; }
//! Returns the functions that the user can perform on the window
inline FunctionFlags funtions() const { return _functions; }
*/
void resize(Corner anchor, int w, int h);
+ //! Choose a mask of decorations to not display on the client
+ /*!
+ Pass a value of 0 to the function to turn all decorations back on. Note
+ that you cannot add decorations to a window with this, you can only remove
+ decorations that would otherwise have been displayed.
+ @param flags The mask of values from Client::Decoration to specify which
+ decorations should not be displayed.
+ */
+ void disableDecorations(DecorationFlags flags);
+
//! Attempt to focus the client window
bool focus();
been unmapped/destroyed, and so is invalid.
*/
bool validate() const;
-
+
virtual void focusHandler(const XFocusChangeEvent &e);
virtual void unfocusHandler(const XFocusChangeEvent &e);
virtual void propertyHandler(const XPropertyEvent &e);
AllDesktopsButton,
Grip,
Root,
- MenuItem,
- NUM_MOUSE_CONTEXT
+ MenuItem
+#if ! (defined(DOXYGEN_IGNORE) || defined(SWIG))
+ , NUM_MOUSE_CONTEXT
+#endif
};
};
Press,
Click,
DoubleClick,
- Motion,
- NUM_MOUSE_ACTION
+ Motion
+#if ! (defined(DOXYGEN_IGNORE) || defined(SWIG))
+ , NUM_MOUSE_ACTION
+#endif
};
};
struct KeyContext {
enum KC {
Menu,
- All,
- NUM_KEY_CONTEXT
+ All
+#if ! (defined(DOXYGEN_IGNORE) || defined(SWIG))
+ , NUM_KEY_CONTEXT
+#endif
};
};
struct KeyAction {
enum KA {
Press,
- Release,
- NUM_KEY_ACTION
+ Release
+#if ! (defined(DOXYGEN_IGNORE) || defined(SWIG))
+ , NUM_KEY_ACTION
+#endif
};
};
struct EventAction {
enum EA {
- EnterWindow,
- LeaveWindow,
+ EnterWindow, //!< Occurs when the mouse enters a window
+ LeaveWindow, //!< Occurs when the mouse leaves a window
+ //! Occurs while a window is being managed. The handler should call
+ //! Client::move to the window
PlaceWindow,
+ //! Occurs while a window is being managed, just before the window is
+ //! displayed
+ /*!
+ Note that the window's state may not be completely stabilized by this
+ point. The NewWindow event should be used when possible.
+ */
+ DisplayingWindow,
+ //! Occurs when a window is finished being managed
NewWindow,
+ //! Occurs when a window has been closed and is going to be unmanaged
CloseWindow,
+ //! Occurs when the window manager manages a screen
+ /*!
+ This event occurs on each managed screen during startup.
+ */
Startup,
+ //! Occurs when the window manager unmanages a screen
+ /*!
+ This event occurs on each managed screen during shutdown.
+ */
Shutdown,
+ //! Occurs when the input focus target changes
+ /*!
+ The data.client will be None of no client is focused.
+ */
Focus,
+ //! Occurs when the system is fired through X.
+ /*!
+ The data.client will hold the client associated with the bell if
+ one has been specified, or None.
+ */
Bell,
- UrgentWindow,
- NUM_EVENTS
+ //! Occurs when a client toggles its urgent status.
+ /*!
+ The Client::urgent method can be used to get the status.
+ */
+ UrgentWindow
+#if ! (defined(DOXYGEN_IGNORE) || defined(SWIG))
+ , NUM_EVENTS
+#endif
};
};
openbox->bindings()->fireEvent(&data);
}
+ EventData data(_number, client, EventAction::DisplayingWindow, 0);
+ openbox->bindings()->fireEvent(&data);
+
// if on the current desktop.. (or all desktops)
if (client->desktop() == _desktop ||
client->desktop() == (signed)0xffffffff) {
// add to the screen's list
clients.push_back(client);
+ // once the client is in the list, update our strut to include the new
+ // client's
+ updateStrut();
// this puts into the stacking order, then raises it
_stacking.push_back(client);
raiseWindow(client);
openbox->bindings()->grabButtons(true, client);
- // call the python NEWWINDOW binding
EventData data(_number, client, EventAction::NewWindow, 0);
openbox->bindings()->fireEvent(&data);