#include <hildon-widgets/hildon-window.h>
#endif // wxUSE_LIBHILDON
+#if wxUSE_LIBHILDON2
+ #include <hildon/hildon.h>
+#endif // wxUSE_LIBHILDON2
+
// ----------------------------------------------------------------------------
// data
// ----------------------------------------------------------------------------
eventShow.SetEventObject(win);
win->GetEventHandler()->ProcessEvent(eventShow);
}
+
+#if GTK_CHECK_VERSION(2,6,0)
+ if (!gtk_check_version(2,6,0))
+ {
+ // restore focus-on-map setting in case ShowWithoutActivating() was called
+ gtk_window_set_focus_on_map(GTK_WINDOW(win->m_widget), true);
+ }
+#endif // GTK+ 2.6+
+
return false;
}
}
GdkEvent * WXUNUSED(event),
wxTopLevelWindow *win )
{
- win->SetIconizeState(true);
+ // hiding the window doesn't count as minimizing it
+ if (win->IsShown())
+ win->SetIconizeState(true);
return false;
}
}
// e.g. in wxTaskBarIconAreaGTK
if (m_widget == NULL)
{
-#if wxUSE_LIBHILDON
+#if wxUSE_LIBHILDON || wxUSE_LIBHILDON2
// we must create HildonWindow and not a normal GtkWindow as the latter
// doesn't look correctly in Maemo environment and it must also be
// registered with the main program object
m_widget = hildon_window_new();
hildon_program_add_window(wxTheApp->GetHildonProgram(),
HILDON_WINDOW(m_widget));
-#else // !wxUSE_LIBHILDON
+#else // !wxUSE_LIBHILDON || !wxUSE_LIBHILDON2
m_widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
if (GetExtraStyle() & wxTOPLEVEL_EX_DIALOG)
{
style |= wxFRAME_NO_TASKBAR;
}
}
-#endif // wxUSE_LIBHILDON/!wxUSE_LIBHILDON
+#endif // wxUSE_LIBHILDON || wxUSE_LIBHILDON2/!wxUSE_LIBHILDON || !wxUSE_LIBHILDON2
g_object_ref(m_widget);
}
{
gtk_window_set_keep_above(GTK_WINDOW(m_widget), TRUE);
}
+ if (style & wxMAXIMIZE)
+ gtk_window_maximize(GTK_WINDOW(m_widget));
#if 0
if (!name.empty())
gtk_container_add( GTK_CONTAINER(m_widget), m_mainWidget );
// m_wxwindow is the client area
- m_wxwindow = wxPizza::New(0,this);
+ m_wxwindow = wxPizza::New();
gtk_widget_show( m_wxwindow );
gtk_container_add( GTK_CONTAINER(m_mainWidget), m_wxwindow );
wxTopLevelWindowGTK::~wxTopLevelWindowGTK()
{
-#if wxUSE_LIBHILDON
+#if wxUSE_LIBHILDON || wxUSE_LIBHILDON2
// it can also be a (standard) dialog
if ( HILDON_IS_WINDOW(m_widget) )
{
hildon_program_remove_window(wxTheApp->GetHildonProgram(),
HILDON_WINDOW(m_widget));
}
-#endif // wxUSE_LIBHILDON
+#endif // wxUSE_LIBHILDON || wxUSE_LIBHILDON2
if (m_grabbed)
{
HandleWindowEvent(event);
}
- bool change = wxTopLevelWindowBase::Show(show);
+ bool change = base_type::Show(show);
if (change && !show)
{
return change;
}
+void wxTopLevelWindowGTK::ShowWithoutActivating()
+{
+ if (!m_isShown)
+ {
+#if GTK_CHECK_VERSION(2,6,0)
+ if (!gtk_check_version(2,6,0))
+ gtk_window_set_focus_on_map(GTK_WINDOW(m_widget), false);
+#endif // GTK+ 2.6+
+
+ Show(true);
+ }
+}
+
void wxTopLevelWindowGTK::Raise()
{
gtk_window_present( GTK_WINDOW( m_widget ) );
size -= m_decorSize;
if (size.x < 0) size.x = 0;
if (size.y < 0) size.y = 0;
+#if wxUSE_LIBHILDON2
+ if (width) {
+ if (size.x == 720)
+ *width = 696;
+ else
+ *width = size.x;
+ }
+ if (height) {
+ if (size.y == 420)
+ *height = 396;
+ else if (size.y == 270)
+ *height = 246;
+ else
+ *height = size.y;
+ }
+#else // wxUSE_LIBHILDON2
if (width) *width = size.x;
if (height) *height = size.y;
+#endif // wxUSE_LIBHILDON2 /!wxUSE_LIBHILDON2
}
void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int sizeFlags )
void wxTopLevelWindowGTK::DoSetClientSize(int width, int height)
{
+ base_type::DoSetClientSize(width, height);
+
// Since client size is being explicitly set, don't change it later
+ // Has to be done after calling base because it calls SetSize,
+ // which sets this true
m_deferShowAllowed = false;
-
- wxTopLevelWindowBase::DoSetClientSize(width, height);
}
void wxTopLevelWindowGTK::DoGetClientSize( int *width, int *height ) const
int maxW, int maxH,
int incW, int incH )
{
- wxTopLevelWindowBase::DoSetSizeHints( minW, minH, maxW, maxH, incW, incH );
+ base_type::DoSetSizeHints(minW, minH, maxW, maxH, incW, incH);
const wxSize minSize = GetMinSize();
const wxSize maxSize = GetMaxSize();
{
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
- wxTopLevelWindowBase::SetIcons( icons );
+ base_type::SetIcons(icons);
// Setting icons before window is realized can cause a GTK assertion if
// another TLW is realized before this one, and it has this one as it's
bool wxTopLevelWindowGTK::CanSetTransparent()
{
// allow to override automatic detection as it's far from perfect
- static const wxChar *SYSOPT_TRANSPARENT = wxT("gtk.tlw.can-set-transparent");
+ const wxString SYSOPT_TRANSPARENT = "gtk.tlw.can-set-transparent";
if ( wxSystemOptions::HasOption(SYSOPT_TRANSPARENT) )
{
return wxSystemOptions::GetOptionInt(SYSOPT_TRANSPARENT) != 0;