fix usage of decoration.border (incl xmms move bug)
add BORDER to help turn on borders to remember stuff
This commit is contained in:
parent
bbaca5b43b
commit
b8802ad22a
4 changed files with 45 additions and 49 deletions
|
@ -1,5 +1,9 @@
|
||||||
(Format: Year/Month/Day)
|
(Format: Year/Month/Day)
|
||||||
Changes for 0.9.3:
|
Changes for 0.9.3:
|
||||||
|
*03/05/26:
|
||||||
|
* Fix usage of decorations.border, add BORDER decoration to remember
|
||||||
|
(Simon)
|
||||||
|
Window.hh/cc Remember.cc
|
||||||
*03/05/24:
|
*03/05/24:
|
||||||
* Fix crash when toolbar turned off, and toolbar initialisation (Simon)
|
* Fix crash when toolbar turned off, and toolbar initialisation (Simon)
|
||||||
Menu.cc Screen.cc Toolbar.cc
|
Menu.cc Screen.cc Toolbar.cc
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
// $Id: Remember.cc,v 1.16 2003/05/15 23:30:06 fluxgen Exp $
|
// $Id: Remember.cc,v 1.17 2003/05/26 04:24:24 rathnor Exp $
|
||||||
|
|
||||||
#include "Remember.hh"
|
#include "Remember.hh"
|
||||||
#include "StringUtil.hh"
|
#include "StringUtil.hh"
|
||||||
|
@ -264,6 +264,11 @@ int Remember::parseApp(ifstream &file, Application &app) {
|
||||||
FluxboxWindow::DECORM_TITLEBAR
|
FluxboxWindow::DECORM_TITLEBAR
|
||||||
| FluxboxWindow::DECORM_MENU
|
| FluxboxWindow::DECORM_MENU
|
||||||
);
|
);
|
||||||
|
} else if (str_label == "BORDER") {
|
||||||
|
app.rememberDecostate((unsigned int)
|
||||||
|
FluxboxWindow::DECORM_BORDER
|
||||||
|
| FluxboxWindow::DECORM_MENU
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
unsigned int mask;
|
unsigned int mask;
|
||||||
const char * str = str_label.c_str();
|
const char * str = str_label.c_str();
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
// $Id: Window.cc,v 1.186 2003/05/24 13:02:49 fluxgen Exp $
|
// $Id: Window.cc,v 1.187 2003/05/26 04:24:24 rathnor Exp $
|
||||||
|
|
||||||
#include "Window.hh"
|
#include "Window.hh"
|
||||||
|
|
||||||
|
@ -502,7 +502,7 @@ void FluxboxWindow::init() {
|
||||||
|
|
||||||
grabButtons();
|
grabButtons();
|
||||||
|
|
||||||
positionWindows();
|
applyDecorations();
|
||||||
|
|
||||||
if (m_workspace_number < 0 || m_workspace_number >= screen().getCount())
|
if (m_workspace_number < 0 || m_workspace_number >= screen().getCount())
|
||||||
m_workspace_number = screen().currentWorkspaceID();
|
m_workspace_number = screen().currentWorkspaceID();
|
||||||
|
@ -842,7 +842,7 @@ void FluxboxWindow::reconfigure() {
|
||||||
|
|
||||||
upsize();
|
upsize();
|
||||||
|
|
||||||
positionWindows();
|
applyDecorations();
|
||||||
|
|
||||||
setFocusFlag(focused);
|
setFocusFlag(focused);
|
||||||
|
|
||||||
|
@ -856,32 +856,6 @@ void FluxboxWindow::reconfigure() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FluxboxWindow::positionWindows() {
|
|
||||||
|
|
||||||
frame().window().setBorderWidth(screen().rootTheme().borderWidth());
|
|
||||||
frame().clientArea().setBorderWidth(0); // client area bordered by other things
|
|
||||||
|
|
||||||
frame().titlebar().setBorderWidth(screen().rootTheme().borderWidth());
|
|
||||||
if (decorations.titlebar) {
|
|
||||||
frame().showTitlebar();
|
|
||||||
} else {
|
|
||||||
frame().hideTitlebar();
|
|
||||||
}
|
|
||||||
|
|
||||||
frame().handle().setBorderWidth(screen().rootTheme().borderWidth());
|
|
||||||
frame().gripLeft().setBorderWidth(screen().rootTheme().borderWidth());
|
|
||||||
frame().gripRight().setBorderWidth(screen().rootTheme().borderWidth());
|
|
||||||
|
|
||||||
if (decorations.handle)
|
|
||||||
frame().showHandle();
|
|
||||||
else
|
|
||||||
frame().hideHandle();
|
|
||||||
|
|
||||||
frame().reconfigure();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// update current client title and title in our frame
|
/// update current client title and title in our frame
|
||||||
void FluxboxWindow::updateTitleFromClient() {
|
void FluxboxWindow::updateTitleFromClient() {
|
||||||
|
|
||||||
|
@ -1026,12 +1000,12 @@ void FluxboxWindow::getMWMHints() {
|
||||||
Atom atom_return;
|
Atom atom_return;
|
||||||
unsigned long num, len;
|
unsigned long num, len;
|
||||||
Atom motif_wm_hints = XInternAtom(display, "_MOTIF_WM_HINTS", False);
|
Atom motif_wm_hints = XInternAtom(display, "_MOTIF_WM_HINTS", False);
|
||||||
if (!m_client->property(motif_wm_hints, 0,
|
if (!(m_client->property(motif_wm_hints, 0,
|
||||||
PropMwmHintsElements, false,
|
PropMwmHintsElements, false,
|
||||||
motif_wm_hints, &atom_return,
|
motif_wm_hints, &atom_return,
|
||||||
&format, &num, &len,
|
&format, &num, &len,
|
||||||
(unsigned char **) &m_client->mwm_hint) == Success &&
|
(unsigned char **) &m_client->mwm_hint) &&
|
||||||
m_client->mwm_hint) {
|
m_client->mwm_hint)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (num != static_cast<unsigned int>(PropMwmHintsElements))
|
if (num != static_cast<unsigned int>(PropMwmHintsElements))
|
||||||
|
@ -1182,18 +1156,18 @@ bool FluxboxWindow::setInputFocus() {
|
||||||
//TODO hint skip focus
|
//TODO hint skip focus
|
||||||
if (((signed) (frame().x() + frame().width())) < 0) {
|
if (((signed) (frame().x() + frame().width())) < 0) {
|
||||||
if (((signed) (frame().y() + frame().height())) < 0) {
|
if (((signed) (frame().y() + frame().height())) < 0) {
|
||||||
moveResize(screen().rootTheme().borderWidth(), screen().rootTheme().borderWidth(),
|
moveResize(frame().window().borderWidth(), frame().window().borderWidth(),
|
||||||
frame().width(), frame().height());
|
frame().width(), frame().height());
|
||||||
} else if (frame().y() > (signed) screen().height()) {
|
} else if (frame().y() > (signed) screen().height()) {
|
||||||
moveResize(screen().rootTheme().borderWidth(), screen().height() - frame().height(),
|
moveResize(frame().window().borderWidth(), screen().height() - frame().height(),
|
||||||
frame().width(), frame().height());
|
frame().width(), frame().height());
|
||||||
} else {
|
} else {
|
||||||
moveResize(screen().rootTheme().borderWidth(), frame().y() + screen().rootTheme().borderWidth(),
|
moveResize(frame().window().borderWidth(), frame().y() + frame().window().borderWidth(),
|
||||||
frame().width(), frame().height());
|
frame().width(), frame().height());
|
||||||
}
|
}
|
||||||
} else if (frame().x() > (signed) screen().width()) {
|
} else if (frame().x() > (signed) screen().width()) {
|
||||||
if (((signed) (frame().y() + frame().height())) < 0) {
|
if (((signed) (frame().y() + frame().height())) < 0) {
|
||||||
moveResize(screen().width() - frame().width(), screen().rootTheme().borderWidth(),
|
moveResize(screen().width() - frame().width(), frame().window().borderWidth(),
|
||||||
frame().width(), frame().height());
|
frame().width(), frame().height());
|
||||||
} else if (frame().y() > (signed) screen().height()) {
|
} else if (frame().y() > (signed) screen().height()) {
|
||||||
moveResize(screen().width() - frame().width(),
|
moveResize(screen().width() - frame().width(),
|
||||||
|
@ -1201,7 +1175,7 @@ bool FluxboxWindow::setInputFocus() {
|
||||||
frame().width(), frame().height());
|
frame().width(), frame().height());
|
||||||
} else {
|
} else {
|
||||||
moveResize(screen().width() - frame().width(),
|
moveResize(screen().width() - frame().width(),
|
||||||
frame().y() + screen().rootTheme().borderWidth(),
|
frame().y() + frame().window().borderWidth(),
|
||||||
frame().width(), frame().height());
|
frame().width(), frame().height());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2360,8 +2334,8 @@ void FluxboxWindow::buttonPressEvent(XButtonEvent &be) {
|
||||||
raise();
|
raise();
|
||||||
XAllowEvents(display, ReplayPointer, be.time);
|
XAllowEvents(display, ReplayPointer, be.time);
|
||||||
} else {
|
} else {
|
||||||
m_button_grab_x = be.x_root - frame().x() - screen().rootTheme().borderWidth();
|
m_button_grab_x = be.x_root - frame().x() - frame().window().borderWidth();
|
||||||
m_button_grab_y = be.y_root - frame().y() - screen().rootTheme().borderWidth();
|
m_button_grab_y = be.y_root - frame().y() - frame().window().borderWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_windowmenu.isVisible())
|
if (m_windowmenu.isVisible())
|
||||||
|
@ -2398,7 +2372,7 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) {
|
||||||
if (Fluxbox::instance()->getIgnoreBorder()
|
if (Fluxbox::instance()->getIgnoreBorder()
|
||||||
&& !(me.state & Mod1Mask) // really should check for exact matches
|
&& !(me.state & Mod1Mask) // really should check for exact matches
|
||||||
&& !(isMoving() || isResizing())) {
|
&& !(isMoving() || isResizing())) {
|
||||||
int borderw = screen().rootTheme().borderWidth();
|
int borderw = frame().window().borderWidth();
|
||||||
if (me.x_root < (frame().x() + borderw) ||
|
if (me.x_root < (frame().x() + borderw) ||
|
||||||
me.y_root < (frame().y() + borderw) ||
|
me.y_root < (frame().y() + borderw) ||
|
||||||
me.x_root > (frame().x() + (int)frame().width() + borderw) ||
|
me.x_root > (frame().x() + (int)frame().width() + borderw) ||
|
||||||
|
@ -2430,8 +2404,8 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) {
|
||||||
int dx = me.x_root - m_button_grab_x,
|
int dx = me.x_root - m_button_grab_x,
|
||||||
dy = me.y_root - m_button_grab_y;
|
dy = me.y_root - m_button_grab_y;
|
||||||
|
|
||||||
dx -= screen().rootTheme().borderWidth();
|
dx -= frame().window().borderWidth();
|
||||||
dy -= screen().rootTheme().borderWidth();
|
dy -= frame().window().borderWidth();
|
||||||
|
|
||||||
// Warp to next or previous workspace?, must have moved sideways some
|
// Warp to next or previous workspace?, must have moved sideways some
|
||||||
int moved_x = me.x_root - m_last_resize_x;
|
int moved_x = me.x_root - m_last_resize_x;
|
||||||
|
@ -2561,8 +2535,8 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) {
|
||||||
// so we update drag'n'drop-rectangle
|
// so we update drag'n'drop-rectangle
|
||||||
int dx = me.x_root - 1, dy = me.y_root - 1;
|
int dx = me.x_root - 1, dy = me.y_root - 1;
|
||||||
|
|
||||||
dx -= screen().rootTheme().borderWidth();
|
dx -= frame().window().borderWidth();
|
||||||
dy -= screen().rootTheme().borderWidth();
|
dy -= frame().window().borderWidth();
|
||||||
|
|
||||||
if (screen().getEdgeSnapThreshold()) {
|
if (screen().getEdgeSnapThreshold()) {
|
||||||
int drx = screen().width() - (dx + 1);
|
int drx = screen().width() - (dx + 1);
|
||||||
|
@ -2699,6 +2673,21 @@ void FluxboxWindow::setDecoration(Decoration decoration) {
|
||||||
|
|
||||||
// commit current decoration values to actual displayed things
|
// commit current decoration values to actual displayed things
|
||||||
void FluxboxWindow::applyDecorations() {
|
void FluxboxWindow::applyDecorations() {
|
||||||
|
frame().clientArea().setBorderWidth(0); // client area bordered by other things
|
||||||
|
|
||||||
|
unsigned int borderW = 0;
|
||||||
|
if (decorations.border)
|
||||||
|
borderW = screen().rootTheme().borderWidth();
|
||||||
|
|
||||||
|
if (frame().window().borderWidth() != borderW) {
|
||||||
|
frame().window().setBorderWidth(borderW);
|
||||||
|
frame().titlebar().setBorderWidth(borderW);
|
||||||
|
frame().handle().setBorderWidth(borderW);
|
||||||
|
frame().gripLeft().setBorderWidth(borderW);
|
||||||
|
frame().gripRight().setBorderWidth(borderW);
|
||||||
|
frame().reconfigure();
|
||||||
|
}
|
||||||
|
|
||||||
// we rely on frame not doing anything if it is already shown/hidden
|
// we rely on frame not doing anything if it is already shown/hidden
|
||||||
if (decorations.titlebar)
|
if (decorations.titlebar)
|
||||||
frame().showTitlebar();
|
frame().showTitlebar();
|
||||||
|
@ -2710,7 +2699,6 @@ void FluxboxWindow::applyDecorations() {
|
||||||
else
|
else
|
||||||
frame().hideHandle();
|
frame().hideHandle();
|
||||||
|
|
||||||
// is reconfigure needed here?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FluxboxWindow::toggleDecoration() {
|
void FluxboxWindow::toggleDecoration() {
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
// $Id: Window.hh,v 1.75 2003/05/24 13:01:48 fluxgen Exp $
|
// $Id: Window.hh,v 1.76 2003/05/26 04:24:24 rathnor Exp $
|
||||||
|
|
||||||
#ifndef WINDOW_HH
|
#ifndef WINDOW_HH
|
||||||
#define WINDOW_HH
|
#define WINDOW_HH
|
||||||
|
@ -373,7 +373,6 @@ private:
|
||||||
void associateClientWindow();
|
void associateClientWindow();
|
||||||
void createWinButtons();
|
void createWinButtons();
|
||||||
void decorateLabel();
|
void decorateLabel();
|
||||||
void positionWindows();
|
|
||||||
|
|
||||||
void restoreGravity();
|
void restoreGravity();
|
||||||
void setGravityOffsets();
|
void setGravityOffsets();
|
||||||
|
|
Loading…
Reference in a new issue