From 68d98791b05217163f97d7c233952df8075416bb Mon Sep 17 00:00:00 2001 From: ibotty Date: Mon, 07 Oct 2002 13:23:14 +0000 Subject: changed WidgetLayer to a new (well partial) image storage WidgetLayer is now to be considered stable. there wont be any api removals. newwidget.{h,cpp} will inherit WidgetLayer, soon. i will try to be logic compatible with current widget.{h,cpp}, but will NOT guarantee api compatibility. --- (limited to 'noncore/apps/opie-console/widget_layer.cpp') diff --git a/noncore/apps/opie-console/widget_layer.cpp b/noncore/apps/opie-console/widget_layer.cpp index 28227e4..f428ed4 100644 --- a/noncore/apps/opie-console/widget_layer.cpp +++ b/noncore/apps/opie-console/widget_layer.cpp @@ -20,10 +20,8 @@ #include "common.h" -#define loc(X,Y) ((Y)*m_columns+(X)) - -WidgetLayer::WidgetLayer( QObject *parent, const char *name ) : QObject( parent, name ) +WidgetLayer::WidgetLayer( QWidget *parent, const char *name ) : QFrame( parent, name ) { // get the clipboard m_clipboard = QApplication::clipboard(); @@ -37,12 +35,17 @@ WidgetLayer::WidgetLayer( QObject *parent, const char *name ) : QObject( parent m_columns = 1; m_resizing = false; - m_image = QArray(); + // just for demonstrating + //m_image = QArray( m_lines * m_columns ); + m_image = QArray( 1 ); + } + WidgetLayer::~WidgetLayer() { - // clean up! + // clean up + delete m_image; } /* --------------------------------- audio ---------------------------------- */ @@ -58,17 +61,15 @@ void WidgetLayer::bell() void WidgetLayer::propagateSize() { - QArray oldimage = m_image; + QArray oldimage = m_image.copy(); int oldlines = m_lines; int oldcolumns = m_columns; makeImage(); // copy old image, to reduce flicker - if ( oldimage ) + if ( ! oldimage.isEmpty() ) { - //FIXME: is it possible to do this with QArray.dublicate()? - int lins = QMIN( oldlines, m_lines ); int cols = QMIN( oldcolumns, m_columns ); for ( int lin = 0; lin < lins; ++lin ) @@ -77,11 +78,12 @@ void WidgetLayer::propagateSize() (void*) &oldimage[oldcolumns*lin], cols*sizeof( Character ) ); } - //free( oldimage ); } else clearImage(); + delete oldimage; + m_resizing = true; emit imageSizeChanged( m_lines, m_columns ); m_resizing = false; @@ -90,8 +92,8 @@ void WidgetLayer::propagateSize() void WidgetLayer::makeImage() { calcGeometry(); - m_image = QArray(); - clearImage(); + m_image = QArray( m_columns * m_lines ); + clearImage(); } void WidgetLayer::clearImage() -- cgit v0.9.0.2