X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..abb4f9c93715f5b00c526203af96ed2938a1a2c3:/src/gtk/minifram.cpp diff --git a/src/gtk/minifram.cpp b/src/gtk/minifram.cpp index 5682f4d9f0..3e4e04231f 100644 --- a/src/gtk/minifram.cpp +++ b/src/gtk/minifram.cpp @@ -1,16 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: minifram.cpp +// Name: src/gtk/minifram.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ // Copyright: (c) 1998 Robert Roebling -// Licence: wxWidgets licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "minifram.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -69,6 +65,7 @@ static void DrawFrame( GtkWidget *widget, int x, int y, int w, int h ) // "expose_event" of m_mainWidget //----------------------------------------------------------------------------- +extern "C" { static void gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_event, wxFrame *win ) { if (g_isIdle) wxapp_install_idle_handler(); @@ -85,7 +82,7 @@ static void gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *g 0, 0, win->m_width, win->m_height ); - if (!win->GetTitle().IsEmpty() && + if (!win->GetTitle().empty() && ((win->GetWindowStyle() & wxCAPTION) || (win->GetWindowStyle() & wxTINY_CAPTION_HORIZ) || (win->GetWindowStyle() & wxTINY_CAPTION_VERT))) @@ -93,7 +90,7 @@ static void gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *g wxClientDC dc(win); dc.SetFont( *wxSMALL_FONT ); int height = dc.GetCharHeight(); - + GdkGC *gc = gdk_gc_new( pizza->bin_window ); gdk_gc_set_foreground( gc, &widget->style->bg[GTK_STATE_SELECTED] ); gdk_draw_rectangle( pizza->bin_window, gc, TRUE, @@ -109,12 +106,14 @@ static void gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *g dc.DrawText( win->GetTitle(), 6, 3 ); } } +} //----------------------------------------------------------------------------- // "draw" of m_mainWidget //----------------------------------------------------------------------------- #ifndef __WXGTK20__ +extern "C" { static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNUSED(rect), wxFrame *win ) { if (g_isIdle) wxapp_install_idle_handler(); @@ -130,7 +129,7 @@ static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNU 0, 0, win->m_width, win->m_height ); - if (!win->m_title.IsEmpty() && + if (!win->GetTitle().empty() && ((win->GetWindowStyle() & wxCAPTION) || (win->GetWindowStyle() & wxTINY_CAPTION_HORIZ) || (win->GetWindowStyle() & wxTINY_CAPTION_VERT))) @@ -138,7 +137,7 @@ static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNU wxClientDC dc(win); dc.SetFont( *wxSMALL_FONT ); int height = dc.GetCharHeight(); - + GdkGC *gc = gdk_gc_new( pizza->bin_window ); gdk_gc_set_foreground( gc, &widget->style->bg[GTK_STATE_SELECTED] ); gdk_draw_rectangle( pizza->bin_window, gc, TRUE, @@ -154,12 +153,14 @@ static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNU dc.DrawText( win->GetTitle(), 6, 3 ); } } +} #endif //----------------------------------------------------------------------------- // "button_press_event" of m_mainWidget //----------------------------------------------------------------------------- +extern "C" { static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxMiniFrame *win ) { if (g_isIdle) wxapp_install_idle_handler(); @@ -176,9 +177,9 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton wxClientDC dc(win); dc.SetFont( *wxSMALL_FONT ); int height = dc.GetCharHeight() + 1; - + if (gdk_event->y > height) return TRUE; - + gdk_window_raise( win->m_widget->window ); gdk_pointer_grab( widget->window, FALSE, @@ -199,15 +200,17 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton win->m_oldX = 0; win->m_oldY = 0; - win->m_isDragging = TRUE; + win->m_isDragging = true; return TRUE; } +} //----------------------------------------------------------------------------- // "button_release_event" of m_mainWidget //----------------------------------------------------------------------------- +extern "C" { static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxMiniFrame *win ) { if (g_isIdle) wxapp_install_idle_handler(); @@ -236,11 +239,13 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto return TRUE; } +} //----------------------------------------------------------------------------- // "motion_notify_event" of m_mainWidget //----------------------------------------------------------------------------- +extern "C" { static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion *gdk_event, wxMiniFrame *win ) { if (g_isIdle) wxapp_install_idle_handler(); @@ -269,17 +274,20 @@ static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion return TRUE; } +} //----------------------------------------------------------------------------- // "clicked" of X system button //----------------------------------------------------------------------------- +extern "C" { static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxMiniFrame *mf ) { if (g_isIdle) wxapp_install_idle_handler(); mf->Close(); } +} //----------------------------------------------------------------------------- // wxMiniFrame @@ -324,7 +332,7 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title m_miniTitle = 13; m_miniEdge = 3; - m_isDragging = FALSE; + m_isDragging = false; m_oldX = -1; m_oldY = -1; m_diffX = 0; @@ -336,7 +344,7 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title { gtk_window_set_transient_for( GTK_WINDOW(m_widget), GTK_WINDOW(m_parent->m_widget) ); } - + if ((style & wxSYSTEM_MENU) && ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT))) { @@ -386,7 +394,18 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title gtk_signal_connect( GTK_OBJECT(m_mainWidget), "motion_notify_event", GTK_SIGNAL_FUNC(gtk_window_motion_notify_callback), (gpointer)this ); - return TRUE; + return true; +} + +void wxMiniFrame::SetTitle( const wxString &title ) +{ + wxFrame::SetTitle( title ); + +#ifdef __WXGTK20__ + gdk_window_invalidate_rect( GTK_PIZZA(m_mainWidget)->bin_window, NULL, true ); +#else + gtk_widget_draw( m_mainWidget, (GdkRectangle*) NULL ); +#endif } #endif