X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fui%2Ftabbedpanel.cpp;fp=src%2Fui%2Ftabbedpanel.cpp;h=d5deee7b7d5bb4531b6a83dd8fa1b8a3c037c59f;hb=57e073684d7ecd84432cb97464ada8414de40187;hp=49dd1b6bdbadf9ba869d8ad443845e6c5dd083e9;hpb=58b3989181f761d03a6c0a3fafef6e758fb6562a;p=situare diff --git a/src/ui/tabbedpanel.cpp b/src/ui/tabbedpanel.cpp index 49dd1b6..d5deee7 100644 --- a/src/ui/tabbedpanel.cpp +++ b/src/ui/tabbedpanel.cpp @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -35,6 +36,7 @@ #include "tabbedpanel.h" const int PANEL_CONTEXT_BUTTON_BAR_LEFT_X = 1; +const int PANEL_TAB_BAR_TOP_SPACING = 8; TabbedPanel::TabbedPanel(QWidget *parent) : QWidget(parent), @@ -45,7 +47,6 @@ TabbedPanel::TabbedPanel(QWidget *parent) const int PANEL_LEFT_X = 0; const int PANEL_TOP_Y = 0; - const int PANEL_TAB_BAR_TOP_SPACING = 8; resize(PANEL_BAR_TABBED_WIDTH + PANEL_WIDTH, PANEL_HEIGHT); move(PANEL_CLOSED_X, PANEL_TOP_PADDING); @@ -63,6 +64,9 @@ TabbedPanel::TabbedPanel(QWidget *parent) connect(this, SIGNAL(panelClosed()), m_panelTabBar, SLOT(deselectTabs())); + connect(m_panelTabBar, SIGNAL(sizeChangeRequested()), + this, SLOT(calculateMask())); + // --- BAR --- m_panelBar = new PanelBar(this); m_panelBar->move(PANEL_TAB_WIDTH, PANEL_TOP_Y); @@ -122,6 +126,29 @@ int TabbedPanel::addTab(QWidget *widget, const QIcon& icon) return insertTab(APPEND_INDEX, widget, icon); } +void TabbedPanel::calculateMask() +{ + qDebug() << __PRETTY_FUNCTION__; + + QRect panelTabBarRect = m_panelTabBar->rect(); + QRect panelContextButtonBarRect = m_panelContextButtonBar->rect(); + int panelContextButtonBarY = height() - panelContextButtonBarRect.height(); + + if (!m_open) + panelContextButtonBarY = height(); + + QRegion panelTabBarRegion(0, PANEL_TAB_BAR_TOP_SPACING, + panelTabBarRect.width(), panelTabBarRect.height()); + QRegion panelContextButtonBarRegion(0, panelContextButtonBarY, + panelContextButtonBarRect.width(), + panelContextButtonBarRect.height()); + QRegion panelContentRegion(panelTabBarRect.right() + 1, 0, + PANEL_WIDTH, height()); + QRegion panelRegion = panelTabBarRegion + panelContentRegion + panelContextButtonBarRegion; + + setMask(panelRegion); +} + void TabbedPanel::closePanel() { qDebug() << __PRETTY_FUNCTION__; @@ -180,6 +207,7 @@ void TabbedPanel::repositionContextButtonBar() qDebug() << __PRETTY_FUNCTION__; m_panelContextButtonBar->move(PANEL_CONTEXT_BUTTON_BAR_LEFT_X, height()); + calculateMask(); } void TabbedPanel::resizePanel(const QSize &size) @@ -206,6 +234,8 @@ void TabbedPanel::resizePanel(const QSize &size) QPoint openedPosition(size.width() - PANEL_TAB_WIDTH - PANEL_BAR_WIDTH - PANEL_WIDTH, PANEL_TOP_PADDING); m_stateOpened->assignProperty(this, "pos", openedPosition); + + calculateMask(); } void TabbedPanel::setCurrentIndex(int index) @@ -229,6 +259,8 @@ void TabbedPanel::stateChanged() { qDebug() << __PRETTY_FUNCTION__; + calculateMask(); + if (m_open) { m_panelContextButtonBar->showContextButtonBar(); emit panelOpened();