update menu xinerama settings after moving

This commit is contained in:
markt 2007-06-03 23:51:11 +00:00
parent c16f838abf
commit 8f89c86592
4 changed files with 24 additions and 2 deletions

View file

@ -1,5 +1,9 @@
(Format: Year/Month/Day)
Changes for 1.0.0:
*07/06/04:
* Fix submenu placement with xinerama after moving the menu between heads,
bug #1479517 (Mark)
FbMenu.cc/hh FbTk/Menu.hh
*07/06/03:
* Deiconify when automatically tabbing to a minimized window with focus new
windows on, bug #1716899 (Mark)

View file

@ -23,8 +23,10 @@
#include "FbMenu.hh"
#include "MenuTheme.hh"
#include "fluxbox.hh"
#include "MenuTheme.hh"
#include "Screen.hh"
#include "Shape.hh"
FbMenu::FbMenu(MenuTheme &tm, FbTk::ImageControl &imgctrl,
@ -54,3 +56,17 @@ void FbMenu::reconfigure() {
FbTk::Menu::reconfigure();
}
void FbMenu::buttonReleaseEvent(XButtonEvent &be) {
BScreen *screen = Fluxbox::instance()->findScreen(screenNumber());
if (be.window == titleWindow() && isMoving() && screen) {
// menu stopped moving, so update head
int head = screen->getHead(be.x_root, be.y_root);
setScreen(screen->getHeadX(head),
screen->getHeadY(head),
screen->getHeadWidth(head),
screen->getHeadHeight(head));
}
// now get on with the show
FbTk::Menu::buttonReleaseEvent(be);
}

View file

@ -41,6 +41,7 @@ public:
void raise() { m_layeritem.raise(); }
void lower() { m_layeritem.lower(); }
void reconfigure();
void buttonReleaseEvent(XButtonEvent &be);
private:
FbTk::XLayerItem m_layeritem;
std::auto_ptr<Shape> m_shape;

View file

@ -104,7 +104,7 @@ public:
//@{
void handleEvent(XEvent &event);
void buttonPressEvent(XButtonEvent &bp);
void buttonReleaseEvent(XButtonEvent &br);
virtual void buttonReleaseEvent(XButtonEvent &br);
void motionNotifyEvent(XMotionEvent &mn);
void exposeEvent(XExposeEvent &ee);
void keyPressEvent(XKeyEvent &ke);
@ -138,6 +138,7 @@ public:
#endif
inline bool isTorn() const { return m_torn; }
inline bool isVisible() const { return m_visible; }
inline bool isMoving() const { return m_moving; }
inline int screenNumber() const { return menu.window.screenNumber(); }
inline Window window() const { return menu.window.window(); }
inline FbWindow &fbwindow() { return menu.window; }