improved transparent rendering

This commit is contained in:
fluxgen 2004-02-27 11:55:27 +00:00
parent f2d92decb6
commit 635e30e915

View file

@ -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: Menu.cc,v 1.54 2004/01/21 09:03:13 fluxgen Exp $ // $Id: Menu.cc,v 1.55 2004/02/27 11:55:27 fluxgen Exp $
//use GNU extensions //use GNU extensions
#ifndef _GNU_SOURCE #ifndef _GNU_SOURCE
@ -508,7 +508,7 @@ void Menu::update(int active_index) {
menu.frame.setBackgroundPixmap(m_frame_pm.drawable()); menu.frame.setBackgroundPixmap(m_frame_pm.drawable());
clearWindow(); // clearWindow();
if (title_vis && visible) if (title_vis && visible)
redrawTitle(); redrawTitle();
@ -523,6 +523,12 @@ void Menu::update(int active_index) {
if (m_parent && visible) if (m_parent && visible)
m_parent->drawSubmenu(m_parent->which_sub); m_parent->drawSubmenu(m_parent->which_sub);
menu.frame.clearArea(0, active_index * menu.item_h,
width(), menu.item_h);
menu.frame.updateTransparent(0, active_index * menu.item_h,
width(), menu.item_h);
} }
menu.window.clear(); menu.window.clear();
@ -979,9 +985,11 @@ void Menu::drawItem(unsigned int index, bool highlight, bool clear, bool render_
menu.frame.clearArea(item_x, item_y, menu.frame.clearArea(item_x, item_y,
menu.item_w, menu.item_h, False); menu.item_w, menu.item_h, False);
if (render_trans) {
menu.frame.updateTransparent(item_x, item_y,
menu.item_w, menu.item_h);
}
menu.frame.updateTransparent(item_x, item_y,
menu.item_w, menu.item_h);
} }
@ -1228,11 +1236,15 @@ void Menu::exposeEvent(XExposeEvent &ee) {
Menuitems::iterator it_end = menuitems.end(); Menuitems::iterator it_end = menuitems.end();
for (ii = id; ii <= id_d && it != it_end; ++it, ii++) { for (ii = id; ii <= id_d && it != it_end; ++it, ii++) {
unsigned int index = ii + (i * menu.persub); unsigned int index = ii + (i * menu.persub);
drawItem(index, (which_sub == static_cast<signed>(index)), true, true, drawItem(index,
(which_sub == static_cast<signed>(index)), // highlight
true, // clear
false, // render trans
ee.x, ee.y, ee.width, ee.height); ee.x, ee.y, ee.width, ee.height);
} }
} }
} }
menu.frame.updateTransparent(ee.x, ee.y, ee.width, ee.height);
} }
} }