Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: D.A. Tiger 26. 01. 2021, 23:45:01
-
Zdravým,
rád bych poprosil o radu někoho zkušenějšího, kdo se vyzná v C++ GUI knihovně Foxlib:
Snažím se vytvořit komponentu podobnou HeaderBaru v GTK/Gnome 3. Rád bych, aby přes HeaderBar bylo možné ovládat myší pozici okna stejně, jak je tomu v Gnome. Bohužel jsem narazil na to, že mi z nějakého důvodu systém neodesílá do widgetu zprávy typu SEL_LEFTBUTTONPRESS a SEL_LEFTBUTTONRELEASE. Přitom třeba tlačítka, posuvníky a pod, fungují bez problému. Test aplikace, přikládáne k Fox toolkitu, taktéž - takže se s největší pravděpodobností nejedná o bug přímo v knihovně.
Třída widgetu je potomkem třídy FXVerticalFrame, a jejím GUI předkem je vždy nějaké toplevel okno. verze Fox 1.7.74
Kód třídy (obsah hlavičkového i implementačního souboru ) jsem vystavil na pastebin. Byl by někdo prosím ochotný se mi na to mrknout a poradit mi, co dělám špatně, popř. proč se to nechová podle očekávaní? Já na to nemohu za boha sám přijít.
https://www.pastebin.cz/en/p/Go7ScEz
Dopředu díky.
-
Zdravím
Problém se mi nakonec podařilo vyřešit. Pro případ, že by to někdy někdo potřeboval posílám i řešení:
FXVerticalFrame, FXHorizontalFrame a předpokládám, že i ostatní správci layoutu, nemají povoleno přijímat události z myši a klávesnice (vyjímkou jsou zprávy typu SEL_ENTER a SEL_LEAVE). Pro ovládání této vlastnosti okna (widgetu) slouží tři metody, které dědí potomci třídy FXWindow.
virtual void FXWindow::enable( ) povoleni
virtual void FXWindow::disable( ) zákaz
FXbool FXWindow::isEnabled( ) Vrátí aktuální stav