Салянка из wxWidgets, wxCombobox и MAC OS

June 25th, 2009 Begemot Posted in Программирование

Сборная.

Кажется на маке с комбобоксами плохо, весьма плохо. Как то уж очень странно они выглядят (такое впечетление что родных нет, и вх эмулирует их сам, причем весьма посредственно)

Picture 6

Picture 8

Правда страшненько?

А вот это такое стремненькое белоей с каемочкой это стандартные color picker(!).

Причем тут комбобокс еще немного прилизанный, так как по умолчанию у него размер раза в 2 – 2.5 шире реально необходимо – почему ? хз. Пришлось руками уменьшать размер после создания

#ifdef __WXMAC__
{  // default combobox size under macos is too big
int w = 0, h = 0;
m_OverlayFontSize->GetSize(&w, &h);
m_OverlayFontSize->SetMinSize(wxSize(w / 2, h));
}
// combobox does not receive wxEVT_KILL_FOCUS event under MAC OS – http://trac.wxwidgets.org/ticket/9862
// so we use text update event, inseted of text_enter + kill_focus
#else

#ifdef __WXMAC__
{  // default combobox size under macos is too big
int w = 0, h = 0;
m_OverlayFontSize->GetSize(&w, &h);
m_OverlayFontSize->SetMinSize(wxSize(w / 2, h));
}

А еще они не получает события установки\потери фокуса. Пришлось жертвовать красотой работы и делать отдельную ветку логики под мак:(

Вот такой вот винегрет.

Related:

2 Responses to “Салянка из wxWidgets, wxCombobox и MAC OS”

  1. А wxComboCtrl не рассматривал? Хоть они неродные (generic), но, может быть, будут лучше выглядеть?

    Кстати, что-то не верится, что color picker такие стремные. Может, это баг wxWidgets?

    P.S. Маком не пользовался.

  2. а можно generic и обычные использовать в одной программе ? Я попробывал(быстро) не получилось, скорее всего у нас сборка вх без них.

    Может и баг, но так выглядят, хотя возможно это только на нашем овнердрав дизайне.. Вернусь с Крыма, проверю как в другом софте выглядят.