18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com> 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Widget.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Cursor.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "GraphicsContext.h" 302daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "HostWindow.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "IntRect.h" 32231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "NotImplemented.h" 332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "ScrollView.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wx/defs.h> 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wx/scrolwin.h> 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWidget::Widget(PlatformWidget widget) 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project init(widget); 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWidget::~Widget() 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4921939df44de1705786c545cd1bf519d47250322dBen Murdochvoid Widget::setFocus(bool focused) 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 5121939df44de1705786c545cd1bf519d47250322dBen Murdoch if (focused) { 5221939df44de1705786c545cd1bf519d47250322dBen Murdoch if (PlatformWidget widget = platformWidget()) 5321939df44de1705786c545cd1bf519d47250322dBen Murdoch widget->SetFocus(); 5421939df44de1705786c545cd1bf519d47250322dBen Murdoch } 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Widget::setCursor(const Cursor& cursor) 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch ScrollView* view = root(); 602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!view) 612daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch view->hostWindow()->setCursor(cursor); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Widget::show() 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 675f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (PlatformWidget widget = platformWidget()) 685f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian widget->Show(); 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Widget::hide() 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 735f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (PlatformWidget widget = platformWidget()) 745f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian widget->Hide(); 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectIntRect Widget::frameRect() const 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 795f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (PlatformWidget widget = platformWidget()) 805f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian return widget->GetRect(); 815f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_frame; 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Widget::setFrameRect(const IntRect& rect) 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 875f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (PlatformWidget widget = platformWidget()) 885f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian widget->SetSize(rect); 895f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_frame = rect; 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Widget::invalidateRect(const IntRect& r) 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 955f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (PlatformWidget widget = platformWidget()) 965f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian widget->RefreshRect(r); 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Widget::paint(GraphicsContext*,const IntRect& r) 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1015f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian invalidateRect(r); 1025f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (PlatformWidget widget = platformWidget()) 1035f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian widget->Update(); 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 106231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid Widget::setIsSelected(bool) 107231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 108231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block notImplemented(); 109231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 110231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 112