A gay civil rights measure passed the state Senate on Friday, a major victory for gay rights activists who have watched the measure fail in the Legislature for nearly 30 years.

The bill passed on a 25-23 vote, with a lone Republican joining majority Democrats.

Cheers erupted from the Senate's balconies, which were packed with onlookers expecting the bill to clear its perennial roadblock. Gov. Chris Gregoire, a Democrat, said she planned to sign the bill into law Tuesday.

The measure adds "sexual orientation" to a state law that bans discrimination in housing, employment and insurance. Sixteen states have passed similar laws for gays and lesbians; six of those states have passed laws for transgender people.

Sen. Bill Finkbeiner, R-Kirkland, was the lone Republican to endorse the measure, a year after it lost by just one vote in the Senate. Two Senate Democrats voted against the measure. One Republican was not present.

"We don't choose who we love. The heart chooses who we will love. And I don't believe that it is right for us to say ... that it's acceptable to discriminate against people because of that," Finkbeiner said in a speech.

Sen. Dan Swecker, R-Rochester, said the measure would "trample unrelentingly" on religious viewpoints that object to gays.

"We, the state, are telling people to accept, actually to embrace, something that goes against their religious views," he said.

The measure passed the House last week on a 60-37 vote, with six Republicans joining 54 Democrats in support.

Republicans amended the bill on the House floor to say that it would not modify or change state marriage laws.

The state Supreme Court heard arguments on a case challenging Washington's ban on gay marriage last year, and a ruling is expected in the coming weeks.

A Senate amendment this week added a caveat saying the state doesn't endorse "any specific belief, practice, behavior, or orientation."

Majority House Democrats were expected to accept the Senate's changes.