/////////////////////////////////////////////////////////////////////////////
-// Name: tabg.cpp
-// Purpose: Generic tabbed dialogs
+// Name: src/generic/tabg.cpp
+// Purpose: Generic tabbed dialogs; used by wxMotif's wxNotebook
// Author: Julian Smart
// Modified by:
// Created: 01/02/97
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "tabg.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
-#pragma hdrstop
+ #pragma hdrstop
#endif
-#if wxUSE_TAB_DIALOG
-
#ifndef WX_PRECOMP
#include "wx/settings.h"
#include "wx/intl.h"
#include "wx/dcclient.h"
+ #include "wx/math.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
-#include <math.h>
-#include "wx/tab.h"
+#include "wx/generic/tabg.h"
#include "wx/listimpl.cpp"
-WX_DEFINE_LIST(wxTabLayerList);
+WX_DEFINE_LIST(wxTabLayerList)
// not defined: use old, square tab implementation (fills in tabs)
// defined: use new, rounded tab implementation (doesn't colour in tabs)
// Draw grey background
if (m_view->GetTabStyle() & wxTAB_STYLE_COLOUR_INTERIOR)
{
- dc.SetBrush(*m_view->GetBackgroundBrush());
+ if(m_view->GetBackgroundBrush())
+ dc.SetBrush(*m_view->GetBackgroundBrush());
// Add 1 because the pen is transparent. Under Motif, may be different.
#ifdef __WXMOTIF__
wxColour col(m_view->GetTextColour());
dc.SetTextForeground(col);
dc.SetBackgroundMode(wxTRANSPARENT);
- long textWidth, textHeight;
+ wxCoord textWidth, textHeight;
dc.GetTextExtent(GetLabel(), &textWidth, &textHeight);
int textX = (int)(tabX + (GetWidth() - textWidth)/2.0);
m_tabViewRect.x = 300;
m_highlightColour = *wxWHITE;
m_shadowColour = wxColour(128, 128, 128);
- m_backgroundColour = *wxLIGHT_GREY;
+ // m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);
m_textColour = *wxBLACK;
m_highlightPen = wxWHITE_PEN;
m_shadowPen = wxGREY_PEN;
- m_backgroundPen = wxLIGHT_GREY_PEN;
- m_backgroundBrush = wxLIGHT_GREY_BRUSH;
+ // SetBackgroundColour(m_backgroundColour);
m_tabFont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
m_tabSelectedFont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
- m_window = (wxWindow *) NULL;
+ m_window = NULL;
}
wxTabView::~wxTabView()
tabControl->SetRowPosition(tabLayer->GetCount());
tabControl->SetColPosition(layer);
- wxTabControl *lastTab = (wxTabControl *) NULL;
+ wxTabControl *lastTab = NULL;
if (lastTabNode)
lastTab = (wxTabControl *)lastTabNode->GetData();
layerNode = nextLayerNode;
}
- wxTabControl *lastTab = (wxTabControl *) NULL;
+ wxTabControl *lastTab = NULL;
wxTabLayer *currentLayer = new wxTabLayer;
m_layers.Append(currentLayer);
{
currentLayer = new wxTabLayer;
m_layers.Append(currentLayer);
- lastTab = (wxTabControl *) NULL;
+ lastTab = NULL;
}
}
if (GetTabStyle() & wxTAB_STYLE_COLOUR_INTERIOR)
{
dc.SetPen(*wxTRANSPARENT_PEN);
- dc.SetBrush(*GetBackgroundBrush());
+ if(GetBackgroundBrush())
+ dc.SetBrush(*GetBackgroundBrush());
// Add 1 because the pen is transparent. Under Motif, may be different.
dc.DrawRectangle(
wxCoord x, y;
event.GetPosition(&x, &y);
- wxTabControl *hitControl = (wxTabControl *) NULL;
+ wxTabControl *hitControl = NULL;
wxTabLayerList::compatibility_iterator node = m_layers.GetFirst();
while (node)
void wxTabView::SetHighlightColour(const wxColour& col)
{
m_highlightColour = col;
- m_highlightPen = wxThePenList->FindOrCreatePen(col, 1, wxSOLID);
+ m_highlightPen = wxThePenList->FindOrCreatePen(col);
}
void wxTabView::SetShadowColour(const wxColour& col)
{
m_shadowColour = col;
- m_shadowPen = wxThePenList->FindOrCreatePen(col, 1, wxSOLID);
+ m_shadowPen = wxThePenList->FindOrCreatePen(col);
}
void wxTabView::SetBackgroundColour(const wxColour& col)
{
m_backgroundColour = col;
- m_backgroundPen = wxThePenList->FindOrCreatePen(col, 1, wxSOLID);
- m_backgroundBrush = wxTheBrushList->FindOrCreateBrush(col, wxSOLID);
+ m_backgroundPen = wxThePenList->FindOrCreatePen(col);
+ m_backgroundBrush = wxTheBrushList->FindOrCreateBrush(col);
}
+// this may be called with sel = zero (which doesn't match any page)
+// when wxMotif deletes a page
+// so return the first tab...
+
void wxTabView::SetTabSelection(int sel, bool activateTool)
{
if ( sel==m_tabSelection )
int oldSel = m_tabSelection;
wxTabControl *control = FindTabControlForId(sel);
+ if (sel == 0) sel=control->GetId();
wxTabControl *oldControl = FindTabControlForId(m_tabSelection);
if (!OnTabPreActivate(sel, oldSel))
}
// Find tab control for id
+// this may be called with zero (which doesn't match any page)
+// so return the first control...
wxTabControl *wxTabView::FindTabControlForId(int id) const
{
wxTabLayerList::compatibility_iterator node1 = m_layers.GetFirst();
while (node2)
{
wxTabControl *control = (wxTabControl *)node2->GetData();
- if (control->GetId() == id)
+ if (control->GetId() == id || id == 0)
return control;
node2 = node2->GetNext();
}
node1 = node1->GetNext();
}
- return (wxTabControl *) NULL;
+ return NULL;
}
// Find tab control for layer, position (starting from zero)
{
wxTabLayerList::compatibility_iterator node1 = m_layers.Item(layer);
if (!node1)
- return (wxTabControl *) NULL;
+ return NULL;
wxTabLayer *tabLayer = (wxTabLayer *)node1->GetData();
wxList::compatibility_iterator node2 = tabLayer->Item(position);
if (!node2)
- return (wxTabControl *) NULL;
+ return NULL;
return (wxTabControl *)node2->GetData();
}
long windowStyle, const wxString& name):
wxDialog(parent, id, title, pos, size, windowStyle, name)
{
- m_tabView = (wxTabView *) NULL;
+ m_tabView = NULL;
}
wxTabbedDialog::~wxTabbedDialog(void)
const wxSize& size, long windowStyle, const wxString& name):
wxPanel(parent, id, pos, size, windowStyle, name)
{
- m_tabView = (wxTabView *) NULL;
+ m_tabView = NULL;
}
wxTabbedPanel::~wxTabbedPanel(void)
: wxTabView(style)
{
m_panel = pan;
- m_currentWindow = (wxWindow *) NULL;
+ m_currentWindow = NULL;
- if (m_panel->IsKindOf(CLASSINFO(wxTabbedDialog)))
+ if (m_panel->IsKindOf(wxCLASSINFO(wxTabbedDialog)))
((wxTabbedDialog *)m_panel)->SetTabView(this);
- else if (m_panel->IsKindOf(CLASSINFO(wxTabbedPanel)))
+ else if (m_panel->IsKindOf(wxCLASSINFO(wxTabbedPanel)))
((wxTabbedPanel *)m_panel)->SetTabView(this);
SetWindow(m_panel);
newWindow->Refresh();
}
-#endif // wxUSE_TAB_DIALOG