#include "wx/toplevel.h"
#ifndef WX_PRECOMP
+ #include "wx/frame.h"
+ #include "wx/icon.h"
#include "wx/log.h"
#include "wx/app.h"
- #include "wx/dcclient.h"
- #include "wx/dialog.h"
- #include "wx/timer.h"
- #include "wx/settings.h"
- #include "wx/control.h"
#endif
#include "wx/gtk/private.h"
#include "wx/evtloop.h"
-#include <glib.h>
-#include <gdk/gdk.h>
#include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
#include <gdk/gdkx.h>
#include "wx/gtk/win_gtk.h"
GdkEvent *WXUNUSED(event),
wxTopLevelWindowGTK *win )
{
- if (g_isIdle)
- wxapp_install_idle_handler();
+ // don't need to install idle handler, its done from "event" signal
switch ( g_sendActivateEvent )
{
GdkEventFocus *WXUNUSED(gdk_event),
wxTopLevelWindowGTK *win )
{
- if (g_isIdle)
- wxapp_install_idle_handler();
+ // don't need to install idle handler, its done from "event" signal
// if the focus goes out of our app alltogether, OnIdle() will send
// wxActivateEvent, otherwise gtk_window_focus_in_callback() will reset
wxapp_install_idle_handler();
// This disables GTK's tab traversal
- g_signal_stop_emission_by_name (widget, "focus");
return TRUE;
}
}
if ((win->m_width != alloc->width) || (win->m_height != alloc->height))
{
/*
- wxPrintf( "OnSize from " );
+ wxPrintf( wxT("gtk_frame_size_callback from ") );
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
wxPrintf( win->GetClassInfo()->GetClassName() );
- wxPrintf( " %d %d %d %d\n", (int)alloc->x,
+ wxPrintf( wxT(" %d %d %d %d\n"), (int)alloc->x,
(int)alloc->y,
(int)alloc->width,
(int)alloc->height );
GdkEvent *WXUNUSED(event),
wxTopLevelWindowGTK *win )
{
- if (g_isIdle)
- wxapp_install_idle_handler();
+ // don't need to install idle handler, its done from "event" signal
if (win->IsEnabled() &&
(g_openDialogs == 0 || (win->GetExtraStyle() & wxTOPLEVEL_EX_DIALOG) ||
GdkEventConfigure *WXUNUSED(event),
wxTopLevelWindowGTK *win )
{
- if (g_isIdle)
- wxapp_install_idle_handler();
+ // don't need to install idle handler, its done from "event" signal
if (!win->m_hasVMT || !win->IsShown())
return FALSE;
child->m_width,
child->m_height );
}
-
- // resize on OnInternalIdle
- parent->GtkUpdateSize();
}
// ----------------------------------------------------------------------------
G_CALLBACK (gtk_frame_focus_out_callback), this);
// decorations
- if ((m_miniEdge > 0) || (style & wxSIMPLE_BORDER) || (style & wxNO_BORDER))
+ if ((style & wxSIMPLE_BORDER) || (style & wxNO_BORDER))
{
m_gdkDecor = 0;
m_gdkFunc = 0;
}
else
+ if (m_miniEdge > 0)
+ {
+ m_gdkDecor = 0;
+ m_gdkFunc = 0;
+
+ if ((style & wxRESIZE_BORDER) != 0)
+ m_gdkFunc |= GDK_FUNC_RESIZE;
+ }
+ else
{
m_gdkDecor = (long) GDK_DECOR_BORDER;
m_gdkFunc = (long) GDK_FUNC_MOVE;
{
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
+ if (show == IsShown())
+ return true;
+
if (show && !m_sizeSet)
{
/* by calling GtkOnSize here, we don't have to call
GtkOnSize( m_x, m_y, m_width, m_height );
}
- if (show)
- gtk_widget_set_uposition( m_widget, m_x, m_y );
+ // This seems no longer to be needed and the call
+ // itself is deprecated.
+ //
+ //if (show)
+ // gtk_widget_set_uposition( m_widget, m_x, m_y );
return wxWindow::Show( show );
}
bool wxTopLevelWindowGTK::SetTransparent(wxByte alpha)
{
- if (!m_widget || !m_widget->window || !CanSetTransparent())
+ if (!m_widget || !m_widget->window)
return false;
Display* dpy = GDK_WINDOW_XDISPLAY (m_widget->window);
bool wxTopLevelWindowGTK::CanSetTransparent()
{
+#if GTK_CHECK_VERSION(2,10,0)
+ if (!gtk_check_version(2,10,0))
+ {
+ if (gtk_widget_is_composited (m_widget))
+ return true;
+ }
+ else
+#endif // In case of lower versions than gtk+-2.10.0 we could look for _NET_WM_CM_Sn ourselves
+ {
+ return false;
+ }
+
+#if 0 // Don't be optimistic here for the sake of wxAUI
int opcode, event, error;
// Check for the existence of a RGBA visual instead?
return XQueryExtension(gdk_x11_get_default_xdisplay (),
"Composite", &opcode, &event, &error);
+#endif
}