X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fclient.hh;h=d2c8b5f81c828c2012d1903e507040f84b3972da;hb=105e3524a3f6b526d54ecc761a6e6c91b04f3949;hp=9196d1347e593ab84bee1561c02aff57893760a2;hpb=77ab46d1e35d48e73c201e6de88b26f48bb06425;p=chaz%2Fopenbox diff --git a/src/client.hh b/src/client.hh index 9196d134..d2c8b5f8 100644 --- a/src/client.hh +++ b/src/client.hh @@ -12,6 +12,7 @@ #include "otk/strut.hh" #include "otk/rect.hh" #include "otk/eventhandler.hh" +#include "otk/ustring.hh" extern "C" { #include @@ -182,9 +183,9 @@ private: long _desktop; //! Normal window title - std::string _title; // XXX: Have to keep track if this string is Utf8 or not + otk::ustring _title; //! Window title when iconifiged - std::string _icon_title; + otk::ustring _icon_title; //! The application that created the window std::string _app_name; @@ -310,6 +311,8 @@ private: */ FunctionFlags _functions; + //! Retrieves the window's initial gravity + void getGravity(); //! Retrieves the desktop hint's value and sets Client::_desktop void getDesktop(); //! Retrieves the window's type and sets Client::_type @@ -364,6 +367,8 @@ private: //! Change the client's state hints to match the class' data void changeState(); + //! Change the allowed actions set on the client + void changeAllowedActions(); //! Request the client to close its window. void close(); @@ -374,7 +379,29 @@ private: unshaded. */ void shade(bool shade); - + + //! Internal version of the Client::move function + /*! + @param x The X coordinate to move to. + @param y The Y coordinate to move to. + */ + void internal_move(int x, int y); + //! Internal version of the Client::resize function + /*! + This also maintains things like the client's minsize, and size increments. + @param anchor The corner to keep in the same position when resizing. + @param w The width component of the new size for the client. + @param h The height component of the new size for the client. + @param x An optional X coordinate to which the window will be moved + after resizing. + @param y An optional Y coordinate to which the window will be moved + after resizing. + The x and y coordinates must both be sepcified together, or they will have + no effect. When they are specified, the anchor is ignored. + */ + void internal_resize(Corner anchor, int w, int h, + int x = INT_MIN, int y = INT_MIN); + public: #ifndef SWIG //! Constructs a new Client object around a specified window id @@ -412,9 +439,9 @@ BB @param window The window id that the Client class should handle */ inline long desktop() const { return _desktop; } //! Returns the window's title - inline const std::string &title() const { return _title; } + inline const otk::ustring &title() const { return _title; } //! Returns the window's title when it is iconified - inline const std::string &iconTitle() const { return _title; } + inline const otk::ustring &iconTitle() const { return _title; } //! Returns the application's name to whom the window belongs inline const std::string &appName() const { return _app_name; } //! Returns the class of the window @@ -495,6 +522,10 @@ BB @param window The window id that the Client class should handle inline const otk::Strut &strut() const { return _strut; } //! Move the client window + /*! + @param x The X coordinate to move to. + @param y The Y coordinate to move to. + */ void move(int x, int y); //! Resizes the client window, anchoring it in a given corner @@ -503,14 +534,8 @@ BB @param window The window id that the Client class should handle @param anchor The corner to keep in the same position when resizing. @param w The width component of the new size for the client. @param h The height component of the new size for the client. - @param x An optional X coordinate to which the window will be moved - after resizing. - @param y An optional Y coordinate to which the window will be moved - after resizing. - The x and y coordinates must both be sepcified together, or they will have - no effect. When they are specified, the anchor is ignored. */ - void resize(Corner anchor, int w, int h, int x = INT_MIN, int y = INT_MIN); + void resize(Corner anchor, int w, int h); //! Attempt to focus the client window bool focus() const;