improved transparent rendering
fluxgen fluxgen
1 files changed,
17 insertions(+),
5 deletions(-)
jump to
M
src/FbTk/Menu.cc
→
src/FbTk/Menu.cc
@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // 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 #ifndef _GNU_SOURCE@@ -508,7 +508,7 @@ }
menu.frame.setBackgroundPixmap(m_frame_pm.drawable()); - clearWindow(); + // clearWindow(); if (title_vis && visible) redrawTitle();@@ -523,6 +523,12 @@ }
if (m_parent && visible) 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();@@ -979,9 +985,11 @@
menu.frame.clearArea(item_x, item_y, 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 @@ Menuitems::iterator it = menuitems.begin() + index;
Menuitems::iterator it_end = menuitems.end(); for (ii = id; ii <= id_d && it != it_end; ++it, ii++) { 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); } } } + menu.frame.updateTransparent(ee.x, ee.y, ee.width, ee.height); } }