diff options
Diffstat (limited to 'src/Window.cc')
-rw-r--r-- | src/Window.cc | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/src/Window.cc b/src/Window.cc index 55fe23c..73afefc 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Window.cc,v 1.121 2003/02/19 14:53:38 fluxgen Exp $ | 25 | // $Id: Window.cc,v 1.122 2003/02/20 23:17:36 fluxgen Exp $ |
26 | 26 | ||
27 | #include "Window.hh" | 27 | #include "Window.hh" |
28 | 28 | ||
@@ -483,8 +483,9 @@ void FluxboxWindow::positionWindows() { | |||
483 | if (decorations.titlebar) { | 483 | if (decorations.titlebar) { |
484 | m_frame.titlebar().setBorderWidth(screen->getBorderWidth()); | 484 | m_frame.titlebar().setBorderWidth(screen->getBorderWidth()); |
485 | m_frame.showTitlebar(); | 485 | m_frame.showTitlebar(); |
486 | } else | 486 | } else { |
487 | m_frame.hideTitlebar(); | 487 | m_frame.hideTitlebar(); |
488 | } | ||
488 | 489 | ||
489 | if (decorations.handle) { | 490 | if (decorations.handle) { |
490 | m_frame.handle().setBorderWidth(screen->getBorderWidth()); | 491 | m_frame.handle().setBorderWidth(screen->getBorderWidth()); |
@@ -831,7 +832,7 @@ void FluxboxWindow::moveResize(int new_x, int new_y, | |||
831 | if (tab) | 832 | if (tab) |
832 | tab->resize(); | 833 | tab->resize(); |
833 | 834 | ||
834 | positionWindows(); | 835 | //positionWindows(); |
835 | setFocusFlag(focused); | 836 | setFocusFlag(focused); |
836 | shaded = false; | 837 | shaded = false; |
837 | send_event = true; | 838 | send_event = true; |
@@ -1636,10 +1637,12 @@ void FluxboxWindow::popupMenu() { | |||
1636 | m_windowmenu.hide(); | 1637 | m_windowmenu.hide(); |
1637 | return; | 1638 | return; |
1638 | } | 1639 | } |
1640 | // move menu directly under titlebar | ||
1641 | int diff_y = m_frame.titlebar().height() + m_frame.titlebar().borderWidth(); | ||
1642 | if (!decorations.titlebar) // if we don't have any titlebar | ||
1643 | diff_y = 0; | ||
1639 | 1644 | ||
1640 | m_windowmenu.move(m_last_button_x, | 1645 | m_windowmenu.move(m_last_button_x, m_frame.y() + diff_y); |
1641 | m_frame.y() + m_frame.titlebar().height() + | ||
1642 | m_frame.titlebar().borderWidth()*2); | ||
1643 | m_windowmenu.show(); | 1646 | m_windowmenu.show(); |
1644 | m_windowmenu.raise(); | 1647 | m_windowmenu.raise(); |
1645 | } | 1648 | } |
@@ -1655,7 +1658,7 @@ void FluxboxWindow::restoreGravity() { | |||
1655 | client.x = m_frame.x(); | 1658 | client.x = m_frame.x(); |
1656 | break; | 1659 | break; |
1657 | 1660 | ||
1658 | // handle Eastward gravity | 1661 | // handle Eastward gravity |
1659 | case NorthEastGravity: | 1662 | case NorthEastGravity: |
1660 | case EastGravity: | 1663 | case EastGravity: |
1661 | case SouthEastGravity: | 1664 | case SouthEastGravity: |
@@ -1917,9 +1920,10 @@ void FluxboxWindow::propertyNotifyEvent(Atom atom) { | |||
1917 | upsize(); | 1920 | upsize(); |
1918 | 1921 | ||
1919 | // reconfigure if the old values changed | 1922 | // reconfigure if the old values changed |
1920 | if ((x != m_frame.x()) || (y != m_frame.y()) || | 1923 | if (x != m_frame.x() || y != m_frame.y() || |
1921 | (w != m_frame.width()) || (h != m_frame.height())) | 1924 | w != m_frame.width() || h != m_frame.height()) { |
1922 | reconfigure(); | 1925 | moveResize(x, y, w, h); |
1926 | } | ||
1923 | 1927 | ||
1924 | break; | 1928 | break; |
1925 | } | 1929 | } |
@@ -1927,9 +1931,10 @@ void FluxboxWindow::propertyNotifyEvent(Atom atom) { | |||
1927 | default: | 1931 | default: |
1928 | if (atom == FbAtoms::instance()->getWMProtocolsAtom()) { | 1932 | if (atom == FbAtoms::instance()->getWMProtocolsAtom()) { |
1929 | getWMProtocols(); | 1933 | getWMProtocols(); |
1934 | //!!TODO check this area | ||
1930 | // reset window actions | 1935 | // reset window actions |
1931 | screen->setupWindowActions(*this); | 1936 | screen->setupWindowActions(*this); |
1932 | //!!TODO check this area | 1937 | |
1933 | } | 1938 | } |
1934 | break; | 1939 | break; |
1935 | } | 1940 | } |
@@ -1946,9 +1951,6 @@ void FluxboxWindow::configureRequestEvent(XConfigureRequestEvent &cr) { | |||
1946 | if (cr.window != client.window) | 1951 | if (cr.window != client.window) |
1947 | return; | 1952 | return; |
1948 | 1953 | ||
1949 | if (! validateClient()) | ||
1950 | return; | ||
1951 | |||
1952 | int cx = m_frame.x(), cy = m_frame.y(); | 1954 | int cx = m_frame.x(), cy = m_frame.y(); |
1953 | unsigned int cw = m_frame.width(), ch = m_frame.height(); | 1955 | unsigned int cw = m_frame.width(), ch = m_frame.height(); |
1954 | 1956 | ||
@@ -1959,7 +1961,7 @@ void FluxboxWindow::configureRequestEvent(XConfigureRequestEvent &cr) { | |||
1959 | cx = cr.x; | 1961 | cx = cr.x; |
1960 | 1962 | ||
1961 | if (cr.value_mask & CWY) | 1963 | if (cr.value_mask & CWY) |
1962 | cy = cr.y - m_frame.titlebar().height(); | 1964 | cy = cr.y - (decorations.titlebar ? m_frame.titlebar().height() : 0); |
1963 | 1965 | ||
1964 | if (cr.value_mask & CWWidth) | 1966 | if (cr.value_mask & CWWidth) |
1965 | cw = cr.width; | 1967 | cw = cr.width; |
@@ -1967,13 +1969,14 @@ void FluxboxWindow::configureRequestEvent(XConfigureRequestEvent &cr) { | |||
1967 | if (cr.value_mask & CWHeight) | 1969 | if (cr.value_mask & CWHeight) |
1968 | ch = cr.height; | 1970 | ch = cr.height; |
1969 | 1971 | ||
1970 | if (m_frame.x() != cx || m_frame.y() != cy || | 1972 | |
1971 | m_frame.width() != cw || m_frame.height() != ch) { | 1973 | // the request is for client window so we resize the frame to it first |
1972 | // the request is for client window so we resize the frame to it first | 1974 | if (frame().width() != cw || frame().height() != ch) |
1973 | frame().resizeForClient(cw, ch); | 1975 | frame().resizeForClient(cw, ch); |
1976 | if (frame().x() != cx || frame().y() != cy) | ||
1974 | move(cx, cy); | 1977 | move(cx, cy); |
1975 | 1978 | ||
1976 | } | 1979 | |
1977 | 1980 | ||
1978 | if (cr.value_mask & CWStackMode) { | 1981 | if (cr.value_mask & CWStackMode) { |
1979 | switch (cr.detail) { | 1982 | switch (cr.detail) { |