patch from Rob Stevens to add dragndrop-reordering of the tabs

disable title of the windowmenu when called from titlebar
This commit is contained in:
mathias 2004-11-24 23:28:10 +00:00
parent a932a7a801
commit 65f4f32366

View file

@ -616,7 +616,7 @@ void FluxboxWindow::shape() {
/// attach a client to this window and destroy old window /// attach a client to this window and destroy old window
void FluxboxWindow::attachClient(WinClient &client) { void FluxboxWindow::attachClient(WinClient &client, int x, int y) {
//!! TODO: check for isGroupable in client //!! TODO: check for isGroupable in client
if (client.m_win == this) if (client.m_win == this)
return; return;
@ -666,6 +666,8 @@ void FluxboxWindow::attachClient(WinClient &client) {
btn->setJustify(frame().theme().justify()); btn->setJustify(frame().theme().justify());
m_labelbuttons[(*client_it)] = btn; m_labelbuttons[(*client_it)] = btn;
frame().addLabelButton(*btn); frame().addLabelButton(*btn);
if(x >= 0)
frame().moveLabelButtonTo(*btn, x ,y);
btn->show(); btn->show();
// we need motion notify so we mask it // we need motion notify so we mask it
btn->setEventMask(ExposureMask | ButtonPressMask | btn->setEventMask(ExposureMask | ButtonPressMask |
@ -2033,6 +2035,7 @@ void FluxboxWindow::popupMenu() {
return; return;
} }
menu().disableTitle();
int menu_y = frame().titlebar().height() + frame().titlebar().borderWidth(); int menu_y = frame().titlebar().height() + frame().titlebar().borderWidth();
if (!decorations.titlebar) // if we don't have any titlebar if (!decorations.titlebar) // if we don't have any titlebar
menu_y = 0; menu_y = 0;
@ -3183,7 +3186,6 @@ void FluxboxWindow::attachTo(int x, int y, bool interrupted) {
int dest_x = 0, dest_y = 0; int dest_x = 0, dest_y = 0;
Window child = 0; Window child = 0;
if (XTranslateCoordinates(display, parent().window(), if (XTranslateCoordinates(display, parent().window(),
parent().window(), parent().window(),
x, y, &dest_x, &dest_y, &child)) { x, y, &dest_x, &dest_y, &child)) {
@ -3200,10 +3202,11 @@ void FluxboxWindow::attachTo(int x, int y, bool interrupted) {
attach_to_win = client->fbwindow(); attach_to_win = client->fbwindow();
} }
} }
if (attach_to_win != this && if (attach_to_win != this &&
attach_to_win != 0 && attach_to_win->isTabable()) { attach_to_win != 0 && attach_to_win->isTabable()) {
attach_to_win->attachClient(*old_attached); attach_to_win->attachClient(*old_attached,x,y );
// we could be deleted here, DO NOT do anything else that alters this object // we could be deleted here, DO NOT do anything else that alters this object
} else if (attach_to_win != this) { } else if (attach_to_win != this) {
// disconnect client if we didn't drop on a window // disconnect client if we didn't drop on a window
@ -3215,6 +3218,12 @@ void FluxboxWindow::attachTo(int x, int y, bool interrupted) {
client.m_win->move(frame().x() - m_last_resize_x + x, frame().y() - m_last_resize_y + y); client.m_win->move(frame().x() - m_last_resize_x + x, frame().y() - m_last_resize_y + y);
} }
else if(attach_to_win==this && attach_to_win->isTabable()) {
//reording of tabs within a frame
FbWinFrame *frame=&attach_to_win->frame();
frame->moveLabelButtonTo(*m_labelbuttons[old_attached], x, y);
}
} }
} }