Added scrollbar size to settings
Added tetsing for cursor keys to wxTextValidator Correcte misspelled colour in wxColourDialog Made print dialogs look nicer Made wxStatixBox transparent (in the middle) for mouse actions (very useful for DialogEd) Corrected colour setting in DialogEd not to set any colour when using standard colour Corretced unresponding scrollbar in DialogEd git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1179 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -7,7 +7,6 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#ifndef __GTKSETTINGSH__
|
||||
#define __GTKSETTINGSH__
|
||||
|
||||
@@ -20,10 +19,10 @@
|
||||
#include "wx/pen.h"
|
||||
#include "wx/font.h"
|
||||
|
||||
class WXDLLEXPORT wxSystemSettings: public wxObject
|
||||
class wxSystemSettings: public wxObject
|
||||
{
|
||||
public:
|
||||
inline wxSystemSettings(void) {}
|
||||
inline wxSystemSettings() {}
|
||||
|
||||
inline static void Init() {}
|
||||
static void Done();
|
||||
|
@@ -330,6 +330,7 @@ public:
|
||||
bool m_resizing;
|
||||
GdkGC *m_scrollGC;
|
||||
GtkStyle *m_widgetStyle;
|
||||
bool m_isStaticBox;
|
||||
|
||||
wxInsertChildFunction m_insertCallback;
|
||||
|
||||
|
@@ -7,7 +7,6 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#ifndef __GTKSETTINGSH__
|
||||
#define __GTKSETTINGSH__
|
||||
|
||||
@@ -20,10 +19,10 @@
|
||||
#include "wx/pen.h"
|
||||
#include "wx/font.h"
|
||||
|
||||
class WXDLLEXPORT wxSystemSettings: public wxObject
|
||||
class wxSystemSettings: public wxObject
|
||||
{
|
||||
public:
|
||||
inline wxSystemSettings(void) {}
|
||||
inline wxSystemSettings() {}
|
||||
|
||||
inline static void Init() {}
|
||||
static void Done();
|
||||
|
@@ -330,6 +330,7 @@ public:
|
||||
bool m_resizing;
|
||||
GdkGC *m_scrollGC;
|
||||
GtkStyle *m_widgetStyle;
|
||||
bool m_isStaticBox;
|
||||
|
||||
wxInsertChildFunction m_insertCallback;
|
||||
|
||||
|
@@ -270,7 +270,10 @@ void wxTextValidator::OnChar(wxKeyEvent& event)
|
||||
wxTextCtrl *textCtrl = (wxTextCtrl *)m_validatorWindow;
|
||||
|
||||
int keyCode = event.KeyCode();
|
||||
if ( keyCode == WXK_DELETE || keyCode == WXK_RETURN || keyCode == WXK_BACK)
|
||||
if (keyCode == WXK_DELETE || keyCode == WXK_RETURN || keyCode == WXK_BACK ||
|
||||
keyCode == WXK_HOME || keyCode == WXK_LEFT || keyCode == WXK_UP ||
|
||||
keyCode == WXK_RIGHT || keyCode == WXK_DOWN || keyCode == WXK_PRIOR ||
|
||||
keyCode == WXK_NEXT || keyCode == WXK_END || keyCode == WXK_HOME)
|
||||
{
|
||||
textCtrl->wxTextCtrl::OnChar(event);
|
||||
return ;
|
||||
|
@@ -85,7 +85,7 @@ static wxString wxColourDialogNames[NUM_COLS]={"ORANGE",
|
||||
"FIREBRICK",
|
||||
"CORAL",
|
||||
"FOREST GREEN",
|
||||
"AQUARAMINE",
|
||||
"AQUAMARINE",
|
||||
"BLUE",
|
||||
"NAVY",
|
||||
"THISTLE",
|
||||
|
@@ -75,21 +75,11 @@ wxGenericPrintDialog::wxGenericPrintDialog(wxWindow *parent, wxPrintData* data):
|
||||
if ( data )
|
||||
printData = *data;
|
||||
|
||||
int buttonWidth = 65;
|
||||
int buttonHeight = 25;
|
||||
int spacing = 5;
|
||||
int yPos = 5;
|
||||
int xPos = 5;
|
||||
(void)new wxStaticBox( this, -1, _( "Printer options" ), wxPoint( 5, 5), wxSize( 300, 60 ) );
|
||||
|
||||
wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(5, yPos), wxSize(buttonWidth, buttonHeight));
|
||||
(void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(buttonWidth + 5 + spacing, yPos), wxSize(buttonWidth, buttonHeight));
|
||||
printToFileCheckBox = new wxCheckBox(this, wxPRINTID_PRINTTOFILE, _("Print to File"), wxPoint(20, 25) );
|
||||
|
||||
setupButton = new wxButton(this, wxPRINTID_SETUP, _("Setup..."), wxPoint(buttonWidth*2 + 5 + 2*spacing, yPos), wxSize(buttonWidth, buttonHeight));
|
||||
|
||||
okButton->SetDefault();
|
||||
okButton->SetFocus();
|
||||
|
||||
yPos += 35;
|
||||
setupButton = new wxButton(this, wxPRINTID_SETUP, _("Setup..."), wxPoint(160, 25), wxSize(100, -1));
|
||||
|
||||
wxString *choices = new wxString[2];
|
||||
choices[0] = _("All");
|
||||
@@ -100,41 +90,30 @@ wxGenericPrintDialog::wxGenericPrintDialog(wxWindow *parent, wxPrintData* data):
|
||||
if(printData.GetFromPage() != 0)
|
||||
{
|
||||
rangeRadioBox = new wxRadioBox(this, wxPRINTID_RANGE, _("Print Range"),
|
||||
wxPoint(5, yPos), wxSize(-1, -1), 2, choices, 2);
|
||||
wxPoint(5, 80), wxSize(-1, -1), 2, choices, 1, wxRA_VERTICAL);
|
||||
rangeRadioBox->SetSelection(1);
|
||||
}
|
||||
|
||||
yPos += 60;
|
||||
xPos = 5;
|
||||
int staticWidth = 45;
|
||||
int textWidth = 40;
|
||||
spacing = 10;
|
||||
|
||||
if(printData.GetFromPage() != 0)
|
||||
{
|
||||
(void) new wxStaticText(this, wxPRINTID_STATIC, _("From:"), wxPoint(xPos, yPos));
|
||||
xPos += staticWidth;
|
||||
(void) new wxStaticText(this, wxPRINTID_STATIC, _("From:"), wxPoint(5, 135));
|
||||
|
||||
fromText = new wxTextCtrl(this, wxPRINTID_FROM, "", wxPoint(xPos, yPos), wxSize(textWidth, -1));
|
||||
xPos += spacing + textWidth;
|
||||
fromText = new wxTextCtrl(this, wxPRINTID_FROM, "", wxPoint(45, 130), wxSize(40, -1));
|
||||
|
||||
(void) new wxStaticText(this, wxPRINTID_STATIC, _("To:"), wxPoint(xPos, yPos));
|
||||
xPos += staticWidth;
|
||||
(void) new wxStaticText(this, wxPRINTID_STATIC, _("To:"), wxPoint(100, 135));
|
||||
|
||||
toText = new wxTextCtrl(this, wxPRINTID_TO, "", wxPoint(xPos, yPos), wxSize(textWidth, -1));
|
||||
xPos += spacing + textWidth;
|
||||
toText = new wxTextCtrl(this, wxPRINTID_TO, "", wxPoint(133, 130), wxSize(40, -1));
|
||||
}
|
||||
|
||||
(void) new wxStaticText(this, wxPRINTID_STATIC, _("Copies:"), wxPoint(xPos, yPos));
|
||||
xPos += spacing + staticWidth;
|
||||
(void) new wxStaticText(this, wxPRINTID_STATIC, _("Copies:"), wxPoint(200, 135));
|
||||
|
||||
noCopiesText = new wxTextCtrl(this, wxPRINTID_COPIES, "", wxPoint(xPos, yPos), wxSize(textWidth, -1));
|
||||
noCopiesText = new wxTextCtrl(this, wxPRINTID_COPIES, "", wxPoint(252, 130), wxSize(40, -1));
|
||||
|
||||
yPos += 30;
|
||||
xPos = 5;
|
||||
|
||||
printToFileCheckBox = new wxCheckBox(this, wxPRINTID_PRINTTOFILE, _("Print to File"), wxPoint(xPos, yPos));
|
||||
wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(40, 180), wxSize(100, -1));
|
||||
(void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(180, 180), wxSize(100, -1));
|
||||
|
||||
okButton->SetDefault();
|
||||
okButton->SetFocus();
|
||||
Fit();
|
||||
Centre(wxBOTH);
|
||||
|
||||
@@ -312,7 +291,7 @@ wxGenericPrintSetupDialog::wxGenericPrintSetupDialog(wxWindow *parent, wxPrintSe
|
||||
choices[1] = _("Landscape");
|
||||
|
||||
orientationRadioBox = new wxRadioBox(this, wxPRINTID_ORIENTATION, _("Orientation"),
|
||||
wxPoint(10, 80), wxSize(-1, -1), 2, choices, 2);
|
||||
wxPoint(10, 80), wxSize(-1, -1), 2, choices, 1, wxRA_VERTICAL );
|
||||
orientationRadioBox->SetSelection(0);
|
||||
|
||||
(void) new wxStaticBox(this, wxPRINTID_STATIC, _("Options"), wxPoint(10, 130), wxSize(200,50) );
|
||||
@@ -330,8 +309,8 @@ wxGenericPrintSetupDialog::wxGenericPrintSetupDialog(wxWindow *parent, wxPrintSe
|
||||
|
||||
printerOptionsText = new wxTextCtrl(this, wxPRINTID_OPTIONS, "", wxPoint(260, 135), wxSize(150, -1));
|
||||
|
||||
wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(240, 200), wxSize(100, -1));
|
||||
(void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(360, 200), wxSize(100, -1));
|
||||
wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(80, 200), wxSize(100, -1));
|
||||
(void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(270, 200), wxSize(100, -1));
|
||||
|
||||
okButton->SetDefault();
|
||||
okButton->SetFocus();
|
||||
|
@@ -91,6 +91,8 @@ void wxColour::InitFromName( const wxString &colourName )
|
||||
if (!gdk_color_parse( colourName, &M_COLDATA->m_color ))
|
||||
{
|
||||
wxFAIL_MSG( "wxColour: couldn't find colour" );
|
||||
printf( "Colourname %s.\n", WXSTRINGCAST colourName );
|
||||
|
||||
delete m_refData;
|
||||
m_refData = (wxObjectRefData *) NULL;
|
||||
}
|
||||
@@ -135,33 +137,21 @@ void wxColour::Set( unsigned char red, unsigned char green, unsigned char blue )
|
||||
|
||||
unsigned char wxColour::Red() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid colour" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid colour" );
|
||||
|
||||
return (unsigned char)(M_COLDATA->m_color.red >> SHIFT);
|
||||
}
|
||||
|
||||
unsigned char wxColour::Green() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid colour" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid colour" );
|
||||
|
||||
return (unsigned char)(M_COLDATA->m_color.green >> SHIFT);
|
||||
}
|
||||
|
||||
unsigned char wxColour::Blue() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid colour" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid colour" );
|
||||
|
||||
return (unsigned char)(M_COLDATA->m_color.blue >> SHIFT);
|
||||
}
|
||||
@@ -208,14 +198,14 @@ void wxColour::CalcPixel( GdkColormap *cmap )
|
||||
|
||||
int wxColour::GetPixel() const
|
||||
{
|
||||
if (!Ok()) return 0;
|
||||
wxCHECK_MSG( Ok(), 0, "invalid colour" );
|
||||
|
||||
return M_COLDATA->m_color.pixel;
|
||||
}
|
||||
|
||||
GdkColor *wxColour::GetColor() const
|
||||
{
|
||||
if (!Ok()) return (GdkColor *) NULL;
|
||||
wxCHECK_MSG( Ok(), (GdkColor *) NULL, "invalid colour" );
|
||||
|
||||
return &M_COLDATA->m_color;
|
||||
}
|
||||
|
@@ -179,22 +179,14 @@ bool wxFont::Ok() const
|
||||
|
||||
int wxFont::GetPointSize() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_pointSize;
|
||||
}
|
||||
|
||||
wxString wxFont::GetFaceString() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return "";
|
||||
}
|
||||
wxCHECK_MSG( Ok(), "", "invalid font" );
|
||||
|
||||
wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
|
||||
return s;
|
||||
@@ -202,11 +194,7 @@ wxString wxFont::GetFaceString() const
|
||||
|
||||
wxString wxFont::GetFaceName() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return "";
|
||||
}
|
||||
wxCHECK_MSG( Ok(), "", "invalid font" );
|
||||
|
||||
wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
|
||||
return s;
|
||||
@@ -214,22 +202,14 @@ wxString wxFont::GetFaceName() const
|
||||
|
||||
int wxFont::GetFamily() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_family;
|
||||
}
|
||||
|
||||
wxString wxFont::GetFamilyString() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return "wxDEFAULT";
|
||||
}
|
||||
wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" );
|
||||
|
||||
switch (M_FONTDATA->m_family)
|
||||
{
|
||||
@@ -247,33 +227,21 @@ wxString wxFont::GetFamilyString() const
|
||||
|
||||
int wxFont::GetFontId() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_fontId; // stub
|
||||
}
|
||||
|
||||
int wxFont::GetStyle() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_style;
|
||||
}
|
||||
|
||||
wxString wxFont::GetStyleString() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return "wxDEFAULT";
|
||||
}
|
||||
wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" );
|
||||
|
||||
switch (M_FONTDATA->m_style)
|
||||
{
|
||||
@@ -288,22 +256,14 @@ wxString wxFont::GetStyleString() const
|
||||
|
||||
int wxFont::GetWeight() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_weight;
|
||||
}
|
||||
|
||||
wxString wxFont::GetWeightString() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return "wxDEFAULT";
|
||||
}
|
||||
wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" );
|
||||
|
||||
switch (M_FONTDATA->m_weight)
|
||||
{
|
||||
@@ -318,11 +278,7 @@ wxString wxFont::GetWeightString() const
|
||||
|
||||
bool wxFont::GetUnderlined() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return FALSE;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), FALSE, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_underlined;
|
||||
}
|
||||
|
@@ -80,7 +80,7 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
||||
wxScrollBar *win )
|
||||
{
|
||||
win->m_isScrolling = TRUE;
|
||||
g_blockEventsOnScroll = TRUE;
|
||||
// g_blockEventsOnScroll = TRUE; doesn't work in DialogEd
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -94,7 +94,7 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
||||
wxScrollBar *win )
|
||||
{
|
||||
win->m_isScrolling = FALSE;
|
||||
g_blockEventsOnScroll = FALSE;
|
||||
// g_blockEventsOnScroll = FALSE;
|
||||
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
|
||||
|
||||
|
@@ -13,6 +13,7 @@
|
||||
#endif
|
||||
|
||||
#include "wx/settings.h"
|
||||
#include "wx/debug.h"
|
||||
|
||||
/*
|
||||
#define wxSYS_COLOUR_SCROLLBAR 0
|
||||
@@ -59,7 +60,8 @@ wxColour *g_systemHighlightColour = (wxColour *) NULL;
|
||||
|
||||
wxFont *g_systemFont = (wxFont *) NULL;
|
||||
|
||||
void wxSystemSettings::Done() {
|
||||
void wxSystemSettings::Done()
|
||||
{
|
||||
wxDELETE(g_systemBtnFaceColour);
|
||||
wxDELETE(g_systemBtnShadowColour);
|
||||
wxDELETE(g_systemBtnHighlightColour);
|
||||
@@ -178,10 +180,13 @@ int wxSystemSettings::GetSystemMetric( int index )
|
||||
{
|
||||
switch (index)
|
||||
{
|
||||
case wxSYS_SCREEN_X:
|
||||
return gdk_screen_width();
|
||||
case wxSYS_SCREEN_Y:
|
||||
return gdk_screen_height();
|
||||
case wxSYS_SCREEN_X: return gdk_screen_width();
|
||||
case wxSYS_SCREEN_Y: return gdk_screen_height();
|
||||
case wxSYS_HSCROLL_Y: return 15;
|
||||
case wxSYS_VSCROLL_X: return 15;
|
||||
}
|
||||
|
||||
wxCHECK_MSG( index, 0, "wxSystemSettings::GetSystemMetric not fully implemented" );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -38,6 +38,8 @@ bool wxStaticBox::Create( wxWindow *parent, wxWindowID id, const wxString &label
|
||||
|
||||
PreCreation( parent, id, pos, size, style, name );
|
||||
|
||||
m_isStaticBox = TRUE;
|
||||
|
||||
m_widget = gtk_frame_new(m_label);
|
||||
|
||||
m_parent->AddChild( this );
|
||||
|
@@ -400,6 +400,35 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
|
||||
while (node)
|
||||
{
|
||||
wxWindow *child = (wxWindow*)node->Data();
|
||||
|
||||
if (child->m_isStaticBox)
|
||||
{
|
||||
// wxStaticBox is transparent in the box itself
|
||||
int x = event.m_x;
|
||||
int y = event.m_y;
|
||||
int xx1 = child->m_x;
|
||||
int yy1 = child->m_y;
|
||||
int xx2 = child->m_x + child->m_width;
|
||||
int yy2 = child->m_x + child->m_height;
|
||||
|
||||
// left
|
||||
if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) ||
|
||||
// right
|
||||
((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) ||
|
||||
// top
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) ||
|
||||
// bottom
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2)))
|
||||
{
|
||||
win = child;
|
||||
event.m_x -= child->m_x;
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
|
||||
(child->m_x <= event.m_x) &&
|
||||
(child->m_y <= event.m_y) &&
|
||||
@@ -411,6 +440,7 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
@@ -474,6 +504,35 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto
|
||||
while (node)
|
||||
{
|
||||
wxWindow *child = (wxWindow*)node->Data();
|
||||
|
||||
if (child->m_isStaticBox)
|
||||
{
|
||||
// wxStaticBox is transparent in the box itself
|
||||
int x = event.m_x;
|
||||
int y = event.m_y;
|
||||
int xx1 = child->m_x;
|
||||
int yy1 = child->m_y;
|
||||
int xx2 = child->m_x + child->m_width;
|
||||
int yy2 = child->m_x + child->m_height;
|
||||
|
||||
// left
|
||||
if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) ||
|
||||
// right
|
||||
((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) ||
|
||||
// top
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) ||
|
||||
// bottom
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2)))
|
||||
{
|
||||
win = child;
|
||||
event.m_x -= child->m_x;
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
|
||||
(child->m_x <= event.m_x) &&
|
||||
(child->m_y <= event.m_y) &&
|
||||
@@ -485,6 +544,7 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
@@ -538,6 +598,35 @@ static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion
|
||||
while (node)
|
||||
{
|
||||
wxWindow *child = (wxWindow*)node->Data();
|
||||
|
||||
if (child->m_isStaticBox)
|
||||
{
|
||||
// wxStaticBox is transparent in the box itself
|
||||
int x = event.m_x;
|
||||
int y = event.m_y;
|
||||
int xx1 = child->m_x;
|
||||
int yy1 = child->m_y;
|
||||
int xx2 = child->m_x + child->m_width;
|
||||
int yy2 = child->m_x + child->m_height;
|
||||
|
||||
// left
|
||||
if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) ||
|
||||
// right
|
||||
((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) ||
|
||||
// top
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) ||
|
||||
// bottom
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2)))
|
||||
{
|
||||
win = child;
|
||||
event.m_x -= child->m_x;
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
|
||||
(child->m_x <= event.m_x) &&
|
||||
(child->m_y <= event.m_y) &&
|
||||
@@ -549,6 +638,7 @@ static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
@@ -881,6 +971,9 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
||||
GdkEventButton *WXUNUSED(gdk_event),
|
||||
wxWindow *win )
|
||||
{
|
||||
// don't test here as we can release the mouse while being over
|
||||
// a different window then the slider
|
||||
//
|
||||
// if (gdk_event->window != widget->slider) return FALSE;
|
||||
|
||||
win->m_isScrolling = TRUE;
|
||||
@@ -898,7 +991,7 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *widget,
|
||||
wxWindow *win )
|
||||
{
|
||||
|
||||
// don't test here as we can reelase the mouse while being over
|
||||
// don't test here as we can release the mouse while being over
|
||||
// a different window then the slider
|
||||
//
|
||||
// if (gdk_event->window != widget->slider) return FALSE;
|
||||
@@ -924,8 +1017,8 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *widget,
|
||||
// C++ has no virtual methods in a constructor. We have to emulate a
|
||||
// virtual function here as wxNotebook requires a different way to insert
|
||||
// a child in it. I had opted for creating a wxNotebookPage window class
|
||||
// which would have made this superflouus (such in the MDI window system),
|
||||
// but no-one is listening to me...
|
||||
// which would have made this superfluous (such in the MDI window system),
|
||||
// but no-one was listening to me...
|
||||
|
||||
static void wxInsertChildInWindow( wxWindow* parent, wxWindow* child )
|
||||
{
|
||||
@@ -1009,6 +1102,8 @@ wxWindow::wxWindow()
|
||||
|
||||
m_clientObject = (wxClientData*) NULL;
|
||||
m_clientData = NULL;
|
||||
|
||||
m_isStaticBox = FALSE;
|
||||
}
|
||||
|
||||
wxWindow::wxWindow( wxWindow *parent, wxWindowID id,
|
||||
@@ -1238,8 +1333,8 @@ void wxWindow::PreCreation( wxWindow *parent, wxWindowID id,
|
||||
|
||||
m_cursor = new wxCursor( wxCURSOR_ARROW );
|
||||
m_font = *wxSWISS_FONT;
|
||||
// m_backgroundColour = wxWHITE;
|
||||
// m_foregroundColour = wxBLACK;
|
||||
m_backgroundColour = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
|
||||
m_foregroundColour = *wxBLACK;
|
||||
m_windowStyle = style;
|
||||
m_windowName = name;
|
||||
|
||||
@@ -1267,6 +1362,8 @@ void wxWindow::PreCreation( wxWindow *parent, wxWindowID id,
|
||||
|
||||
m_clientObject = (wxClientData*)NULL;
|
||||
m_clientData = NULL;
|
||||
|
||||
m_isStaticBox = FALSE;
|
||||
}
|
||||
|
||||
void wxWindow::PostCreation()
|
||||
@@ -1457,7 +1554,7 @@ void wxWindow::Move( int x, int y )
|
||||
|
||||
void wxWindow::GetSize( int *width, int *height ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (width) (*width) = m_width;
|
||||
if (height) (*height) = m_height;
|
||||
@@ -1465,7 +1562,7 @@ void wxWindow::GetSize( int *width, int *height ) const
|
||||
|
||||
void wxWindow::SetClientSize( int width, int height )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (!m_wxwindow)
|
||||
{
|
||||
@@ -1529,7 +1626,7 @@ void wxWindow::SetClientSize( int width, int height )
|
||||
|
||||
void wxWindow::GetClientSize( int *width, int *height ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (!m_wxwindow)
|
||||
{
|
||||
@@ -1594,7 +1691,7 @@ void wxWindow::GetClientSize( int *width, int *height ) const
|
||||
|
||||
void wxWindow::GetPosition( int *x, int *y ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (x) (*x) = m_x;
|
||||
if (y) (*y) = m_y;
|
||||
@@ -1602,7 +1699,7 @@ void wxWindow::GetPosition( int *x, int *y ) const
|
||||
|
||||
void wxWindow::ClientToScreen( int *x, int *y )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
GdkWindow *source = (GdkWindow *) NULL;
|
||||
if (m_wxwindow)
|
||||
@@ -1633,7 +1730,7 @@ void wxWindow::ClientToScreen( int *x, int *y )
|
||||
|
||||
void wxWindow::ScreenToClient( int *x, int *y )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
GdkWindow *source = (GdkWindow *) NULL;
|
||||
if (m_wxwindow)
|
||||
@@ -1664,7 +1761,7 @@ void wxWindow::ScreenToClient( int *x, int *y )
|
||||
|
||||
void wxWindow::Centre( int direction )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
int x = m_x;
|
||||
int y = m_y;
|
||||
@@ -1688,7 +1785,7 @@ void wxWindow::Centre( int direction )
|
||||
|
||||
void wxWindow::Fit()
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
int maxX = 0;
|
||||
int maxY = 0;
|
||||
@@ -1699,19 +1796,18 @@ void wxWindow::Fit()
|
||||
int wx, wy, ww, wh;
|
||||
win->GetPosition(&wx, &wy);
|
||||
win->GetSize(&ww, &wh);
|
||||
if ( wx + ww > maxX )
|
||||
maxX = wx + ww;
|
||||
if ( wy + wh > maxY )
|
||||
maxY = wy + wh;
|
||||
if (wx + ww > maxX) maxX = wx + ww;
|
||||
if (wy + wh > maxY) maxY = wy + wh;
|
||||
|
||||
node = node->Next();
|
||||
}
|
||||
SetClientSize(maxX + 5, maxY + 10);
|
||||
|
||||
SetClientSize(maxX + 7, maxY + 14);
|
||||
}
|
||||
|
||||
void wxWindow::SetSizeHints( int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH) )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
m_minWidth = minW;
|
||||
m_minHeight = minH;
|
||||
@@ -1726,67 +1822,57 @@ void wxWindow::OnSize( wxSizeEvent &WXUNUSED(event) )
|
||||
|
||||
bool wxWindow::Show( bool show )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( (m_widget != NULL), FALSE, "invalid window" );
|
||||
|
||||
if (show)
|
||||
gtk_widget_show( m_widget );
|
||||
else
|
||||
gtk_widget_hide( m_widget );
|
||||
|
||||
m_isShown = show;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void wxWindow::Enable( bool enable )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
m_isEnabled = enable;
|
||||
|
||||
gtk_widget_set_sensitive( m_widget, enable );
|
||||
if (m_wxwindow) gtk_widget_set_sensitive( m_wxwindow, enable );
|
||||
}
|
||||
|
||||
int wxWindow::GetCharHeight() const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( (m_widget != NULL), 12, "invalid window" );
|
||||
|
||||
if (!m_font.Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return -1;
|
||||
}
|
||||
wxCHECK_MSG( m_font.Ok(), 12, "invalid font" );
|
||||
|
||||
GdkFont *font = m_font.GetInternalFont( 1.0 );
|
||||
|
||||
return font->ascent + font->descent;
|
||||
}
|
||||
|
||||
int wxWindow::GetCharWidth() const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( (m_widget != NULL), 8, "invalid window" );
|
||||
|
||||
if (!m_font.Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return -1;
|
||||
}
|
||||
wxCHECK_MSG( m_font.Ok(), 8, "invalid font" );
|
||||
|
||||
GdkFont *font = m_font.GetInternalFont( 1.0 );
|
||||
|
||||
return gdk_string_width( font, "H" );
|
||||
}
|
||||
|
||||
void wxWindow::GetTextExtent( const wxString& string, int *x, int *y,
|
||||
int *descent, int *externalLeading, const wxFont *theFont, bool WXUNUSED(use16) ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
|
||||
wxFont fontToUse = m_font;
|
||||
if (theFont) fontToUse = *theFont;
|
||||
|
||||
if (!fontToUse.Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return;
|
||||
}
|
||||
wxASSERT_MSG( (m_font.Ok()), "invalid font" );
|
||||
wxCHECK_RET( fontToUse.Ok(), "invalid font" );
|
||||
|
||||
GdkFont *font = fontToUse.GetInternalFont( 1.0 );
|
||||
if (x) (*x) = gdk_string_width( font, string );
|
||||
@@ -1798,6 +1884,7 @@ void wxWindow::GetTextExtent( const wxString& string, int *x, int *y,
|
||||
void wxWindow::MakeModal( bool modal )
|
||||
{
|
||||
return;
|
||||
|
||||
// Disable all other windows
|
||||
if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame)))
|
||||
{
|
||||
@@ -1805,8 +1892,7 @@ void wxWindow::MakeModal( bool modal )
|
||||
while (node)
|
||||
{
|
||||
wxWindow *win = (wxWindow *)node->Data();
|
||||
if (win != this)
|
||||
win->Enable(!modal);
|
||||
if (win != this) win->Enable(!modal);
|
||||
|
||||
node = node->Next();
|
||||
}
|
||||
@@ -1815,7 +1901,7 @@ void wxWindow::MakeModal( bool modal )
|
||||
|
||||
void wxWindow::SetFocus()
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
GtkWidget *connect_widget = GetConnectWidget();
|
||||
if (connect_widget)
|
||||
@@ -1834,14 +1920,16 @@ bool wxWindow::OnClose()
|
||||
|
||||
void wxWindow::AddChild( wxWindow *child )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxASSERT_MSG( (child != NULL), "invalid child" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (child != NULL), "invalid child" );
|
||||
|
||||
m_children.Append( child );
|
||||
}
|
||||
|
||||
wxWindow *wxWindow::ReParent( wxWindow *newParent )
|
||||
{
|
||||
wxCHECK_MSG( (m_widget != NULL), (wxWindow*) NULL, "invalid window" );
|
||||
|
||||
wxWindow *oldParent = GetParent();
|
||||
|
||||
if (oldParent) oldParent->RemoveChild( this );
|
||||
@@ -1875,14 +1963,14 @@ int wxWindow::GetReturnCode()
|
||||
|
||||
void wxWindow::Raise()
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (m_widget) gdk_window_raise( m_widget->window );
|
||||
}
|
||||
|
||||
void wxWindow::Lower()
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (m_widget) gdk_window_lower( m_widget->window );
|
||||
}
|
||||
@@ -1973,18 +2061,11 @@ wxWindowID wxWindow::GetId() const
|
||||
|
||||
void wxWindow::SetCursor( const wxCursor &cursor )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (m_cursor == NULL)
|
||||
{
|
||||
wxFAIL_MSG( "wxWindow::SetCursor m_cursor == NULL" );
|
||||
m_cursor = new wxCursor( wxCURSOR_ARROW );
|
||||
}
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (cursor.Ok())
|
||||
{
|
||||
if ( cursor == *m_cursor )
|
||||
return;
|
||||
if (cursor == *m_cursor) return;
|
||||
*m_cursor = cursor;
|
||||
}
|
||||
else
|
||||
@@ -2083,8 +2164,13 @@ void wxWindow::SetBackgroundColour( const wxColour &colour )
|
||||
|
||||
if (m_backgroundColour == colour) return;
|
||||
|
||||
if (!m_backgroundColour.Ok())
|
||||
if (wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ) == colour) return;
|
||||
wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
|
||||
if (sysbg.Red() == colour.Red() &&
|
||||
sysbg.Green() == colour.Green() &&
|
||||
sysbg.Blue() == colour.Blue())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_backgroundColour = colour;
|
||||
if (!m_backgroundColour.Ok()) return;
|
||||
@@ -2170,7 +2256,9 @@ bool wxWindow::Validate()
|
||||
{
|
||||
wxWindow *child = (wxWindow *)node->Data();
|
||||
if (child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this))
|
||||
{ return FALSE; }
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
return TRUE;
|
||||
@@ -2197,14 +2285,16 @@ bool wxWindow::TransferDataToWindow()
|
||||
|
||||
bool wxWindow::TransferDataFromWindow()
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
|
||||
|
||||
wxNode *node = m_children.First();
|
||||
while (node)
|
||||
{
|
||||
wxWindow *child = (wxWindow *)node->Data();
|
||||
if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->TransferFromWindow() )
|
||||
{ return FALSE; }
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
return TRUE;
|
||||
@@ -2237,7 +2327,9 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
|
||||
{
|
||||
wxMenuItem *menuitem = (wxMenuItem*)node->Data();
|
||||
if (menuitem->IsSubMenu())
|
||||
{
|
||||
SetInvokingWindow( menuitem->GetSubMenu(), win );
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
@@ -2329,7 +2421,9 @@ void wxWindow::CaptureMouse()
|
||||
(GDK_BUTTON_PRESS_MASK |
|
||||
GDK_BUTTON_RELEASE_MASK |
|
||||
GDK_POINTER_MOTION_MASK),
|
||||
(GdkWindow *) NULL, (GdkCursor *) NULL, GDK_CURRENT_TIME );
|
||||
(GdkWindow *) NULL,
|
||||
(GdkCursor *) NULL,
|
||||
GDK_CURRENT_TIME );
|
||||
g_capturing = TRUE;
|
||||
}
|
||||
|
||||
@@ -2410,11 +2504,9 @@ wxWindow *wxWindow::FindWindow( const wxString& name )
|
||||
void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
|
||||
int range, bool refresh )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( m_widget != NULL, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return;
|
||||
wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" );
|
||||
|
||||
m_hasScrolling = TRUE;
|
||||
|
||||
@@ -2480,11 +2572,9 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
|
||||
|
||||
void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( m_widget != NULL, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return;
|
||||
wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" );
|
||||
|
||||
if (orient == wxHORIZONTAL)
|
||||
{
|
||||
@@ -2521,11 +2611,9 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
|
||||
|
||||
int wxWindow::GetScrollThumb( int orient ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( m_widget != NULL, 0, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return 0;
|
||||
wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" );
|
||||
|
||||
if (orient == wxHORIZONTAL)
|
||||
return (int)(m_hAdjust->page_size+0.5);
|
||||
@@ -2535,11 +2623,9 @@ int wxWindow::GetScrollThumb( int orient ) const
|
||||
|
||||
int wxWindow::GetScrollPos( int orient ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( m_widget != NULL, 0, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return 0;
|
||||
wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" );
|
||||
|
||||
if (orient == wxHORIZONTAL)
|
||||
return (int)(m_hAdjust->value+0.5);
|
||||
@@ -2549,11 +2635,9 @@ int wxWindow::GetScrollPos( int orient ) const
|
||||
|
||||
int wxWindow::GetScrollRange( int orient ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( m_widget != NULL, 0, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return 0;
|
||||
wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" );
|
||||
|
||||
if (orient == wxHORIZONTAL)
|
||||
return (int)(m_hAdjust->upper+0.5);
|
||||
@@ -2563,11 +2647,9 @@ int wxWindow::GetScrollRange( int orient ) const
|
||||
|
||||
void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( m_widget != NULL, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return;
|
||||
wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" );
|
||||
|
||||
int cw = 0;
|
||||
int ch = 0;
|
||||
|
@@ -91,6 +91,8 @@ void wxColour::InitFromName( const wxString &colourName )
|
||||
if (!gdk_color_parse( colourName, &M_COLDATA->m_color ))
|
||||
{
|
||||
wxFAIL_MSG( "wxColour: couldn't find colour" );
|
||||
printf( "Colourname %s.\n", WXSTRINGCAST colourName );
|
||||
|
||||
delete m_refData;
|
||||
m_refData = (wxObjectRefData *) NULL;
|
||||
}
|
||||
@@ -135,33 +137,21 @@ void wxColour::Set( unsigned char red, unsigned char green, unsigned char blue )
|
||||
|
||||
unsigned char wxColour::Red() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid colour" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid colour" );
|
||||
|
||||
return (unsigned char)(M_COLDATA->m_color.red >> SHIFT);
|
||||
}
|
||||
|
||||
unsigned char wxColour::Green() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid colour" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid colour" );
|
||||
|
||||
return (unsigned char)(M_COLDATA->m_color.green >> SHIFT);
|
||||
}
|
||||
|
||||
unsigned char wxColour::Blue() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid colour" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid colour" );
|
||||
|
||||
return (unsigned char)(M_COLDATA->m_color.blue >> SHIFT);
|
||||
}
|
||||
@@ -208,14 +198,14 @@ void wxColour::CalcPixel( GdkColormap *cmap )
|
||||
|
||||
int wxColour::GetPixel() const
|
||||
{
|
||||
if (!Ok()) return 0;
|
||||
wxCHECK_MSG( Ok(), 0, "invalid colour" );
|
||||
|
||||
return M_COLDATA->m_color.pixel;
|
||||
}
|
||||
|
||||
GdkColor *wxColour::GetColor() const
|
||||
{
|
||||
if (!Ok()) return (GdkColor *) NULL;
|
||||
wxCHECK_MSG( Ok(), (GdkColor *) NULL, "invalid colour" );
|
||||
|
||||
return &M_COLDATA->m_color;
|
||||
}
|
||||
|
@@ -179,22 +179,14 @@ bool wxFont::Ok() const
|
||||
|
||||
int wxFont::GetPointSize() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_pointSize;
|
||||
}
|
||||
|
||||
wxString wxFont::GetFaceString() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return "";
|
||||
}
|
||||
wxCHECK_MSG( Ok(), "", "invalid font" );
|
||||
|
||||
wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
|
||||
return s;
|
||||
@@ -202,11 +194,7 @@ wxString wxFont::GetFaceString() const
|
||||
|
||||
wxString wxFont::GetFaceName() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return "";
|
||||
}
|
||||
wxCHECK_MSG( Ok(), "", "invalid font" );
|
||||
|
||||
wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
|
||||
return s;
|
||||
@@ -214,22 +202,14 @@ wxString wxFont::GetFaceName() const
|
||||
|
||||
int wxFont::GetFamily() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_family;
|
||||
}
|
||||
|
||||
wxString wxFont::GetFamilyString() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return "wxDEFAULT";
|
||||
}
|
||||
wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" );
|
||||
|
||||
switch (M_FONTDATA->m_family)
|
||||
{
|
||||
@@ -247,33 +227,21 @@ wxString wxFont::GetFamilyString() const
|
||||
|
||||
int wxFont::GetFontId() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_fontId; // stub
|
||||
}
|
||||
|
||||
int wxFont::GetStyle() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_style;
|
||||
}
|
||||
|
||||
wxString wxFont::GetStyleString() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return "wxDEFAULT";
|
||||
}
|
||||
wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" );
|
||||
|
||||
switch (M_FONTDATA->m_style)
|
||||
{
|
||||
@@ -288,22 +256,14 @@ wxString wxFont::GetStyleString() const
|
||||
|
||||
int wxFont::GetWeight() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return 0;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), 0, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_weight;
|
||||
}
|
||||
|
||||
wxString wxFont::GetWeightString() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return "wxDEFAULT";
|
||||
}
|
||||
wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" );
|
||||
|
||||
switch (M_FONTDATA->m_weight)
|
||||
{
|
||||
@@ -318,11 +278,7 @@ wxString wxFont::GetWeightString() const
|
||||
|
||||
bool wxFont::GetUnderlined() const
|
||||
{
|
||||
if (!Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return FALSE;
|
||||
}
|
||||
wxCHECK_MSG( Ok(), FALSE, "invalid font" );
|
||||
|
||||
return M_FONTDATA->m_underlined;
|
||||
}
|
||||
|
@@ -80,7 +80,7 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
||||
wxScrollBar *win )
|
||||
{
|
||||
win->m_isScrolling = TRUE;
|
||||
g_blockEventsOnScroll = TRUE;
|
||||
// g_blockEventsOnScroll = TRUE; doesn't work in DialogEd
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -94,7 +94,7 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
||||
wxScrollBar *win )
|
||||
{
|
||||
win->m_isScrolling = FALSE;
|
||||
g_blockEventsOnScroll = FALSE;
|
||||
// g_blockEventsOnScroll = FALSE;
|
||||
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
|
||||
|
||||
|
@@ -13,6 +13,7 @@
|
||||
#endif
|
||||
|
||||
#include "wx/settings.h"
|
||||
#include "wx/debug.h"
|
||||
|
||||
/*
|
||||
#define wxSYS_COLOUR_SCROLLBAR 0
|
||||
@@ -59,7 +60,8 @@ wxColour *g_systemHighlightColour = (wxColour *) NULL;
|
||||
|
||||
wxFont *g_systemFont = (wxFont *) NULL;
|
||||
|
||||
void wxSystemSettings::Done() {
|
||||
void wxSystemSettings::Done()
|
||||
{
|
||||
wxDELETE(g_systemBtnFaceColour);
|
||||
wxDELETE(g_systemBtnShadowColour);
|
||||
wxDELETE(g_systemBtnHighlightColour);
|
||||
@@ -178,10 +180,13 @@ int wxSystemSettings::GetSystemMetric( int index )
|
||||
{
|
||||
switch (index)
|
||||
{
|
||||
case wxSYS_SCREEN_X:
|
||||
return gdk_screen_width();
|
||||
case wxSYS_SCREEN_Y:
|
||||
return gdk_screen_height();
|
||||
case wxSYS_SCREEN_X: return gdk_screen_width();
|
||||
case wxSYS_SCREEN_Y: return gdk_screen_height();
|
||||
case wxSYS_HSCROLL_Y: return 15;
|
||||
case wxSYS_VSCROLL_X: return 15;
|
||||
}
|
||||
|
||||
wxCHECK_MSG( index, 0, "wxSystemSettings::GetSystemMetric not fully implemented" );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -38,6 +38,8 @@ bool wxStaticBox::Create( wxWindow *parent, wxWindowID id, const wxString &label
|
||||
|
||||
PreCreation( parent, id, pos, size, style, name );
|
||||
|
||||
m_isStaticBox = TRUE;
|
||||
|
||||
m_widget = gtk_frame_new(m_label);
|
||||
|
||||
m_parent->AddChild( this );
|
||||
|
@@ -400,6 +400,35 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
|
||||
while (node)
|
||||
{
|
||||
wxWindow *child = (wxWindow*)node->Data();
|
||||
|
||||
if (child->m_isStaticBox)
|
||||
{
|
||||
// wxStaticBox is transparent in the box itself
|
||||
int x = event.m_x;
|
||||
int y = event.m_y;
|
||||
int xx1 = child->m_x;
|
||||
int yy1 = child->m_y;
|
||||
int xx2 = child->m_x + child->m_width;
|
||||
int yy2 = child->m_x + child->m_height;
|
||||
|
||||
// left
|
||||
if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) ||
|
||||
// right
|
||||
((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) ||
|
||||
// top
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) ||
|
||||
// bottom
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2)))
|
||||
{
|
||||
win = child;
|
||||
event.m_x -= child->m_x;
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
|
||||
(child->m_x <= event.m_x) &&
|
||||
(child->m_y <= event.m_y) &&
|
||||
@@ -411,6 +440,7 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
@@ -474,6 +504,35 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto
|
||||
while (node)
|
||||
{
|
||||
wxWindow *child = (wxWindow*)node->Data();
|
||||
|
||||
if (child->m_isStaticBox)
|
||||
{
|
||||
// wxStaticBox is transparent in the box itself
|
||||
int x = event.m_x;
|
||||
int y = event.m_y;
|
||||
int xx1 = child->m_x;
|
||||
int yy1 = child->m_y;
|
||||
int xx2 = child->m_x + child->m_width;
|
||||
int yy2 = child->m_x + child->m_height;
|
||||
|
||||
// left
|
||||
if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) ||
|
||||
// right
|
||||
((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) ||
|
||||
// top
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) ||
|
||||
// bottom
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2)))
|
||||
{
|
||||
win = child;
|
||||
event.m_x -= child->m_x;
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
|
||||
(child->m_x <= event.m_x) &&
|
||||
(child->m_y <= event.m_y) &&
|
||||
@@ -485,6 +544,7 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
@@ -538,6 +598,35 @@ static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion
|
||||
while (node)
|
||||
{
|
||||
wxWindow *child = (wxWindow*)node->Data();
|
||||
|
||||
if (child->m_isStaticBox)
|
||||
{
|
||||
// wxStaticBox is transparent in the box itself
|
||||
int x = event.m_x;
|
||||
int y = event.m_y;
|
||||
int xx1 = child->m_x;
|
||||
int yy1 = child->m_y;
|
||||
int xx2 = child->m_x + child->m_width;
|
||||
int yy2 = child->m_x + child->m_height;
|
||||
|
||||
// left
|
||||
if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) ||
|
||||
// right
|
||||
((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) ||
|
||||
// top
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) ||
|
||||
// bottom
|
||||
((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2)))
|
||||
{
|
||||
win = child;
|
||||
event.m_x -= child->m_x;
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
|
||||
(child->m_x <= event.m_x) &&
|
||||
(child->m_y <= event.m_y) &&
|
||||
@@ -549,6 +638,7 @@ static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion
|
||||
event.m_y -= child->m_y;
|
||||
break;
|
||||
}
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
@@ -881,6 +971,9 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
||||
GdkEventButton *WXUNUSED(gdk_event),
|
||||
wxWindow *win )
|
||||
{
|
||||
// don't test here as we can release the mouse while being over
|
||||
// a different window then the slider
|
||||
//
|
||||
// if (gdk_event->window != widget->slider) return FALSE;
|
||||
|
||||
win->m_isScrolling = TRUE;
|
||||
@@ -898,7 +991,7 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *widget,
|
||||
wxWindow *win )
|
||||
{
|
||||
|
||||
// don't test here as we can reelase the mouse while being over
|
||||
// don't test here as we can release the mouse while being over
|
||||
// a different window then the slider
|
||||
//
|
||||
// if (gdk_event->window != widget->slider) return FALSE;
|
||||
@@ -924,8 +1017,8 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *widget,
|
||||
// C++ has no virtual methods in a constructor. We have to emulate a
|
||||
// virtual function here as wxNotebook requires a different way to insert
|
||||
// a child in it. I had opted for creating a wxNotebookPage window class
|
||||
// which would have made this superflouus (such in the MDI window system),
|
||||
// but no-one is listening to me...
|
||||
// which would have made this superfluous (such in the MDI window system),
|
||||
// but no-one was listening to me...
|
||||
|
||||
static void wxInsertChildInWindow( wxWindow* parent, wxWindow* child )
|
||||
{
|
||||
@@ -1009,6 +1102,8 @@ wxWindow::wxWindow()
|
||||
|
||||
m_clientObject = (wxClientData*) NULL;
|
||||
m_clientData = NULL;
|
||||
|
||||
m_isStaticBox = FALSE;
|
||||
}
|
||||
|
||||
wxWindow::wxWindow( wxWindow *parent, wxWindowID id,
|
||||
@@ -1238,8 +1333,8 @@ void wxWindow::PreCreation( wxWindow *parent, wxWindowID id,
|
||||
|
||||
m_cursor = new wxCursor( wxCURSOR_ARROW );
|
||||
m_font = *wxSWISS_FONT;
|
||||
// m_backgroundColour = wxWHITE;
|
||||
// m_foregroundColour = wxBLACK;
|
||||
m_backgroundColour = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
|
||||
m_foregroundColour = *wxBLACK;
|
||||
m_windowStyle = style;
|
||||
m_windowName = name;
|
||||
|
||||
@@ -1267,6 +1362,8 @@ void wxWindow::PreCreation( wxWindow *parent, wxWindowID id,
|
||||
|
||||
m_clientObject = (wxClientData*)NULL;
|
||||
m_clientData = NULL;
|
||||
|
||||
m_isStaticBox = FALSE;
|
||||
}
|
||||
|
||||
void wxWindow::PostCreation()
|
||||
@@ -1457,7 +1554,7 @@ void wxWindow::Move( int x, int y )
|
||||
|
||||
void wxWindow::GetSize( int *width, int *height ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (width) (*width) = m_width;
|
||||
if (height) (*height) = m_height;
|
||||
@@ -1465,7 +1562,7 @@ void wxWindow::GetSize( int *width, int *height ) const
|
||||
|
||||
void wxWindow::SetClientSize( int width, int height )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (!m_wxwindow)
|
||||
{
|
||||
@@ -1529,7 +1626,7 @@ void wxWindow::SetClientSize( int width, int height )
|
||||
|
||||
void wxWindow::GetClientSize( int *width, int *height ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (!m_wxwindow)
|
||||
{
|
||||
@@ -1594,7 +1691,7 @@ void wxWindow::GetClientSize( int *width, int *height ) const
|
||||
|
||||
void wxWindow::GetPosition( int *x, int *y ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (x) (*x) = m_x;
|
||||
if (y) (*y) = m_y;
|
||||
@@ -1602,7 +1699,7 @@ void wxWindow::GetPosition( int *x, int *y ) const
|
||||
|
||||
void wxWindow::ClientToScreen( int *x, int *y )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
GdkWindow *source = (GdkWindow *) NULL;
|
||||
if (m_wxwindow)
|
||||
@@ -1633,7 +1730,7 @@ void wxWindow::ClientToScreen( int *x, int *y )
|
||||
|
||||
void wxWindow::ScreenToClient( int *x, int *y )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
GdkWindow *source = (GdkWindow *) NULL;
|
||||
if (m_wxwindow)
|
||||
@@ -1664,7 +1761,7 @@ void wxWindow::ScreenToClient( int *x, int *y )
|
||||
|
||||
void wxWindow::Centre( int direction )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
int x = m_x;
|
||||
int y = m_y;
|
||||
@@ -1688,7 +1785,7 @@ void wxWindow::Centre( int direction )
|
||||
|
||||
void wxWindow::Fit()
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
int maxX = 0;
|
||||
int maxY = 0;
|
||||
@@ -1699,19 +1796,18 @@ void wxWindow::Fit()
|
||||
int wx, wy, ww, wh;
|
||||
win->GetPosition(&wx, &wy);
|
||||
win->GetSize(&ww, &wh);
|
||||
if ( wx + ww > maxX )
|
||||
maxX = wx + ww;
|
||||
if ( wy + wh > maxY )
|
||||
maxY = wy + wh;
|
||||
if (wx + ww > maxX) maxX = wx + ww;
|
||||
if (wy + wh > maxY) maxY = wy + wh;
|
||||
|
||||
node = node->Next();
|
||||
}
|
||||
SetClientSize(maxX + 5, maxY + 10);
|
||||
|
||||
SetClientSize(maxX + 7, maxY + 14);
|
||||
}
|
||||
|
||||
void wxWindow::SetSizeHints( int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH) )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
m_minWidth = minW;
|
||||
m_minHeight = minH;
|
||||
@@ -1726,67 +1822,57 @@ void wxWindow::OnSize( wxSizeEvent &WXUNUSED(event) )
|
||||
|
||||
bool wxWindow::Show( bool show )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( (m_widget != NULL), FALSE, "invalid window" );
|
||||
|
||||
if (show)
|
||||
gtk_widget_show( m_widget );
|
||||
else
|
||||
gtk_widget_hide( m_widget );
|
||||
|
||||
m_isShown = show;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void wxWindow::Enable( bool enable )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
m_isEnabled = enable;
|
||||
|
||||
gtk_widget_set_sensitive( m_widget, enable );
|
||||
if (m_wxwindow) gtk_widget_set_sensitive( m_wxwindow, enable );
|
||||
}
|
||||
|
||||
int wxWindow::GetCharHeight() const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( (m_widget != NULL), 12, "invalid window" );
|
||||
|
||||
if (!m_font.Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return -1;
|
||||
}
|
||||
wxCHECK_MSG( m_font.Ok(), 12, "invalid font" );
|
||||
|
||||
GdkFont *font = m_font.GetInternalFont( 1.0 );
|
||||
|
||||
return font->ascent + font->descent;
|
||||
}
|
||||
|
||||
int wxWindow::GetCharWidth() const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( (m_widget != NULL), 8, "invalid window" );
|
||||
|
||||
if (!m_font.Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return -1;
|
||||
}
|
||||
wxCHECK_MSG( m_font.Ok(), 8, "invalid font" );
|
||||
|
||||
GdkFont *font = m_font.GetInternalFont( 1.0 );
|
||||
|
||||
return gdk_string_width( font, "H" );
|
||||
}
|
||||
|
||||
void wxWindow::GetTextExtent( const wxString& string, int *x, int *y,
|
||||
int *descent, int *externalLeading, const wxFont *theFont, bool WXUNUSED(use16) ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
|
||||
wxFont fontToUse = m_font;
|
||||
if (theFont) fontToUse = *theFont;
|
||||
|
||||
if (!fontToUse.Ok())
|
||||
{
|
||||
wxFAIL_MSG( "invalid font" );
|
||||
return;
|
||||
}
|
||||
wxASSERT_MSG( (m_font.Ok()), "invalid font" );
|
||||
wxCHECK_RET( fontToUse.Ok(), "invalid font" );
|
||||
|
||||
GdkFont *font = fontToUse.GetInternalFont( 1.0 );
|
||||
if (x) (*x) = gdk_string_width( font, string );
|
||||
@@ -1798,6 +1884,7 @@ void wxWindow::GetTextExtent( const wxString& string, int *x, int *y,
|
||||
void wxWindow::MakeModal( bool modal )
|
||||
{
|
||||
return;
|
||||
|
||||
// Disable all other windows
|
||||
if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame)))
|
||||
{
|
||||
@@ -1805,8 +1892,7 @@ void wxWindow::MakeModal( bool modal )
|
||||
while (node)
|
||||
{
|
||||
wxWindow *win = (wxWindow *)node->Data();
|
||||
if (win != this)
|
||||
win->Enable(!modal);
|
||||
if (win != this) win->Enable(!modal);
|
||||
|
||||
node = node->Next();
|
||||
}
|
||||
@@ -1815,7 +1901,7 @@ void wxWindow::MakeModal( bool modal )
|
||||
|
||||
void wxWindow::SetFocus()
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
GtkWidget *connect_widget = GetConnectWidget();
|
||||
if (connect_widget)
|
||||
@@ -1834,14 +1920,16 @@ bool wxWindow::OnClose()
|
||||
|
||||
void wxWindow::AddChild( wxWindow *child )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxASSERT_MSG( (child != NULL), "invalid child" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (child != NULL), "invalid child" );
|
||||
|
||||
m_children.Append( child );
|
||||
}
|
||||
|
||||
wxWindow *wxWindow::ReParent( wxWindow *newParent )
|
||||
{
|
||||
wxCHECK_MSG( (m_widget != NULL), (wxWindow*) NULL, "invalid window" );
|
||||
|
||||
wxWindow *oldParent = GetParent();
|
||||
|
||||
if (oldParent) oldParent->RemoveChild( this );
|
||||
@@ -1875,14 +1963,14 @@ int wxWindow::GetReturnCode()
|
||||
|
||||
void wxWindow::Raise()
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (m_widget) gdk_window_raise( m_widget->window );
|
||||
}
|
||||
|
||||
void wxWindow::Lower()
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (m_widget) gdk_window_lower( m_widget->window );
|
||||
}
|
||||
@@ -1973,18 +2061,11 @@ wxWindowID wxWindow::GetId() const
|
||||
|
||||
void wxWindow::SetCursor( const wxCursor &cursor )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (m_cursor == NULL)
|
||||
{
|
||||
wxFAIL_MSG( "wxWindow::SetCursor m_cursor == NULL" );
|
||||
m_cursor = new wxCursor( wxCURSOR_ARROW );
|
||||
}
|
||||
wxCHECK_RET( (m_widget != NULL), "invalid window" );
|
||||
|
||||
if (cursor.Ok())
|
||||
{
|
||||
if ( cursor == *m_cursor )
|
||||
return;
|
||||
if (cursor == *m_cursor) return;
|
||||
*m_cursor = cursor;
|
||||
}
|
||||
else
|
||||
@@ -2083,8 +2164,13 @@ void wxWindow::SetBackgroundColour( const wxColour &colour )
|
||||
|
||||
if (m_backgroundColour == colour) return;
|
||||
|
||||
if (!m_backgroundColour.Ok())
|
||||
if (wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ) == colour) return;
|
||||
wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
|
||||
if (sysbg.Red() == colour.Red() &&
|
||||
sysbg.Green() == colour.Green() &&
|
||||
sysbg.Blue() == colour.Blue())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_backgroundColour = colour;
|
||||
if (!m_backgroundColour.Ok()) return;
|
||||
@@ -2170,7 +2256,9 @@ bool wxWindow::Validate()
|
||||
{
|
||||
wxWindow *child = (wxWindow *)node->Data();
|
||||
if (child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this))
|
||||
{ return FALSE; }
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
return TRUE;
|
||||
@@ -2197,14 +2285,16 @@ bool wxWindow::TransferDataToWindow()
|
||||
|
||||
bool wxWindow::TransferDataFromWindow()
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
|
||||
|
||||
wxNode *node = m_children.First();
|
||||
while (node)
|
||||
{
|
||||
wxWindow *child = (wxWindow *)node->Data();
|
||||
if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->TransferFromWindow() )
|
||||
{ return FALSE; }
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
return TRUE;
|
||||
@@ -2237,7 +2327,9 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
|
||||
{
|
||||
wxMenuItem *menuitem = (wxMenuItem*)node->Data();
|
||||
if (menuitem->IsSubMenu())
|
||||
{
|
||||
SetInvokingWindow( menuitem->GetSubMenu(), win );
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
@@ -2329,7 +2421,9 @@ void wxWindow::CaptureMouse()
|
||||
(GDK_BUTTON_PRESS_MASK |
|
||||
GDK_BUTTON_RELEASE_MASK |
|
||||
GDK_POINTER_MOTION_MASK),
|
||||
(GdkWindow *) NULL, (GdkCursor *) NULL, GDK_CURRENT_TIME );
|
||||
(GdkWindow *) NULL,
|
||||
(GdkCursor *) NULL,
|
||||
GDK_CURRENT_TIME );
|
||||
g_capturing = TRUE;
|
||||
}
|
||||
|
||||
@@ -2410,11 +2504,9 @@ wxWindow *wxWindow::FindWindow( const wxString& name )
|
||||
void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
|
||||
int range, bool refresh )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( m_widget != NULL, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return;
|
||||
wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" );
|
||||
|
||||
m_hasScrolling = TRUE;
|
||||
|
||||
@@ -2480,11 +2572,9 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
|
||||
|
||||
void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( m_widget != NULL, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return;
|
||||
wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" );
|
||||
|
||||
if (orient == wxHORIZONTAL)
|
||||
{
|
||||
@@ -2521,11 +2611,9 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
|
||||
|
||||
int wxWindow::GetScrollThumb( int orient ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( m_widget != NULL, 0, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return 0;
|
||||
wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" );
|
||||
|
||||
if (orient == wxHORIZONTAL)
|
||||
return (int)(m_hAdjust->page_size+0.5);
|
||||
@@ -2535,11 +2623,9 @@ int wxWindow::GetScrollThumb( int orient ) const
|
||||
|
||||
int wxWindow::GetScrollPos( int orient ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( m_widget != NULL, 0, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return 0;
|
||||
wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" );
|
||||
|
||||
if (orient == wxHORIZONTAL)
|
||||
return (int)(m_hAdjust->value+0.5);
|
||||
@@ -2549,11 +2635,9 @@ int wxWindow::GetScrollPos( int orient ) const
|
||||
|
||||
int wxWindow::GetScrollRange( int orient ) const
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_MSG( m_widget != NULL, 0, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return 0;
|
||||
wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" );
|
||||
|
||||
if (orient == wxHORIZONTAL)
|
||||
return (int)(m_hAdjust->upper+0.5);
|
||||
@@ -2563,11 +2647,9 @@ int wxWindow::GetScrollRange( int orient ) const
|
||||
|
||||
void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
wxCHECK_RET( m_widget != NULL, "invalid window" );
|
||||
|
||||
wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
|
||||
|
||||
if (!m_wxwindow) return;
|
||||
wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" );
|
||||
|
||||
int cw = 0;
|
||||
int ch = 0;
|
||||
|
@@ -313,7 +313,7 @@ bool wxResourceManager::ShowResourceEditor(bool show, wxWindow *WXUNUSED(parent)
|
||||
c->bottom.SameAs (m_editorFrame, wxBottom, 0);
|
||||
c->width.Unconstrained();
|
||||
#ifdef __WXGTK__
|
||||
c->height.Absolute(140);
|
||||
c->height.Absolute(105);
|
||||
#else
|
||||
c->height.Absolute(60);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user