X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a81258bee4e20d3fa9b3d2f6bf3bcd1200d1e5e0..e1dc4cc6872ce44134a881feeb0ede2b8b91af55:/src/gtk1/window.cpp diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index 59d8a97bbd..995e34d9fb 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -2,7 +2,7 @@ // Name: window.cpp // Purpose: // Author: Robert Roebling -// Id: $id$ +// Id: $Id$ // Copyright: (c) 1998 Robert Roebling, Julian Smart // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -841,7 +841,7 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *widget, GdkEventBut // "drop_data_available_event" //----------------------------------------------------------------------------- -static void gtk_window_drop_callback( GtkWidget *widget, GdkEvent *event, wxWindow *win ) +static void gtk_window_drop_callback( GtkWidget *widget, GdkEventDropDataAvailable *event, wxWindow *win ) { if (!win->HasVMT()) return; @@ -850,6 +850,7 @@ static void gtk_window_drop_callback( GtkWidget *widget, GdkEvent *event, wxWind int x = 0; int y = 0; gdk_window_get_pointer( widget->window, &x, &y, (GdkModifierType *) NULL ); + win->GetDropTarget()->m_size = event->data_numbytes; win->GetDropTarget()->Drop( event, x, y ); } @@ -1101,7 +1102,7 @@ void wxWindow::PreCreation( wxWindow *parent, wxWindowID id, m_cursor = new wxCursor( wxCURSOR_ARROW ); m_font = *wxSWISS_FONT; // m_backgroundColour = wxWHITE; - m_foregroundColour = wxBLACK; +// m_foregroundColour = wxBLACK; m_windowStyle = style; m_windowName = name; m_constraints = (wxLayoutConstraints *) NULL; @@ -1964,19 +1965,8 @@ void wxWindow::SetBackgroundColour( const wxColour &colour ) gdk_window_set_background( window, m_backgroundColour.GetColor() ); gdk_window_clear( window ); } - else - { - GtkStyle *style = GetWidgetStyle(); - m_backgroundColour.CalcPixel( gdk_window_get_colormap( m_widget->window ) ); - style->bg[GTK_STATE_NORMAL] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_NORMAL] = *m_backgroundColour.GetColor(); - style->bg[GTK_STATE_PRELIGHT] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_PRELIGHT] = *m_backgroundColour.GetColor(); - style->bg[GTK_STATE_ACTIVE] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_ACTIVE] = *m_backgroundColour.GetColor(); - style->bg[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor(); - } + + ApplyWidgetStyle(); } wxColour wxWindow::GetForegroundColour() const @@ -1991,23 +1981,51 @@ void wxWindow::SetForegroundColour( const wxColour &colour ) m_foregroundColour = colour; if (!m_foregroundColour.Ok()) return; - if (!m_wxwindow) + ApplyWidgetStyle(); +} + +GtkStyle *wxWindow::GetWidgetStyle() +{ + if (m_widgetStyle) gtk_style_unref( m_widgetStyle ); + + m_widgetStyle = + gtk_style_copy( + gtk_widget_get_style( m_widget ) ); + + return m_widgetStyle; +} + +void wxWindow::SetWidgetStyle() +{ + GtkStyle *style = GetWidgetStyle(); + + gdk_font_unref( style->font ); + style->font = gdk_font_ref( m_font.GetInternalFont( 1.0 ) ); + + if (m_foregroundColour.Ok()) { - GtkStyle *style = GetWidgetStyle(); m_foregroundColour.CalcPixel( gdk_window_get_colormap( m_widget->window ) ); style->fg[GTK_STATE_NORMAL] = *m_foregroundColour.GetColor(); style->fg[GTK_STATE_PRELIGHT] = *m_foregroundColour.GetColor(); style->fg[GTK_STATE_ACTIVE] = *m_foregroundColour.GetColor(); } + + if (m_backgroundColour.Ok()) + { + m_backgroundColour.CalcPixel( gdk_window_get_colormap( m_widget->window ) ); + style->bg[GTK_STATE_NORMAL] = *m_backgroundColour.GetColor(); + style->base[GTK_STATE_NORMAL] = *m_backgroundColour.GetColor(); + style->bg[GTK_STATE_PRELIGHT] = *m_backgroundColour.GetColor(); + style->base[GTK_STATE_PRELIGHT] = *m_backgroundColour.GetColor(); + style->bg[GTK_STATE_ACTIVE] = *m_backgroundColour.GetColor(); + style->base[GTK_STATE_ACTIVE] = *m_backgroundColour.GetColor(); + style->bg[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor(); + style->base[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor(); + } } -GtkStyle *wxWindow::GetWidgetStyle() +void wxWindow::ApplyWidgetStyle() { - if (!m_widgetStyle) - m_widgetStyle = - gtk_style_copy( - gtk_widget_get_style( m_widget ) ); - return m_widgetStyle; } bool wxWindow::Validate() @@ -2071,7 +2089,7 @@ void wxWindow::OnInitDialog( wxInitDialogEvent &WXUNUSED(event) ) void wxWindow::InitDialog() { - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); + wxCHECK_RET( m_widget != NULL, "invalid window" ); wxInitDialogEvent event(GetId()); event.SetEventObject( this ); @@ -2093,8 +2111,10 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) ) { - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); + wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" ); + wxCHECK_MSG( menu != NULL, FALSE, "invalid popup-menu" ); + SetInvokingWindow( menu, this ); gtk_menu_popup( GTK_MENU(menu->m_menu), @@ -2110,7 +2130,7 @@ bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) ) void wxWindow::SetDropTarget( wxDropTarget *dropTarget ) { - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); + wxCHECK_RET( m_widget != NULL, "invalid window" ); GtkWidget *dnd_widget = GetConnectWidget(); @@ -2163,16 +2183,14 @@ bool wxWindow::IsOwnGtkWindow( GdkWindow *window ) void wxWindow::SetFont( const wxFont &font ) { - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); + wxCHECK_RET( m_widget != NULL, "invalid window" ); if (((wxFont*)&font)->Ok()) m_font = font; else m_font = *wxSWISS_FONT; - - GtkStyle *style = GetWidgetStyle(); - gdk_font_unref( style->font ); - style->font = gdk_font_ref( m_font.GetInternalFont( 1.0 ) ); + + ApplyWidgetStyle(); } wxFont *wxWindow::GetFont() @@ -2192,9 +2210,9 @@ long wxWindow::GetWindowStyleFlag() const void wxWindow::CaptureMouse() { - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); + wxCHECK_RET( m_widget != NULL, "invalid window" ); - wxASSERT_MSG( (g_capturing == FALSE), "CaptureMouse called twice" ); + wxCHECK_RET( g_capturing == FALSE, "CaptureMouse called twice" ); GtkWidget *connect_widget = GetConnectWidget(); gtk_grab_add( connect_widget ); @@ -2209,9 +2227,9 @@ void wxWindow::CaptureMouse() void wxWindow::ReleaseMouse() { - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); + wxCHECK_RET( m_widget != NULL, "invalid window" ); - wxASSERT_MSG( (g_capturing == TRUE), "ReleaseMouse called twice" ); + wxCHECK_RET( g_capturing == TRUE, "ReleaseMouse called twice" ); GtkWidget *connect_widget = GetConnectWidget(); gtk_grab_remove( connect_widget );