X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ba71852396a76dcb0e9432edd7c57e09cdd94e65..94f6d685cb30a8e62d21254bbf19902b48eb2443:/src/gtk1/minifram.cpp diff --git a/src/gtk1/minifram.cpp b/src/gtk1/minifram.cpp index c23782237b..a7803836b3 100644 --- a/src/gtk1/minifram.cpp +++ b/src/gtk1/minifram.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: minifram.cpp +// Name: src/gtk1/minifram.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ @@ -7,19 +7,20 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "minifram.h" -#endif - -#include "wx/minifram.h" +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" #if wxUSE_MINIFRAME -#include "wx/dcscreen.h" +#include "wx/minifram.h" + +#ifndef WX_PRECOMP + #include "wx/dcscreen.h" +#endif #include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" -#include "wx/gtk/private.h" +#include "wx/gtk1/win_gtk.h" +#include "wx/gtk1/private.h" #include #include @@ -66,6 +67,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(); @@ -82,7 +84,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))) @@ -90,7 +92,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, @@ -106,12 +108,13 @@ 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(); @@ -127,7 +130,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))) @@ -135,7 +138,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, @@ -151,12 +154,13 @@ 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(); @@ -173,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, @@ -196,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(); @@ -215,7 +221,7 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto if (!win->m_isDragging) return TRUE; - win->m_isDragging = FALSE; + win->m_isDragging = false; int x = (int)gdk_event->x; int y = (int)gdk_event->y; @@ -233,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(); @@ -266,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 @@ -321,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; @@ -333,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))) { @@ -368,10 +379,8 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title gtk_signal_connect( GTK_OBJECT(m_mainWidget), "expose_event", GTK_SIGNAL_FUNC(gtk_window_own_expose_callback), (gpointer)this ); -#ifndef __WXGTK20__ gtk_signal_connect( GTK_OBJECT(m_mainWidget), "draw", GTK_SIGNAL_FUNC(gtk_window_own_draw_callback), (gpointer)this ); -#endif /* these are required for dragging the mini frame around */ gtk_signal_connect( GTK_OBJECT(m_mainWidget), "button_press_event", @@ -383,7 +392,14 @@ 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; } -#endif +void wxMiniFrame::SetTitle( const wxString &title ) +{ + wxFrame::SetTitle( title ); + + gtk_widget_draw( m_mainWidget, (GdkRectangle*) NULL ); +} + +#endif // wxUSE_MINIFRAME